3 namespace Drupal\Tests\action\FunctionalJavascript;
6 use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
7 use Drupal\system\Entity\Action;
10 * Tests action plugins using Javascript.
14 class ActionFormAjaxTest extends JavascriptTestBase {
19 protected static $modules = ['action', 'action_form_ajax_test'];
24 protected function setUp() {
26 $user = $this->drupalCreateUser(['administer actions']);
27 $this->drupalLogin($user);
31 * Tests action plugins with AJAX save their configuration.
33 public function testActionConfigurationWithAjax() {
34 $url = Url::fromRoute('action.admin_add', ['action_id' => 'action_form_ajax_test']);
35 $this->drupalGet($url);
36 $this->assertSession()->statusCodeEquals(200);
37 $page = $this->getSession()->getPage();
40 $page->find('css', '[name="id"]')
43 $page->find('css', '[name="having_a_party"]')
45 $this->assertSession()->waitForElement('css', '[name="party_time"]');
47 $party_time = 'Evening';
48 $page->find('css', '[name="party_time"]')
49 ->setValue($party_time);
51 $page->find('css', '[value="Save"]')
54 $url = Url::fromRoute('entity.action.collection');
55 $this->assertSession()->pageTextContains('The action has been successfully saved.');
56 $this->assertSession()->addressEquals($url);
57 $this->assertSession()->statusCodeEquals(200);
60 $instance = Action::load($id);
61 $configuration = $instance->getPlugin()->getConfiguration();
62 $this->assertEquals(['party_time' => $party_time], $configuration);
64 // Configuration should be shown in edit form.
65 $this->drupalGet($instance->toUrl('edit-form'));
66 $this->assertSession()->checkboxChecked('having_a_party');
67 $this->assertSession()->fieldValueEquals('party_time', $party_time);