From 4cb4067aac6a9867b02ae2bc91f22ad638443d72 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 6 Sep 2016 08:55:22 +0200 Subject: [PATCH] Add image URLs and tests --- apps/theming/lib/capabilities.php | 11 ++- apps/theming/tests/CapabilitiesTest.php | 126 ++++++++++++++++++++++++ apps/theming/tests/ServicesTest.php | 89 +++++++++++++++++ 3 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 apps/theming/tests/CapabilitiesTest.php create mode 100644 apps/theming/tests/ServicesTest.php diff --git a/apps/theming/lib/capabilities.php b/apps/theming/lib/capabilities.php index 45a48e3c2c..b483cc80ae 100644 --- a/apps/theming/lib/capabilities.php +++ b/apps/theming/lib/capabilities.php @@ -24,6 +24,7 @@ namespace OCA\Theming; use OCP\Capabilities\ICapability; +use OCP\IURLGenerator; /** * Class Capabilities @@ -35,11 +36,17 @@ class Capabilities implements ICapability { /** @var ThemingDefaults */ protected $theming; + + /** @var IURLGenerator */ + protected $url; + /** * @param ThemingDefaults $theming + * @param IURLGenerator $url */ - public function __construct(ThemingDefaults $theming) { + public function __construct(ThemingDefaults $theming, IURLGenerator $url) { $this->theming = $theming; + $this->url = $url; } /** @@ -54,6 +61,8 @@ class Capabilities implements ICapability { 'url' => $this->theming->getBaseUrl(), 'slogan' => $this->theming->getSlogan(), 'color' => $this->theming->getMailHeaderColor(), + 'logo' => $this->url->getAbsoluteURL($this->theming->getLogo()), + 'background' => $this->url->getAbsoluteURL($this->theming->getBackground()), ], ]; } diff --git a/apps/theming/tests/CapabilitiesTest.php b/apps/theming/tests/CapabilitiesTest.php new file mode 100644 index 0000000000..218fca505e --- /dev/null +++ b/apps/theming/tests/CapabilitiesTest.php @@ -0,0 +1,126 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Theming\Tests; + +use OCA\Theming\Capabilities; +use OCA\Theming\Controller\ThemingController; +use OCA\Theming\Settings\Admin; +use OCA\Theming\Settings\Section; +use OCA\Theming\ThemingDefaults; +use OCA\Theming\Util; +use OCP\AppFramework\App; +use OCP\Capabilities\ICapability; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\Settings\ISection; +use OCP\Settings\ISettings; +use Test\TestCase; + +/** + * Class CapabilitiesTest + * + * @group DB + * @package OCA\Theming\Tests + */ +class CapabilitiesTest extends TestCase { + /** @var ThemingDefaults|\PHPUnit_Framework_MockObject_MockObject */ + protected $theming; + + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + protected $url; + + /** @var Capabilities */ + protected $capabilities; + + protected function setUp() { + parent::setUp(); + + $this->theming = $this->getMockBuilder(ThemingDefaults::class) + ->disableOriginalConstructor() + ->getMock(); + $this->url = $this->getMockBuilder(IURLGenerator::class) + ->getMock(); + + $this->capabilities = new Capabilities($this->theming, $this->url); + } + + public function dataGetCapabilities() { + return [ + ['name', 'url', 'slogan', 'color', 'logo', 'background', 'http://absolute/', [ + 'name' => 'name', + 'url' => 'url', + 'slogan' => 'slogan', + 'color' => 'color', + 'logo' => 'http://absolute/logo', + 'background' => 'http://absolute/background', + ]], + ['name1', 'url2', 'slogan3', 'color4', 'logo5', 'background6', 'http://localhost/', [ + 'name' => 'name1', + 'url' => 'url2', + 'slogan' => 'slogan3', + 'color' => 'color4', + 'logo' => 'http://localhost/logo5', + 'background' => 'http://localhost/background6', + ]], + ]; + } + + /** + * @dataProvider dataGetCapabilities + * @param string $name + * @param string $url + * @param string $slogan + * @param string $color + * @param string $logo + * @param string $background + * @param string $baseUrl + * @param string[] $expected + */ + public function testGetCapabilities($name, $url, $slogan, $color, $logo, $background, $baseUrl, array $expected) { + $this->theming->expects($this->once()) + ->method('getName') + ->willReturn($name); + $this->theming->expects($this->once()) + ->method('getBaseUrl') + ->willReturn($url); + $this->theming->expects($this->once()) + ->method('getSlogan') + ->willReturn($slogan); + $this->theming->expects($this->once()) + ->method('getMailHeaderColor') + ->willReturn($color); + $this->theming->expects($this->once()) + ->method('getLogo') + ->willReturn($logo); + $this->theming->expects($this->once()) + ->method('getBackground') + ->willReturn($background); + + $this->url->expects($this->exactly(2)) + ->method('getAbsoluteURL') + ->willReturnCallback(function($url) use($baseUrl) { + return $baseUrl . $url; + }); + + $this->assertEquals(['theming' => $expected], $this->capabilities->getCapabilities()); + } +} diff --git a/apps/theming/tests/ServicesTest.php b/apps/theming/tests/ServicesTest.php new file mode 100644 index 0000000000..1e98e67841 --- /dev/null +++ b/apps/theming/tests/ServicesTest.php @@ -0,0 +1,89 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Theming\Tests; + +use OCA\Theming\Capabilities; +use OCA\Theming\Controller\ThemingController; +use OCA\Theming\Settings\Admin; +use OCA\Theming\Settings\Section; +use OCA\Theming\ThemingDefaults; +use OCA\Theming\Util; +use OCP\AppFramework\App; +use OCP\Capabilities\ICapability; +use OCP\IL10N; +use OCP\Settings\ISection; +use OCP\Settings\ISettings; +use Test\TestCase; + +/** + * Class ServicesTest + * + * @group DB + * @package OCA\Theming\Tests + */ +class ServicesTest extends TestCase { + /** @var \OCA\Activity\AppInfo\Application */ + protected $app; + + /** @var \OCP\AppFramework\IAppContainer */ + protected $container; + + protected function setUp() { + parent::setUp(); + $this->app = new App('theming'); + $this->container = $this->app->getContainer(); + } + + public function queryData() { + return [ + [IL10N::class], + + // lib/ + [Capabilities::class], + [Capabilities::class, ICapability::class], + [ThemingDefaults::class], + [ThemingDefaults::class, \OC_Defaults::class], + [Util::class], + + // Controller + [ThemingController::class, ThemingController::class], + + // Settings + [Admin::class], + [Admin::class, ISettings::class], + [Section::class], + [Section::class, ISection::class], + ]; + } + + /** + * @dataProvider queryData + * @param string $service + * @param string $expected + */ + public function testContainerQuery($service, $expected = null) { + if ($expected === null) { + $expected = $service; + } + $this->assertTrue($this->container->query($service) instanceof $expected); + } +}