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
path: root/tests
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-04-26 23:42:55 +0300
committerGitHub <noreply@github.com>2017-04-26 23:42:55 +0300
commit58fe27f09241cf9c27456259a2168aa326cb8d16 (patch)
tree5ab886afef45a679aa79920b348a0d38dd0c42fc /tests
parent313c971bd5dac968087c4990571617c9209d57c9 (diff)
parent18f46bd47f1402663f83861e724e7108655ed29c (diff)
Merge pull request #4461 from danxuliu/fix-closing-details-view-when-viewing-file-in-folder
Fix details view not closed when viewing a file in its folder
Diffstat (limited to 'tests')
-rw-r--r--tests/acceptance/features/app-files.feature23
-rw-r--r--tests/acceptance/features/bootstrap/FilesAppContext.php190
2 files changed, 213 insertions, 0 deletions
diff --git a/tests/acceptance/features/app-files.feature b/tests/acceptance/features/app-files.feature
index 7adc618e02e..6779b37e145 100644
--- a/tests/acceptance/features/app-files.feature
+++ b/tests/acceptance/features/app-files.feature
@@ -1,5 +1,28 @@
Feature: app-files
+ Scenario: viewing a favorite file in its folder closes the details view
+ Given I am logged in
+ And I mark "welcome.txt" as favorite
+ And I see that "welcome.txt" is marked as favorite
+ And I open the "Favorites" section
+ And I open the details view for "welcome.txt"
+ And I see that the details view for "Favorites" section is open
+ When I view "welcome.txt" in folder
+ Then I see that the current section is "All files"
+ And I see that the details view is closed
+
+ Scenario: viewing a favorite file in its folder does not prevent opening the details view in "All files" section
+ Given I am logged in
+ And I mark "welcome.txt" as favorite
+ And I see that "welcome.txt" is marked as favorite
+ And I open the "Favorites" section
+ And I open the details view for "welcome.txt"
+ And I see that the details view for "Favorites" section is open
+ And I view "welcome.txt" in folder
+ And I see that the current section is "All files"
+ When I open the details view for "welcome.txt"
+ Then I see that the details view for "All files" section is open
+
Scenario: set a password to a shared link
Given I am logged in
And I share the link for "welcome.txt"
diff --git a/tests/acceptance/features/bootstrap/FilesAppContext.php b/tests/acceptance/features/bootstrap/FilesAppContext.php
index 7e7f592a44e..bc926fbe52f 100644
--- a/tests/acceptance/features/bootstrap/FilesAppContext.php
+++ b/tests/acceptance/features/bootstrap/FilesAppContext.php
@@ -28,6 +28,55 @@ class FilesAppContext implements Context, ActorAwareInterface {
use ActorAware;
/**
+ * @return array
+ */
+ public static function sections() {
+ return [ "All files" => "files",
+ "Recent" => "recent",
+ "Favorites" => "favorites",
+ "Shared with you" => "sharingin",
+ "Shared with others" => "sharingout",
+ "Shared by link" => "sharinglinks",
+ "Tags" => "systemtagsfilter",
+ "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
+ */
+ public static function mainViewForSection($section) {
+ $sectionId = self::sections()[$section];
+
+ return Locator::forThe()->id("app-content-$sectionId")->
+ describedAs("Main view for section $section in Files app");
+ }
+
+ /**
* @return Locator
*/
public static function currentSectionMainView() {
@@ -38,6 +87,15 @@ class FilesAppContext implements Context, ActorAwareInterface {
/**
* @return Locator
*/
+ public static function detailsViewForSection($section) {
+ return Locator::forThe()->xpath("/preceding-sibling::*[position() = 1 and @id = 'app-sidebar']")->
+ descendantOf(self::mainViewForSection($section))->
+ describedAs("Details view for section $section in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
public static function currentSectionDetailsView() {
return Locator::forThe()->xpath("/preceding-sibling::*[position() = 1 and @id = 'app-sidebar']")->
descendantOf(self::currentSectionMainView())->
@@ -96,12 +154,88 @@ class FilesAppContext implements Context, ActorAwareInterface {
/**
* @return Locator
*/
+ public static function favoriteActionForFile($fileName) {
+ return Locator::forThe()->css(".action-favorite")->descendantOf(self::rowForFile($fileName))->
+ describedAs("Favorite action for file $fileName in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function favoritedStateIconForFile($fileName) {
+ return Locator::forThe()->content("Favorited")->descendantOf(self::favoriteActionForFile($fileName))->
+ describedAs("Favorited state icon for file $fileName in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function mainLinkForFile($fileName) {
+ return Locator::forThe()->css(".name")->descendantOf(self::rowForFile($fileName))->
+ describedAs("Main link for file $fileName in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
public static function shareActionForFile($fileName) {
return Locator::forThe()->css(".action-share")->descendantOf(self::rowForFile($fileName))->
describedAs("Share action for file $fileName in Files app");
}
/**
+ * @return Locator
+ */
+ public static function fileActionsMenuButtonForFile($fileName) {
+ return Locator::forThe()->css(".action-menu")->descendantOf(self::rowForFile($fileName))->
+ describedAs("File actions menu button for file $fileName in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function fileActionsMenu() {
+ return Locator::forThe()->css(".fileActionsMenu")->
+ describedAs("File actions menu in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function viewFileInFolderMenuItem() {
+ return self::fileActionsMenuItemFor("View in folder");
+ }
+
+ /**
+ * @return Locator
+ */
+ private static function fileActionsMenuItemFor($itemText) {
+ return Locator::forThe()->content($itemText)->descendantOf(self::fileActionsMenu())->
+ 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
+ */
+ public function iOpenTheDetailsViewFor($fileName) {
+ $this->actor->find(self::mainLinkForFile($fileName), 10)->click();
+ }
+
+ /**
+ * @Given I mark :fileName as favorite
+ */
+ public function iMarkAsFavorite($fileName) {
+ $this->actor->find(self::favoriteActionForFile($fileName), 10)->click();
+ }
+
+ /**
* @Given I share the link for :fileName
*/
public function iShareTheLinkFor($fileName) {
@@ -118,6 +252,15 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
+ * @When I view :fileName in folder
+ */
+ public function iViewInFolder($fileName) {
+ $this->actor->find(self::fileActionsMenuButtonForFile($fileName), 10)->click();
+
+ $this->actor->find(self::viewFileInFolderMenuItem(), 2)->click();
+ }
+
+ /**
* @When I protect the shared link with the password :password
*/
public function iProtectTheSharedLinkWithThePassword($password) {
@@ -136,6 +279,53 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
+ * @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
+ */
+ public function iSeeThatTheDetailsViewForSectionIsOpen($section) {
+ PHPUnit_Framework_Assert::assertTrue(
+ $this->actor->find(self::detailsViewForSection($section), 10)->isVisible());
+
+ $otherSections = self::sections();
+ unset($otherSections[$section]);
+
+ $this->assertDetailsViewForSectionsAreClosed($otherSections);
+ }
+
+ /**
+ * @Then I see that the details view is closed
+ */
+ public function iSeeThatTheDetailsViewIsClosed() {
+ PHPUnit_Framework_Assert::assertNotNull($this->actor->find(self::currentSectionMainView(), 10));
+
+ $this->assertDetailsViewForSectionsAreClosed(self::sections());
+ }
+
+ private function assertDetailsViewForSectionsAreClosed($sections) {
+ foreach ($sections as $section => $id) {
+ try {
+ PHPUnit_Framework_Assert::assertFalse(
+ $this->actor->find(self::detailsViewForSection($section))->isVisible(),
+ "Details view for section $section is open but it should be closed");
+ } catch (NoSuchElementException $exception) {
+ }
+ }
+ }
+
+ /**
+ * @Then I see that :fileName is marked as favorite
+ */
+ public function iSeeThatIsMarkedAsFavorite($fileName) {
+ PHPUnit_Framework_Assert::assertNotNull($this->actor->find(self::favoritedStateIconForFile($fileName), 10));
+ }
+
+ /**
* @Then I see that the working icon for password protect is shown
*/
public function iSeeThatTheWorkingIconForPasswordProtectIsShown() {