Add acceptance tests for sharing a file with another user

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
Daniel Calviño Sánchez 2018-11-22 18:56:15 +01:00
parent 75c3737054
commit aa695dca0d
2 changed files with 143 additions and 0 deletions

View File

@ -295,6 +295,62 @@ Feature: app-files
# 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"

View File

@ -42,6 +42,23 @@ class FilesAppContext implements Context, ActorAwareInterface {
"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
*/
@ -211,6 +228,44 @@ class FilesAppContext implements Context, ActorAwareInterface {
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
*/
@ -349,6 +404,13 @@ class FilesAppContext implements Context, ActorAwareInterface {
describedAs("Password protect by Talk checkbox input 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
*/
@ -387,6 +449,15 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
}
/**
* @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
*/
@ -621,6 +692,22 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
}
/**
* @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 download of the link share is hidden
*/