summaryrefslogtreecommitdiffstats
path: root/tests/acceptance/features/bootstrap/FilesAppContext.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/acceptance/features/bootstrap/FilesAppContext.php')
-rw-r--r--tests/acceptance/features/bootstrap/FilesAppContext.php190
1 files changed, 20 insertions, 170 deletions
diff --git a/tests/acceptance/features/bootstrap/FilesAppContext.php b/tests/acceptance/features/bootstrap/FilesAppContext.php
index 87586784941..880303fe1d6 100644
--- a/tests/acceptance/features/bootstrap/FilesAppContext.php
+++ b/tests/acceptance/features/bootstrap/FilesAppContext.php
@@ -45,6 +45,23 @@ class FilesAppContext implements Context, ActorAwareInterface {
/**
* @return Locator
*/
+ private static function appMenu() {
+ return Locator::forThe()->id("appmenu")->
+ describedAs("App menu in header");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function filesItemInAppMenu() {
+ return Locator::forThe()->xpath("/li[@data-id = 'files']")->
+ descendantOf(self::appMenu())->
+ describedAs("Files item in app menu in header");
+ }
+
+ /**
+ * @return Locator
+ */
public static function mainViewForSection($section) {
$sectionId = self::sections()[$section];
@@ -212,91 +229,10 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
- * @return Locator
- */
- public static function shareLinkRow() {
- return Locator::forThe()->id("shareLink")->
- descendantOf(self::detailsView())->
- describedAs("Share link row in the details view in Files app");
- }
-
- /**
- * @return Locator
- */
- public static function shareLinkCheckbox() {
- // forThe()->checkbox("Enable") can not be used here; that would return
- // the checkbox itself, but the element that the user interacts with is
- // the label.
- return Locator::forThe()->xpath("//label[normalize-space() = 'Enable']")->
- descendantOf(self::shareLinkRow())->
- describedAs("Share link checkbox in the details view in Files app");
- }
-
- /**
- * @return Locator
- */
- public static function shareLinkMenuButton() {
- return Locator::forThe()->css(".share-menu > .icon")->
- descendantOf(self::shareLinkRow())->
- describedAs("Share link menu button in the details view in Files app");
- }
-
- /**
- * @return Locator
- */
- public static function shareLinkMenu() {
- return Locator::forThe()->css(".share-menu > .menu")->
- descendantOf(self::shareLinkRow())->
- describedAs("Share link menu in the details view in Files app");
- }
-
- /**
- * @return Locator
- */
- public static function copyUrlMenuItem() {
- return Locator::forThe()->xpath("//a[normalize-space() = 'Copy URL']")->
- descendantOf(self::shareLinkMenu())->
- describedAs("Copy URL menu item in the share link menu in the details view in Files app");
- }
-
- /**
- * @return Locator
- */
- public static function allowUploadAndEditingRadioButton() {
- // forThe()->radio("Allow upload and editing") can not be used here;
- // that would return the radio button itself, but the element that the
- // user interacts with is the label.
- return Locator::forThe()->xpath("//label[normalize-space() = 'Allow upload and editing']")->
- descendantOf(self::shareLinkMenu())->
- describedAs("Allow upload and editing radio button in the details view in Files app");
- }
-
- /**
- * @return Locator
+ * @Given I open the Files app
*/
- public static function passwordProtectCheckbox() {
- // forThe()->checkbox("Password protect") can not be used here; that
- // would return the checkbox itself, but the element that the user
- // interacts with is the label.
- return Locator::forThe()->xpath("//label[normalize-space() = 'Password protect']")->
- descendantOf(self::shareLinkMenu())->
- describedAs("Password protect checkbox in the details view in Files app");
- }
-
- /**
- * @return Locator
- */
- public static function passwordProtectField() {
- return Locator::forThe()->css(".linkPassText")->descendantOf(self::shareLinkMenu())->
- describedAs("Password protect field in the details view in Files app");
- }
-
- /**
- * @return Locator
- */
- public static function passwordProtectWorkingIcon() {
- return Locator::forThe()->css(".linkPassMenu .icon-loading-small")->descendantOf(self::shareLinkMenu())->
- describedAs("Password protect working icon in the details view in Files app");
+ public function iOpenTheFilesApp() {
+ $this->actor->find(self::filesItemInAppMenu(), 10)->click();
}
/**
@@ -321,29 +257,6 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
- * @Given I share the link for :fileName
- */
- public function iShareTheLinkFor($fileName) {
- $this->actor->find(FileListContext::shareActionForFile(self::currentSectionMainView(), $fileName), 10)->click();
-
- $this->actor->find(self::shareLinkCheckbox(), 5)->click();
- }
-
- /**
- * @Given I write down the shared link
- */
- public function iWriteDownTheSharedLink() {
- $this->showShareLinkMenuIfNeeded();
-
- $this->actor->find(self::copyUrlMenuItem(), 2)->click();
-
- // Clicking on the menu item copies the link to the clipboard, but it is
- // not possible to access that value from the acceptance tests. Due to
- // this the value of the attribute that holds the URL is used instead.
- $this->actor->getSharedNotebook()["shared link"] = $this->actor->find(self::copyUrlMenuItem(), 2)->getWrappedElement()->getAttribute("data-clipboard-text");
- }
-
- /**
* @When I mark the file as favorite in the details view
*/
public function iMarkTheFileAsFavoriteInTheDetailsView() {
@@ -380,26 +293,6 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
- * @When I set the shared link as editable
- */
- public function iSetTheSharedLinkAsEditable() {
- $this->showShareLinkMenuIfNeeded();
-
- $this->actor->find(self::allowUploadAndEditingRadioButton(), 2)->click();
- }
-
- /**
- * @When I protect the shared link with the password :password
- */
- public function iProtectTheSharedLinkWithThePassword($password) {
- $this->showShareLinkMenuIfNeeded();
-
- $this->actor->find(self::passwordProtectCheckbox(), 2)->click();
-
- $this->actor->find(self::passwordProtectField(), 2)->setValue($password . "\r");
- }
-
- /**
* @Then I see that the current page is the Files app
*/
public function iSeeThatTheCurrentPageIsTheFilesApp() {
@@ -520,47 +413,4 @@ class FilesAppContext implements Context, ActorAwareInterface {
PHPUnit_Framework_Assert::fail("The $tabName tab in the details view has not been loaded after $timeout seconds");
}
}
-
- /**
- * @Then I see that the working icon for password protect is shown
- */
- public function iSeeThatTheWorkingIconForPasswordProtectIsShown() {
- PHPUnit_Framework_Assert::assertNotNull($this->actor->find(self::passwordProtectWorkingIcon(), 10));
- }
-
- /**
- * @Then I see that the working icon for password protect is eventually not shown
- */
- public function iSeeThatTheWorkingIconForPasswordProtectIsEventuallyNotShown() {
- if (!WaitFor::elementToBeEventuallyNotShown(
- $this->actor,
- self::passwordProtectWorkingIcon(),
- $timeout = 10 * $this->actor->getFindTimeoutMultiplier())) {
- PHPUnit_Framework_Assert::fail("The working icon for password protect is still shown after $timeout seconds");
- }
- }
-
- /**
- * @Given I share the link for :fileName protected by the password :password
- */
- public function iShareTheLinkForProtectedByThePassword($fileName, $password) {
- $this->iShareTheLinkFor($fileName);
- $this->iProtectTheSharedLinkWithThePassword($password);
- $this->iSeeThatTheWorkingIconForPasswordProtectIsShown();
- $this->iSeeThatTheWorkingIconForPasswordProtectIsEventuallyNotShown();
- }
-
- private function showShareLinkMenuIfNeeded() {
- // In some cases the share menu is hidden after clicking on an action of
- // the menu. Therefore, if the menu is visible, wait a little just in
- // case it is in the process of being hidden due to a previous action,
- // in which case it is shown again.
- if (WaitFor::elementToBeEventuallyNotShown(
- $this->actor,
- self::shareLinkMenu(),
- $timeout = 2 * $this->actor->getFindTimeoutMultiplier())) {
- $this->actor->find(self::shareLinkMenuButton(), 10)->click();
- }
- }
-
}