Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2016-09-06 16:01:32 +0300
committerGitHub <noreply@github.com>2016-09-06 16:01:32 +0300
commit2eb5a3cd1212e1716001124f677faf417f0b8741 (patch)
tree14fc73d138e8488e13f86373c44816ebafdc60bc
parent28a05a207d71d74bcd3f816ae56bcb0035702a43 (diff)
parent110bd5e36e888690e1442f8277f60436b97be845 (diff)
Merge pull request #1281 from nextcloud/backport-1272-theming-info-capabilities-9
[stable9] Add theming information to capabilities for the client
-rw-r--r--apps/theming/appinfo/app.php2
-rw-r--r--apps/theming/lib/capabilities.php60
-rw-r--r--apps/theming/tests/CapabilitiesTest.php92
-rw-r--r--apps/theming/tests/ServicesTest.php72
4 files changed, 226 insertions, 0 deletions
diff --git a/apps/theming/appinfo/app.php b/apps/theming/appinfo/app.php
index d22ff5d16be..1a49438d59e 100644
--- a/apps/theming/appinfo/app.php
+++ b/apps/theming/appinfo/app.php
@@ -38,3 +38,5 @@ $linkToCSS = \OC::$server->getURLGenerator()->linkToRoute(
]
);
+$app = new \OCP\AppFramework\App('theming');
+$app->getContainer()->registerCapability('OCA\Theming\Capabilities');
diff --git a/apps/theming/lib/capabilities.php b/apps/theming/lib/capabilities.php
new file mode 100644
index 00000000000..5c71d465fe0
--- /dev/null
+++ b/apps/theming/lib/capabilities.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ *
+ * @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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Theming;
+
+use OCP\Capabilities\ICapability;
+
+/**
+ * Class Capabilities
+ *
+ * @package OCA\Theming
+ */
+class Capabilities implements ICapability {
+
+ /** @var Template */
+ protected $theming;
+
+ /**
+ * @param Template $theming
+ */
+ public function __construct(Template $theming) {
+ $this->theming = $theming;
+ }
+
+ /**
+ * Return this classes capabilities
+ *
+ * @return array
+ */
+ public function getCapabilities() {
+ return [
+ 'theming' => [
+ 'name' => $this->theming->getName(),
+ 'url' => $this->theming->getBaseUrl(),
+ 'slogan' => $this->theming->getSlogan(),
+ 'color' => $this->theming->getMailHeaderColor(),
+ ],
+ ];
+ }
+}
diff --git a/apps/theming/tests/CapabilitiesTest.php b/apps/theming/tests/CapabilitiesTest.php
new file mode 100644
index 00000000000..deb1c4e28d4
--- /dev/null
+++ b/apps/theming/tests/CapabilitiesTest.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
+ *
+ * @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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Theming\Tests;
+
+use OCA\Theming\Capabilities;
+use OCA\Theming\Template;
+use Test\TestCase;
+
+/**
+ * Class CapabilitiesTest
+ *
+ * @group DB
+ * @package OCA\Theming\Tests
+ */
+class CapabilitiesTest extends TestCase {
+ /** @var Template|\PHPUnit_Framework_MockObject_MockObject */
+ protected $theming;
+
+ /** @var Capabilities */
+ protected $capabilities;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->theming = $this->getMockBuilder('OCA\Theming\Template')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->capabilities = new Capabilities($this->theming);
+ }
+
+ public function dataGetCapabilities() {
+ return [
+ ['name', 'url', 'slogan', 'color', [
+ 'name' => 'name',
+ 'url' => 'url',
+ 'slogan' => 'slogan',
+ 'color' => 'color',
+ ]],
+ ['name1', 'url2', 'slogan3', 'color4', [
+ 'name' => 'name1',
+ 'url' => 'url2',
+ 'slogan' => 'slogan3',
+ 'color' => 'color4',
+ ]],
+ ];
+ }
+
+ /**
+ * @dataProvider dataGetCapabilities
+ * @param string $name
+ * @param string $url
+ * @param string $slogan
+ * @param string $color
+ * @param string[] $expected
+ */
+ public function testGetCapabilities($name, $url, $slogan, $color, 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->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 00000000000..28656d9d83c
--- /dev/null
+++ b/apps/theming/tests/ServicesTest.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
+ *
+ * @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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Theming\Tests;
+
+use OCP\AppFramework\App;
+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 [
+ ['OCP\IL10N'],
+
+ // lib/
+ ['OCA\Theming\Capabilities'],
+ ['OCA\Theming\Capabilities', 'OCP\Capabilities\ICapability'],
+ ['OCA\Theming\Template'],
+ ['OCA\Theming\Template', 'OC_Defaults'],
+
+ // controller/
+ ['OCA\Theming\Controller\ThemingController'],
+ ];
+ }
+
+ /**
+ * @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);
+ }
+}