ActionFormAjaxTest.php

Same filename and directory in other branches
  1. 9 core/modules/action/tests/src/FunctionalJavascript/ActionFormAjaxTest.php
  2. 8.9.x core/modules/action/tests/src/FunctionalJavascript/ActionFormAjaxTest.php
  3. 10 core/modules/action/tests/src/FunctionalJavascript/ActionFormAjaxTest.php

Namespace

Drupal\Tests\action\FunctionalJavascript

File

core/modules/action/tests/src/FunctionalJavascript/ActionFormAjaxTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\action\FunctionalJavascript;

use Drupal\Core\Url;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\system\Entity\Action;

/**
 * Tests action plugins using JavaScript.
 *
 * @group action
 */
class ActionFormAjaxTest extends WebDriverTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'action',
        'action_form_ajax_test',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        $user = $this->drupalCreateUser([
            'administer actions',
        ]);
        $this->drupalLogin($user);
    }
    
    /**
     * Tests action plugins with AJAX save their configuration.
     */
    public function testActionConfigurationWithAjax() {
        $url = Url::fromRoute('action.admin_add', [
            'action_id' => 'action_form_ajax_test',
        ]);
        $this->drupalGet($url);
        $page = $this->getSession()
            ->getPage();
        $id = 'test_plugin';
        $this->assertSession()
            ->waitForElementVisible('named', [
            'button',
            'Edit',
        ])
            ->press();
        $this->assertSession()
            ->waitForElementVisible('css', '[name="id"]')
            ->setValue($id);
        $page->find('css', '[name="having_a_party"]')
            ->check();
        $this->assertSession()
            ->waitForElementVisible('css', '[name="party_time"]');
        $party_time = 'Evening';
        $page->find('css', '[name="party_time"]')
            ->setValue($party_time);
        $page->find('css', '[value="Save"]')
            ->click();
        $url = Url::fromRoute('entity.action.collection');
        $this->assertSession()
            ->pageTextContains('The action has been successfully saved.');
        $this->assertSession()
            ->addressEquals($url);
        // Check storage.
        $instance = Action::load($id);
        $configuration = $instance->getPlugin()
            ->getConfiguration();
        $this->assertEquals([
            'party_time' => $party_time,
        ], $configuration);
        // Configuration should be shown in edit form.
        $this->drupalGet($instance->toUrl('edit-form'));
        $this->assertSession()
            ->checkboxChecked('having_a_party');
        $this->assertSession()
            ->fieldValueEquals('party_time', $party_time);
    }

}

Classes

Title Deprecated Summary
ActionFormAjaxTest Tests action plugins using JavaScript.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.