WebformElementCounterTest.php in Webform 6.x
File
tests/src/Functional/Element/WebformElementCounterTest.php
View source
<?php
namespace Drupal\Tests\webform\Functional\Element;
class WebformElementCounterTest extends WebformElementBrowserTestBase {
protected static $testWebforms = [
'test_element_counter',
];
public function testCounter() {
$this
->drupalGet('/webform/test_element_counter');
$this
->assertRaw('<input data-counter-type="character" data-counter-minimum="5" data-counter-minimum-message="%d character(s) entered. This is custom text" class="js-webform-counter webform-counter form-text" minlength="5" data-drupal-selector="edit-counter-characters-min-message" type="text" id="edit-counter-characters-min-message" name="counter_characters_min_message" value="" size="60" maxlength="255" />');
$this
->assertRaw('<input data-counter-type="character" data-counter-maximum="10" data-counter-maximum-message="%d character(s) remaining. This is custom text" class="js-webform-counter webform-counter form-text" data-drupal-selector="edit-counter-characters-max-message" type="text" id="edit-counter-characters-max-message" name="counter_characters_max_message" value="" size="60" maxlength="10" />');
$this
->assertRaw('<textarea data-counter-type="word" data-counter-minimum="5" data-counter-minimum-message="%d word(s) entered. This is custom text" class="js-webform-counter webform-counter form-textarea" data-drupal-selector="edit-counter-words-min-message" id="edit-counter-words-min-message" name="counter_words_min_message" rows="5" cols="60"></textarea>');
$this
->assertRaw('<textarea data-counter-type="word" data-counter-maximum="10" data-counter-maximum-message="%d character(s) remaining. This is custom text" class="js-webform-counter webform-counter form-textarea" data-drupal-selector="edit-counter-words-max-message" id="edit-counter-words-max-message" name="counter_words_max_message" rows="5" cols="60"></textarea>');
$this
->assertRaw('<input data-counter-type="character" data-counter-minimum="5" data-counter-minimum-message="alert('XSS');<em>%d</em> character(s) entered." data-counter-maximum="10" data-counter-maximum-message="alert('XSS');<em>%d</em> character(s) remaining." class="js-webform-counter webform-counter form-text" minlength="5" data-drupal-selector="edit-counter-characters-xss" type="text" id="edit-counter-characters-xss" name="counter_characters_xss" value="" size="60" maxlength="10" />');
$edit = [
'counter_characters_min' => '123',
'counter_characters_max' => '1234567890xxx',
'counter_words_min' => 'one two three',
'counter_words_max' => 'one two three four five six seven eight nine ten eleven',
];
$this
->drupalPostForm('/webform/test_element_counter', $edit, 'Submit');
$this
->assertRaw('counter_characters_min (5) must be longer than <em class="placeholder">5</em> characters but is currently <em class="placeholder">3</em> characters long.');
$this
->assertRaw('counter_characters_max (10) cannot be longer than <em class="placeholder">10</em> characters but is currently <em class="placeholder">13</em> characters long.');
$this
->assertRaw('counter_words_min (5) must be longer than <em class="placeholder">5</em> words but is currently <em class="placeholder">3</em> words long.');
$this
->assertRaw('counter_words_max (10) cannot be longer than <em class="placeholder">10</em> words but is currently <em class="placeholder">11</em> words long.');
$edit = [
'counter_characters_min' => '12345',
'counter_characters_max' => '1234567890',
'counter_words_min' => 'one two three four five',
'counter_words_max' => 'one two three four five six seven eight nine ten',
];
$this
->drupalPostForm('/webform/test_element_counter', $edit, 'Submit');
$this
->assertNoRaw('counter_characters_min (5) must be longer than <em class="placeholder">5</em> characters');
$this
->assertNoRaw('counter_characters_max (10) cannot be longer than <em class="placeholder">10</em> characters');
$this
->assertNoRaw('counter_words_min (5) must be longer than <em class="placeholder">5</em> words');
$this
->assertNoRaw('counter_words_max (10) cannot be longer than <em class="placeholder">10</em> words');
}
}