Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / action / tests / src / FunctionalJavascript / ActionFormAjaxTest.php
1 <?php
2
3 namespace Drupal\Tests\action\FunctionalJavascript;
4
5 use Drupal\Core\Url;
6 use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
7 use Drupal\system\Entity\Action;
8
9 /**
10  * Tests action plugins using Javascript.
11  *
12  * @group action
13  */
14 class ActionFormAjaxTest extends JavascriptTestBase {
15
16   /**
17    * {@inheritdoc}
18    */
19   protected static $modules = ['action', 'action_form_ajax_test'];
20
21   /**
22    * {@inheritdoc}
23    */
24   protected function setUp() {
25     parent::setUp();
26     $user = $this->drupalCreateUser(['administer actions']);
27     $this->drupalLogin($user);
28   }
29
30   /**
31    * Tests action plugins with AJAX save their configuration.
32    */
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();
38
39     $id = 'test_plugin';
40     $page->find('css', '[name="id"]')
41       ->setValue($id);
42
43     $page->find('css', '[name="having_a_party"]')
44       ->check();
45     $this->assertSession()->waitForElement('css', '[name="party_time"]');
46
47     $party_time = 'Evening';
48     $page->find('css', '[name="party_time"]')
49       ->setValue($party_time);
50
51     $page->find('css', '[value="Save"]')
52       ->click();
53
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);
58
59     // Check storage.
60     $instance = Action::load($id);
61     $configuration = $instance->getPlugin()->getConfiguration();
62     $this->assertEquals(['party_time' => $party_time], $configuration);
63
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);
68   }
69
70 }