MNT Update behat tests

This commit is contained in:
Steve Boyd 2021-11-11 13:02:22 +13:00
parent b544032a22
commit 8f474ce69e
7 changed files with 109 additions and 16 deletions

View File

@ -6,3 +6,4 @@ import:
env: env:
global: global:
- BEHAT_SUITE="contentreview" - BEHAT_SUITE="contentreview"
- REQUIRE_EXTRA="symbiote/silverstripe-queuedjobs:^4"

View File

@ -2,18 +2,19 @@ default:
suites: suites:
contentreview: contentreview:
paths: paths:
- '%paths.modules.contentreview%/tests/behat/features' - "%paths.modules.contentreview%/tests/behat/features"
contexts: contexts:
- SilverStripe\Framework\Tests\Behaviour\FeatureContext - SilverStripe\Admin\Tests\Behat\Context\AdminContext
- SilverStripe\Framework\Tests\Behaviour\CmsFormsContext
- SilverStripe\Framework\Tests\Behaviour\CmsUiContext
- SilverStripe\BehatExtension\Context\BasicContext - SilverStripe\BehatExtension\Context\BasicContext
- SilverStripe\BehatExtension\Context\EmailContext - SilverStripe\BehatExtension\Context\EmailContext
- SilverStripe\CMS\Tests\Behaviour\LoginContext - SilverStripe\BehatExtension\Context\LoginContext
- SilverStripe\CMS\Tests\Behaviour\ThemeContext - SilverStripe\Framework\Tests\Behaviour\CmsFormsContext
- SilverStripe\CMS\Tests\Behaviour\FixtureContext: - SilverStripe\Framework\Tests\Behaviour\CmsUiContext
# Note: double indent for args is intentional - SilverStripe\ContentReview\Tests\Behat\Context\FeatureContext
- '%paths.modules.contentreview%/tests/behat/features/files/' - SilverStripe\ContentReview\Tests\Behat\Context\FixtureContext
-
SilverStripe\ContentReview\Tests\Behat\Context\FixtureContext:
- "%paths.modules.contentreview%/tests/behat/files/"
extensions: extensions:
SilverStripe\BehatExtension\MinkExtension: SilverStripe\BehatExtension\MinkExtension:
@ -21,9 +22,8 @@ default:
javascript_session: facebook_web_driver javascript_session: facebook_web_driver
facebook_web_driver: facebook_web_driver:
browser: chrome browser: chrome
wd_host: "http://127.0.0.1:9515" #chromedriver port wd_host: "http://127.0.0.1:9515"
browser_name: chrome
SilverStripe\BehatExtension\Extension: SilverStripe\BehatExtension\Extension:
screenshot_path: '%paths.base%/artifacts/screenshots' screenshot_path: "%paths.base%/artifacts/screenshots"
bootstrap_file: "vendor/silverstripe/cms/tests/behat/serve-bootstrap.php" bootstrap_file: vendor/silverstripe/framework/tests/behat/serve-bootstrap.php

View File

@ -42,7 +42,8 @@
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"SilverStripe\\ContentReview\\": "src/", "SilverStripe\\ContentReview\\": "src/",
"SilverStripe\\ContentReview\\Tests\\": "tests/php/" "SilverStripe\\ContentReview\\Tests\\": "tests/php/",
"SilverStripe\\ContentReview\\Tests\\Behat\\Context\\": "tests/behat/src/"
} }
}, },
"minimum-stability": "dev", "minimum-stability": "dev",

View File

@ -0,0 +1,53 @@
Feature: Set up reviews
As a CMS user
I can set up content reviews for my content
In order to ensure my content gets reviewed regularly
Background:
# Note: the review date is deliberately in the past
Given a "page" "My page" with "Content"="<p>Welcome</p>", "NextReviewDate"="01/01/2017", "ReviewPeriodDays"="1"
And the "group" "EDITOR group" has permissions "CMS_ACCESS_LeftAndMain" and "FILE_EDIT_ALL"
And the "group" "FILEONLY group" has permissions "FILE_EDIT_ALL"
And a "member" "Ed" belonging to "EDITOR group" with "Email"="ed@example.com"
And a "member" "Phil" belonging to "FILEONLY group" with "Email"="phil@example.com"
And I am logged in with "ADMIN" permissions
And I go to "admin/pages"
And I click on "My page" in the tree
And I click the "Settings" CMS tab
And I click the "Content review" CMS tab
Scenario: I can set content reviewers to users and groups who can edit pages
When I select "Custom settings" from "Options" input group
And I wait for 1 second
# Test adding individual member based on them having access to the Pages section fo the CMS
Then the "#Form_EditForm_OwnerUsers" select element should have an option with an "Ed" label
And the "#Form_EditForm_OwnerUsers" select element should not have an option with a "Phil" label
# Test adding groups
Then the "#Form_EditForm_OwnerGroups" select element should have an option with an "EDITOR group" label
# Required to avoid "unsaved changed" browser dialog
Then I press the "Save" button
Scenario: There is an alert icon when a content review is overdue
When I select "Custom settings" from "Options" input group
And I wait for 1 second
Then I should not see the ".content-review__button" element
When I select "ADMIN group" from "Groups"
# Set a date in the past
And I set a content review date of "2020-01-01"
And I press the "Save" button
Then I should see the ".content-review__button" element
When I click on the ".content-review__button" element
Then I should see the ".modal" element
And I should see "Mark as reviewed"
# Fill in a review
When I fill in "Form_EditForm_ReviewContent_Review" with "My review"
And I press "Mark as reviewed"
And I wait for 1 second
Then I should see "Review successfully added"
When I click on the ".close" element
And I press the "Save" button
Then I should see "My review"

View File

View File

@ -0,0 +1,29 @@
<?php
namespace SilverStripe\ContentReview\Tests\Behat\Context;
use SilverStripe\BehatExtension\Context\SilverStripeContext;
class FeatureContext extends SilverStripeContext
{
/**
* @Given /^the "([^"]*)" select element should(| not) have an option with (a|an) "([^"]*)" label$/
* @param string $id
* @param string $should
* @param string $label
*/
public function theSelectElementShouldHaveAnOptionWithALabel($id, $should, $label)
{
$n = $should === '' ? 1 : 0;
$js = <<<JS
;let hasLabel = 0;
document.querySelectorAll('#{$id} > option').forEach(function(option) {
if (option.innerHTML == '$label') {
hasLabel = 1;
}
});
return hasLabel;
JS;
return $this->getSession()->evaluateScript($js) == $n;
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace SilverStripe\ContentReview\Tests\Behat\Context;
use SilverStripe\BehatExtension\Context\FixtureContext as BaseFixtureContext;
class FixtureContext extends BaseFixtureContext
{
}