mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
BUG Fix behat tests unable to capture HTML editor fields
This commit is contained in:
parent
6552dce70e
commit
9ec1d35f2b
@ -11,7 +11,8 @@ use Behat\Behat\Context\ClosuredContextInterface,
|
||||
Behat\Gherkin\Node\PyStringNode,
|
||||
Behat\Gherkin\Node\TableNode,
|
||||
Behat\MinkExtension\Context\MinkContext as MinkContext;
|
||||
|
||||
|
||||
use Behat\Mink\Element\NodeElement;
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
|
||||
// PHPUnit
|
||||
@ -74,13 +75,9 @@ class CmsFormsContext extends BehatContext {
|
||||
* @When /^I fill in "(?P<value>(?:[^"]|\\")*)" for the "(?P<field>(?:[^"]|\\")*)" HTML field$/
|
||||
*/
|
||||
public function stepIFillInTheHtmlFieldWith($field, $value) {
|
||||
$field = $this->fixStepArgument($field);
|
||||
$inputField = $this->getHtmlField($field);
|
||||
$value = $this->fixStepArgument($value);
|
||||
|
||||
$page = $this->getSession()->getPage();
|
||||
$inputField = $page->findField($field);
|
||||
assertNotNull($inputField, sprintf('HTML field "%s" not found', $field));
|
||||
|
||||
$this->getSession()->evaluateScript(sprintf(
|
||||
"jQuery('#%s').entwine('ss').getEditor().setContent('%s')",
|
||||
$inputField->getAttribute('id'),
|
||||
@ -92,13 +89,9 @@ class CmsFormsContext extends BehatContext {
|
||||
* @When /^I append "(?P<value>(?:[^"]|\\")*)" to the "(?P<field>(?:[^"]|\\")*)" HTML field$/
|
||||
*/
|
||||
public function stepIAppendTotheHtmlField($field, $value) {
|
||||
$field = $this->fixStepArgument($field);
|
||||
$inputField = $this->getHtmlField($field);
|
||||
$value = $this->fixStepArgument($value);
|
||||
|
||||
$page = $this->getSession()->getPage();
|
||||
$inputField = $page->findField($field);
|
||||
assertNotNull($inputField, sprintf('HTML field "%s" not found', $field));
|
||||
|
||||
$this->getSession()->evaluateScript(sprintf(
|
||||
"jQuery('#%s').entwine('ss').getEditor().insertContent('%s')",
|
||||
$inputField->getAttribute('id'),
|
||||
@ -110,11 +103,7 @@ class CmsFormsContext extends BehatContext {
|
||||
* @Then /^the "(?P<locator>(?:[^"]|\\")*)" HTML field should(?P<negative> not? |\s*)contain "(?P<html>.*)"$/
|
||||
*/
|
||||
public function theHtmlFieldShouldContain($locator, $negative, $html) {
|
||||
$locator = $this->fixStepArgument($locator);
|
||||
$page = $this->getSession()->getPage();
|
||||
$element = $page->findField($locator);
|
||||
assertNotNull($element, sprintf('HTML field "%s" not found', $locator));
|
||||
|
||||
$element = $this->getHtmlField($locator);
|
||||
$actual = $element->getValue();
|
||||
$regex = '/'.preg_quote($html, '/').'/ui';
|
||||
$failed = false;
|
||||
@ -154,10 +143,7 @@ class CmsFormsContext extends BehatContext {
|
||||
* @Given /^"(?P<text>([^"]*))" in the "(?P<field>(?:[^"]|\\")*)" HTML field should(?P<negate>(?: not)?) be (?P<formatting>(.*))$/
|
||||
*/
|
||||
public function stepContentInHtmlFieldShouldHaveFormatting($text, $field, $negate, $formatting) {
|
||||
$field = $this->fixStepArgument($field);
|
||||
$page = $this->getSession()->getPage();
|
||||
$inputField = $page->findField($field);
|
||||
assertNotNull($inputField, sprintf('HTML field "%s" not found', $field));
|
||||
$inputField = $this->getHtmlField($field);
|
||||
|
||||
$crawler = new Crawler($inputField->getValue());
|
||||
$matchedNode = null;
|
||||
@ -192,10 +178,7 @@ class CmsFormsContext extends BehatContext {
|
||||
* @When /^I select "(?P<text>([^"]*))" in the "(?P<field>(?:[^"]|\\")*)" HTML field$/
|
||||
*/
|
||||
public function stepIHighlightTextInHtmlField($text, $field) {
|
||||
$field = $this->fixStepArgument($field);
|
||||
$page = $this->getSession()->getPage();
|
||||
$inputField = $page->findField($field);
|
||||
assertNotNull($inputField, sprintf('HTML field "%s" not found', $field));
|
||||
$inputField = $this->getHtmlField($field);
|
||||
$inputFieldId = $inputField->getAttribute('id');
|
||||
$text = addcslashes($text, "'");
|
||||
|
||||
@ -266,4 +249,19 @@ JS;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Locate a HTML editor field
|
||||
*
|
||||
* @param string $locator Raw html field identifier as passed from
|
||||
* @return NodeElement
|
||||
*/
|
||||
protected function getHtmlField($locator)
|
||||
{
|
||||
$locator = $this->fixStepArgument($locator);
|
||||
$page = $this->getSession()->getPage();
|
||||
$element = $page->find('css', 'textarea.htmleditor[name=\'' . $locator . '\']');
|
||||
assertNotNull($element, sprintf('HTML field "%s" not found', $locator));
|
||||
return $element;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user