public function WebformValidationTestCase::test in Webform Validation 7
The tests.
File
- tests/
WebformValidationTestCase.test, line 30
Class
- WebformValidationTestCase
- Test Webform Validation module.
Code
public function test() {
// Create test Webform.
$node = $this
->webformForm();
// Access to "Form validation" tab.
$this
->drupalLogin($this->webform_users['userAccess']);
$this
->drupalGet('node/' . $node->nid . '/webform/validation');
$this
->assertResponse(403, 'Authenticated user does not have access to "Form validation" tab');
// Empty validation rules list.
$this
->drupalLogin($this->webform_users['admin']);
$this
->drupalGet('node/' . $node->nid . '/webform/validation');
$this
->assertResponse(200, 'Webform admin user has access to "Form validation" tab');
$this
->assertTitle('Test Webform | Drupal');
$this
->assertText('Add a validation rule');
$this
->assertText('No validation rules available.');
// Rule creation page.
$this
->clickLink('Minimum length');
$this
->assertTitle('Add validation rule | Drupal');
$this
->assertText('Minimum length');
$element = $this
->xpath("//input[@id='edit-data'][@name='data'][@type='text']");
$this
->assertTrue($element, 'Page contains "edit-data" input.');
// Rule created.
$values = array(
'rulename' => $this
->randomString(),
'rule_components[21]' => TRUE,
'data' => 2,
);
$this
->drupalPost(NULL, $values, t('Add rule'));
$this
->assertText(htmlspecialchars($values['rulename'], ENT_QUOTES), 'Rule name appears on page.');
// Test rule creation validation.
$this
->clickLink('Compare two values');
$this
->assertTitle('Add validation rule | Drupal');
$this
->assertText('Compare two values');
$values = array(
'rulename' => $this
->randomString(),
'data' => 'invalid',
);
$this
->drupalPost(NULL, $values, t('Add rule'));
$this
->assertText('Comparison operator is invalid.', 'Custom data validation fails.');
$this
->assertText('You need to select exactly 2 components.', 'Custom data validation fails.');
$this
->assertText('Custom error message field is required.', 'Custom data validation fails.');
$values = array(
'rule_components[20]' => TRUE,
'rule_components[21]' => TRUE,
'data' => '<',
'error_message' => 'Error message.',
);
$this
->drupalPost(NULL, $values, t('Add rule'));
$this
->clickLink('Webform Validation Testing 1');
$element = $this
->xpath("//textarea[@id='edit-data'][@name='data']");
$this
->assertTrue($element, 'Page contains "edit-data" textarea.');
}