summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2017-12-19 06:55:47 +0100
committerDaniel Calviño Sánchez <danxuliu@gmail.com>2017-12-19 06:55:47 +0100
commit2ec181e084d327dbbbc7ebc767ed6024671759f6 (patch)
treeadef29ed8233090ba788f1f3d368ce012996b806 /tests
parentb01d20c0d7b76dc04fcbfa027c51b14d740dc67e (diff)
downloadnextcloud-server-2ec181e084d327dbbbc7ebc767ed6024671759f6.tar.gz
nextcloud-server-2ec181e084d327dbbbc7ebc767ed6024671759f6.zip
Add acceptance test for opening the menu in a public shared link
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/acceptance/features/app-files.feature11
-rw-r--r--tests/acceptance/features/bootstrap/FilesSharingAppContext.php84
2 files changed, 95 insertions, 0 deletions
diff --git a/tests/acceptance/features/app-files.feature b/tests/acceptance/features/app-files.feature
index ac2d05fac2c..2cb43611b9a 100644
--- a/tests/acceptance/features/app-files.feature
+++ b/tests/acceptance/features/app-files.feature
@@ -23,6 +23,17 @@ Feature: app-files
When I open the details view for "welcome.txt"
Then I see that the details view for "All files" section is open
+ Scenario: open the menu in a public shared link
+ Given I act as John
+ And I am logged in
+ And I share the link for "welcome.txt"
+ And I write down the shared link
+ When I act as Jane
+ And I visit the shared link I wrote down
+ And I see that the current page is the shared link I wrote down
+ And I open the Share menu
+ Then I see that the Share menu is shown
+
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/FilesSharingAppContext.php b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php
index 88c1180c753..f3386b46db9 100644
--- a/tests/acceptance/features/bootstrap/FilesSharingAppContext.php
+++ b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php
@@ -54,6 +54,49 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
/**
* @return Locator
*/
+ public static function shareMenuButton() {
+ return Locator::forThe()->id("share-menutoggle")->
+ describedAs("Share menu button in Shared file page");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function shareMenu() {
+ return Locator::forThe()->id("share-menu")->
+ describedAs("Share menu in Shared file page");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function downloadItemInShareMenu() {
+ return Locator::forThe()->id("download")->
+ descendantOf(self::shareMenu())->
+ describedAs("Download item in Share menu in Shared file page");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function directLinkItemInShareMenu() {
+ return Locator::forThe()->id("directLink-container")->
+ descendantOf(self::shareMenu())->
+ describedAs("Direct link item in Share menu in Shared file page");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function saveItemInShareMenu() {
+ return Locator::forThe()->id("save")->
+ descendantOf(self::shareMenu())->
+ describedAs("Save item in Share menu in Shared file page");
+ }
+
+ /**
+ * @return Locator
+ */
public static function textPreview() {
return Locator::forThe()->css(".text-preview")->
describedAs("Text preview in Shared file page");
@@ -75,6 +118,13 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
}
/**
+ * @When I open the Share menu
+ */
+ public function iOpenTheShareMenu() {
+ $this->actor->find(self::shareMenuButton(), 10)->click();
+ }
+
+ /**
* @Then I see that the current page is the Authenticate page for the shared link I wrote down
*/
public function iSeeThatTheCurrentPageIsTheAuthenticatePageForTheSharedLinkIWroteDown() {
@@ -101,10 +151,44 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
}
/**
+ * @Then I see that the Share menu is shown
+ */
+ public function iSeeThatTheShareMenuIsShown() {
+ // Unlike other menus, the Share menu is always present in the DOM, so
+ // the element could be found when it was no made visible yet due to the
+ // command not having been processed by the browser.
+ if (!$this->waitForElementToBeEventuallyShown(
+ self::shareMenu(), $timeout = 10 * $this->actor->getFindTimeoutMultiplier())) {
+ PHPUnit_Framework_Assert::fail("The Share menu is not visible yet after $timeout seconds");
+ }
+
+ PHPUnit_Framework_Assert::assertTrue(
+ $this->actor->find(self::downloadItemInShareMenu())->isVisible());
+ PHPUnit_Framework_Assert::assertTrue(
+ $this->actor->find(self::directLinkItemInShareMenu())->isVisible());
+ PHPUnit_Framework_Assert::assertTrue(
+ $this->actor->find(self::saveItemInShareMenu())->isVisible());
+ }
+
+ /**
* @Then I see that the shared file preview shows the text :text
*/
public function iSeeThatTheSharedFilePreviewShowsTheText($text) {
PHPUnit_Framework_Assert::assertContains($text, $this->actor->find(self::textPreview(), 10)->getText());
}
+ private function waitForElementToBeEventuallyShown($elementLocator, $timeout = 10, $timeoutStep = 1) {
+ $actor = $this->actor;
+
+ $elementShownCallback = function() use ($actor, $elementLocator) {
+ try {
+ return $actor->find($elementLocator)->isVisible();
+ } catch (NoSuchElementException $exception) {
+ return false;
+ }
+ };
+
+ return Utils::waitFor($elementShownCallback, $timeout, $timeoutStep);
+ }
+
}