]> source.dussan.org Git - nextcloud-server.git/commitdiff
Extract app navigation elements to its own context
authorDaniel Calviño Sánchez <danxuliu@gmail.com>
Sat, 8 Jul 2017 13:36:01 +0000 (15:36 +0200)
committerDaniel Calviño Sánchez <danxuliu@gmail.com>
Tue, 11 Jul 2017 09:54:57 +0000 (11:54 +0200)
The app navigation is not exclusive to the Files app but a generic
component used by other apps too, so its locators and steps should be in
its own context.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
tests/acceptance/config/behat.yml
tests/acceptance/features/bootstrap/AppNavigationContext.php [new file with mode: 0644]
tests/acceptance/features/bootstrap/FilesAppContext.php

index 15310e6883f7df3b58373a4c15a2a2b0b16f9356..865100837612d0edfda39175204d3aaaefa87f20 100644 (file)
@@ -9,6 +9,7 @@ default:
         - ActorContext
         - NextcloudTestServerContext
 
+        - AppNavigationContext
         - FeatureContext
         - FilesAppContext
         - FilesSharingAppContext
diff --git a/tests/acceptance/features/bootstrap/AppNavigationContext.php b/tests/acceptance/features/bootstrap/AppNavigationContext.php
new file mode 100644 (file)
index 0000000..9ef71a0
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ *
+ * @copyright Copyright (c) 2017, Daniel Calviño Sánchez (danxuliu@gmail.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/>.
+ *
+ */
+
+use Behat\Behat\Context\Context;
+
+class AppNavigationContext implements Context, ActorAwareInterface {
+
+       use ActorAware;
+
+       /**
+        * @return Locator
+        */
+       public static function appNavigation() {
+               return Locator::forThe()->id("app-navigation")->
+                               describedAs("App navigation");
+       }
+
+       /**
+        * @return Locator
+        */
+       public static function appNavigationSectionItemFor($sectionText) {
+               return Locator::forThe()->xpath("//li[normalize-space() = '$sectionText']")->
+                               descendantOf(self::appNavigation())->
+                               describedAs($sectionText . " section item in App Navigation");
+       }
+
+       /**
+        * @return Locator
+        */
+       public static function appNavigationCurrentSectionItem() {
+               return Locator::forThe()->css(".active")->descendantOf(self::appNavigation())->
+                               describedAs("Current section item in App Navigation");
+       }
+
+       /**
+        * @Given I open the :section section
+        */
+       public function iOpenTheSection($section) {
+               $this->actor->find(self::appNavigationSectionItemFor($section), 10)->click();
+       }
+
+       /**
+        * @Then I see that the current section is :section
+        */
+       public function iSeeThatTheCurrentSectionIs($section) {
+               PHPUnit_Framework_Assert::assertEquals($this->actor->find(self::appNavigationCurrentSectionItem(), 10)->getText(), $section);
+       }
+
+}
index 205c852078bb9ecf72b5ffdaad0526ed1ae8f389..b9ccb7316ab3163805be9fb6f106a4a4a359fa0e 100644 (file)
@@ -41,31 +41,6 @@ class FilesAppContext implements Context, ActorAwareInterface {
                                 "Deleted files" => "trashbin" ];
        }
 
-       /**
-        * @return Locator
-        */
-       public static function appNavigation() {
-               return Locator::forThe()->id("app-navigation")->
-                               describedAs("App navigation");
-       }
-
-       /**
-        * @return Locator
-        */
-       public static function appNavigationSectionItemFor($sectionText) {
-               return Locator::forThe()->xpath("//li[normalize-space() = '$sectionText']")->
-                               descendantOf(self::appNavigation())->
-                               describedAs($sectionText . " section item in App Navigation");
-       }
-
-       /**
-        * @return Locator
-        */
-       public static function appNavigationCurrentSectionItem() {
-               return Locator::forThe()->css(".active")->descendantOf(self::appNavigation())->
-                               describedAs("Current section item in App Navigation");
-       }
-
        /**
         * @return Locator
         */
@@ -293,13 +268,6 @@ class FilesAppContext implements Context, ActorAwareInterface {
                                describedAs($itemText . " item in file actions menu in Files app");
        }
 
-       /**
-        * @Given I open the :section section
-        */
-       public function iOpenTheSection($section) {
-               $this->actor->find(self::appNavigationSectionItemFor($section), 10)->click();
-       }
-
        /**
         * @Given I open the details view for :fileName
         */
@@ -373,13 +341,6 @@ class FilesAppContext implements Context, ActorAwareInterface {
                                $this->actor->getSession()->getCurrentUrl());
        }
 
-       /**
-        * @Then I see that the current section is :section
-        */
-       public function iSeeThatTheCurrentSectionIs($section) {
-               PHPUnit_Framework_Assert::assertEquals($this->actor->find(self::appNavigationCurrentSectionItem(), 10)->getText(), $section);
-       }
-
        /**
         * @Then I see that the details view for :section section is open
         */