Same name and namespace in other branches
  1. 8.x-2.x tests/src/FunctionalJavascript/ColorFieldWidgetJavascriptTests.php \Drupal\Tests\color_field\FunctionalJavascript\ColorFieldWidgetJavascriptTests::testColorFieldWidgetBox() 1 comment

Test color_field_widget_box.

File

tests/src/FunctionalJavascript/ColorFieldWidgetJavascriptTests.php, line 53

Class

ColorFieldWidgetJavascriptTests
Tests for form grouping elements.

Namespace

Drupal\Tests\color_field\FunctionalJavascript

Code

public function testColorFieldWidgetBox() : void {
    $this->form
        ->setComponent('field_color_repeat', [
        'type' => 'color_field_widget_box',
        'settings' => [
            'default_colors' => '#ff0000,#FFFFFF',
        ],
    ])
        ->setComponent('field_color', [
        'type' => 'color_field_widget_box',
        'settings' => [
            'default_colors' => '#007749,#000000,#FFFFFF,#FFB81C,#E03C31,#001489,#ffafc8,#74d7ee',
        ],
    ])
        ->save();
    $session = $this->getSession();
    $web_assert = $this->assertSession();
    $this->drupalGet('node/add/article');
    $page = $session->getPage();
    // Wait for elements to be generated.
    $web_assert->waitForElementVisible('css', '#color-field-field-color-repeat button');
    $boxes = $page->findAll('css', '#color-field-field-color-repeat button');
    $this->assertEquals(3, count($boxes));
    // Confirm that help text/label are present.
    $web_assert->responseContains('Freeform Color');
    $web_assert->responseContains('Color field description');
    // Confirm that two fields aren't sharing settings.
    $boxes = $page->findAll('css', '#color-field-field-color button');
    $this->assertEquals(8, count($boxes));
    
    /** @var \Behat\Mink\Element\NodeElement $box */
    $box = $boxes[0];
    $this->assertEquals('#007749', $box->getAttribute('color'));
    // Only one of the fields has a default, so it is the only one that should
    // have a box that is selected. This also confirms that even if the storage
    // setting isn't uppercase hash prefixed hex that it still correctly selects
    // the right color in the color box widget.
    $active = $page->findAll('css', 'button.color_field_widget_box__square.active');
    $this->assertEquals(1, count($active));
    // Confirm that clicking the swatch sets the field value.
    $box->click();
    $field = $page->findField('field_color[0][color]');
    $this->assertEquals('#007749', $field->getValue());
    // Test that the edit of a saved color field also show the selected color.
    // This one tests for the default in uppercase.
    $node1 = $this->drupalCreateNode([
        'type' => 'article',
        'field_color_repeat' => [
            [
                'color' => 'ffffff',
            ],
        ],
    ]);
    $this->drupalGet('/node/' . $node1->id() . '/edit');
    // Wait for elements to be generated.
    $web_assert->waitForElementVisible('css', '#color-field-field-color-repeat button');
    $active = $page->findAll('css', '#color-field-field-color-repeat button.color_field_widget_box__square.active');
    $this->assertEquals(1, count($active));
    // Test that the edit of a saved color field also show the selected color.
    // This one tests for the default in lowercase.
    $node2 = $this->drupalCreateNode([
        'type' => 'article',
        'field_color_repeat' => [
            [
                'color' => 'ff0000',
            ],
        ],
    ]);
    $this->drupalGet('/node/' . $node2->id() . '/edit');
    // Wait for elements to be generated.
    $web_assert->waitForElementVisible('css', '#color-field-field-color-repeat button');
    $active = $page->findAll('css', '#color-field-field-color-repeat button.color_field_widget_box__square.active');
    $this->assertEquals(1, count($active));
}