# download starts no page redirection
And I see that the current page is the Authenticate page for the direct download shared link I wrote down
+ Scenario: share a file with another user
+ Given I act as John
+ And I am logged in as the admin
+ And I act as Jane
+ And I am logged in
+ And I act as John
+ And I rename "welcome.txt" to "farewell.txt"
+ And I see that the file list contains a file named "farewell.txt"
+ When I share "farewell.txt" with "user0"
+ And I see that the file is shared with "user0"
+ And I act as Jane
+ # The Files app is open again to reload the file list
+ And I open the Files app
+ Then I see that the file list contains a file named "farewell.txt"
+ And I open the details view for "farewell.txt"
+ And I see that the details view is open
+ And I open the "Sharing" tab in the details view
+ And I see that the "Sharing" tab in the details view is eventually loaded
+ And I see that the file is shared with me by "admin"
+
+ Scenario: share a file with another user who already has a file with that name
+ Given I act as John
+ And I am logged in as the admin
+ And I act as Jane
+ And I am logged in
+ And I act as John
+ When I share "welcome.txt" with "user0"
+ And I see that the file is shared with "user0"
+ And I act as Jane
+ # The Files app is open again to reload the file list
+ And I open the Files app
+ Then I see that the file list contains a file named "welcome (2).txt"
+ And I open the details view for "welcome (2).txt"
+ And I see that the details view is open
+ And I open the "Sharing" tab in the details view
+ And I see that the "Sharing" tab in the details view is eventually loaded
+ And I see that the file is shared with me by "admin"
+
+ Scenario: share a skeleton file with another user before first login
+ # If a file is shared with a user before her first login the skeleton would
+ # not have been created, so if the shared file has the same name as one from
+ # the skeleton the shared file will take its place and the skeleton file
+ # will not be added.
+ Given I act as John
+ And I am logged in as the admin
+ When I share "welcome.txt" with "user0"
+ And I see that the file is shared with "user0"
+ And I act as Jane
+ And I am logged in
+ Then I see that the file list contains a file named "welcome.txt"
+ And I open the details view for "welcome.txt"
+ And I see that the details view is open
+ And I open the "Sharing" tab in the details view
+ And I see that the "Sharing" tab in the details view is eventually loaded
+ And I see that the file is shared with me by "admin"
+
Scenario: marking a file as favorite causes the file list to be sorted again
Given I am logged in
And I create a new folder named "A name alphabetically lower than welcome.txt"
"Deleted files" => "trashbin" ];
}
+ /**
+ * @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
*/
describedAs("Loading icon for tab named $tabName in details view in Files app");
}
+ /**
+ * @return Locator
+ */
+ public static function sharedByLabel() {
+ return Locator::forThe()->css(".reshare")->
+ descendantOf(self::detailsView())->
+ describedAs("Shared by label in the details view in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function shareWithInput() {
+ return Locator::forThe()->css(".shareWithField")->
+ descendantOf(self::detailsView())->
+ describedAs("Share with input in the details view in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function shareeList() {
+ return Locator::forThe()->css(".shareeListView")->
+ descendantOf(self::detailsView())->
+ describedAs("Sharee list in the details view in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function sharedWithRow($sharedWithName) {
+ // "username" class is used for any type of share, not only for shares
+ // with users.
+ return Locator::forThe()->xpath("//span[contains(concat(' ', normalize-space(@class), ' '), ' username ') and normalize-space() = '$sharedWithName']/ancestor::li")->
+ descendantOf(self::shareeList())->
+ describedAs("Shared with $sharedWithName row in the details view in Files app");
+ }
+
/**
* @return Locator
*/
describedAs("Password protect working icon in the details view in Files app");
}
+ /**
+ * @Given I open the Files app
+ */
+ public function iOpenTheFilesApp() {
+ $this->actor->find(self::filesItemInAppMenu(), 10)->click();
+ }
+
/**
* @Given I close the details view
*/
$this->actor->find(self::shareLinkCheckbox(), 5)->click();
}
+ /**
+ * @Given I share :fileName with :shareWithName
+ */
+ public function iShareWith($fileName, $shareWithName) {
+ $this->actor->find(FileListContext::shareActionForFile(self::currentSectionMainView(), $fileName), 10)->click();
+
+ $this->actor->find(self::shareWithInput(), 5)->setValue($shareWithName . "\r");
+ }
+
/**
* @Given I write down the shared link
*/
}
}
+ /**
+ * @Then I see that the file is shared with me by :sharedByName
+ */
+ public function iSeeThatTheFileIsSharedWithMeBy($sharedByName) {
+ PHPUnit_Framework_Assert::assertEquals(
+ $this->actor->find(self::sharedByLabel(), 10)->getText(), "Shared with you by $sharedByName");
+ }
+
+ /**
+ * @Then I see that the file is shared with :sharedWithName
+ */
+ public function iSeeThatTheFileIsSharedWith($sharedWithName) {
+ PHPUnit_Framework_Assert::assertTrue(
+ $this->actor->find(self::sharedWithRow($sharedWithName), 10)->isVisible());
+ }
+
/**
* @Then I see that the working icon for password protect is shown
*/