X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Flayout_builder%2Ftests%2Fsrc%2FFunctionalJavascript%2FAjaxBlockTest.php;fp=web%2Fcore%2Fmodules%2Flayout_builder%2Ftests%2Fsrc%2FFunctionalJavascript%2FAjaxBlockTest.php;h=653185fe8964a24c9f0c4f40a6b7b88b7be43412;hp=0000000000000000000000000000000000000000;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hpb=74df008bdbb3a11eeea356744f39b802369bda3c diff --git a/web/core/modules/layout_builder/tests/src/FunctionalJavascript/AjaxBlockTest.php b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/AjaxBlockTest.php new file mode 100644 index 000000000..653185fe8 --- /dev/null +++ b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/AjaxBlockTest.php @@ -0,0 +1,97 @@ +drupalCreateUser([ + 'configure any layout', + 'administer node display', + 'administer node fields', + ]); + $user->save(); + $this->drupalLogin($user); + $this->createContentType(['type' => 'bundle_with_section_field']); + } + + /** + * Tests configuring a field block for a user field. + */ + public function testAddAjaxBlock() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + // Start by creating a node. + $node = $this->createNode([ + 'type' => 'bundle_with_section_field', + 'body' => [ + [ + 'value' => 'The node body', + ], + ], + ]); + $node->save(); + $this->drupalGet('node/1'); + $assert_session->pageTextContains('The node body'); + $assert_session->pageTextNotContains('Every word is like an unnecessary stain on silence and nothingness.'); + $field_ui_prefix = 'admin/structure/types/manage/bundle_with_section_field'; + + // From the manage display page, go to manage the layout. + $this->drupalPostForm("$field_ui_prefix/display/default", ['layout[enabled]' => TRUE], 'Save'); + $assert_session->linkExists('Manage layout'); + $this->clickLink('Manage layout'); + $assert_session->addressEquals("$field_ui_prefix/display-layout/default"); + // The body field is present. + $assert_session->elementExists('css', '.field--name-body'); + + // Add a new block. + $assert_session->linkExists('Add Block'); + $this->clickLink('Add Block'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->linkExists('TestAjax'); + $this->clickLink('TestAjax'); + $assert_session->assertWaitOnAjaxRequest(); + // Find the radio buttons. + $name = 'settings[ajax_test]'; + /** @var \Behat\Mink\Element\NodeElement[] $radios */ + $radios = $this->cssSelect('input[name="' . $name . '"]'); + // Click them both a couple of times. + foreach ([1, 2] as $rounds) { + foreach ($radios as $radio) { + $radio->click(); + $assert_session->assertWaitOnAjaxRequest(); + } + } + // Then add the block. + $page->pressButton('Add Block'); + $assert_session->assertWaitOnAjaxRequest(); + $block_elements = $this->cssSelect('.block-layout-builder-test-testajax'); + // Should be exactly one of these in there. + $this->assertEquals(1, count($block_elements)); + $assert_session->pageTextContains('Every word is like an unnecessary stain on silence and nothingness.'); + } + +}