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:
parent
75c3737054
commit
aa695dca0d
2 changed files with 143 additions and 0 deletions
|
@ -295,6 +295,62 @@ Feature: app-files
|
||||||
# download starts no page redirection
|
# 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
|
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
|
Scenario: marking a file as favorite causes the file list to be sorted again
|
||||||
Given I am logged in
|
Given I am logged in
|
||||||
And I create a new folder named "A name alphabetically lower than welcome.txt"
|
And I create a new folder named "A name alphabetically lower than welcome.txt"
|
||||||
|
|
|
@ -42,6 +42,23 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
||||||
"Deleted files" => "trashbin" ];
|
"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
|
* @return Locator
|
||||||
*/
|
*/
|
||||||
|
@ -211,6 +228,44 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
||||||
describedAs("Loading icon for tab named $tabName in details view in Files app");
|
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
|
* @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");
|
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
|
* @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
|
* @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
|
* @Then I see that the download of the link share is hidden
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue