Fix and extend acceptance tests

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon 2017-06-20 16:24:07 +02:00
parent 8a8e78d439
commit 26ca563545
No known key found for this signature in database
GPG Key ID: 7424F1874854DF23
3 changed files with 55 additions and 6 deletions

View File

@ -4,8 +4,7 @@ Feature: access-levels
Given I am logged in
When I open the Settings menu
Then I see that the Settings menu is shown
And I see that the "Personal" item in the Settings menu is shown
And I see that the "Admin" item in the Settings menu is not shown
And I see that the "Settings" item in the Settings menu is shown
And I see that the "Users" item in the Settings menu is not shown
And I see that the "Help" item in the Settings menu is shown
And I see that the "Log out" item in the Settings menu is shown
@ -14,8 +13,19 @@ Feature: access-levels
Given I am logged in as the admin
When I open the Settings menu
Then I see that the Settings menu is shown
And I see that the "Personal" item in the Settings menu is shown
And I see that the "Admin" item in the Settings menu is shown
And I see that the "Settings" item in the Settings menu is shown
And I see that the "Users" item in the Settings menu is shown
And I see that the "Help" item in the Settings menu is shown
And I see that the "Log out" item in the Settings menu is shown
Scenario: regular users cannot see amdin-level items on the Settings page
Given I am logged in
When I visit the settings page
Then I see that the "Personal" settings panel is shown
And I see that the "Administration" settings panel is not shown
Scenario: admin users can see amdin-level items on the Settings page
Given I am logged in as the admin
When I visit the settings page
Then I see that the "Personal" settings panel is shown
And I see that the "Administration" settings panel is shown

View File

@ -66,6 +66,15 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
describedAs($itemText . " item in Settings menu");
}
/**
* @param string $itemText
* @return Locator
*/
private static function settingsPanelFor($itemText) {
return Locator::forThe()->xpath("//div[@id = 'app-navigation']//ul//li[@class = 'settings-caption' and normalize-space() = '$itemText']")->
describedAs($itemText . " item in Settings panel");
}
/**
* @When I open the Settings menu
*/
@ -73,6 +82,7 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
$this->actor->find(self::settingsMenuButton(), 10)->click();
}
/**
* @When I open the User settings
*/
@ -82,6 +92,14 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
$this->actor->find(self::usersMenuItem(), 2)->click();
}
/**
* @When I visit the settings page
*/
public function iVisitTheSettingsPage() {
$this->iOpenTheSettingsMenu();
$this->actor->find(self::menuItemFor('Settings'), 20)->click();
}
/**
* @When I log out
*/
@ -120,4 +138,25 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
}
}
/**
* @Then I see that the :itemText settings panel is shown
*/
public function iSeeThatTheItemSettingsPanelIsShown($itemText) {
PHPUnit_Framework_Assert::assertTrue(
$this->actor->find(self::settingsPanelFor($itemText), 10)->isVisible()
);
}
/**
* @Then I see that the :itemText settings panel is not shown
*/
public function iSeeThatTheItemSettingsPanelIsNotShown($itemText) {
try {
PHPUnit_Framework_Assert::assertFalse(
$this->actor->find(self::settingsPanelFor($itemText), 10)->isVisible()
);
} catch (NoSuchElementException $exception) {
}
}
}

View File

@ -119,7 +119,7 @@ class ElementWrapper {
/**
* Returns whether the wrapped element is visible or not.
*
* @return boolbean true if the wrapped element is visible, false otherwise.
* @return bool true if the wrapped element is visible, false otherwise.
*/
public function isVisible() {
$commandCallback = function() {