X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Flayout_builder%2Ftests%2Fsrc%2FFunctionalJavascript%2FLayoutBuilderUiTest.php;fp=web%2Fcore%2Fmodules%2Flayout_builder%2Ftests%2Fsrc%2FFunctionalJavascript%2FLayoutBuilderUiTest.php;h=c5510e9d5fc7e3eb92d121c35bee84dad8e83b3c;hp=0000000000000000000000000000000000000000;hb=1c1cb0980bfa6caf0c24cce671b6bb541dc87583;hpb=9424afc6c1f518c301bf87a23c047d1873435d05 diff --git a/web/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php new file mode 100644 index 000000000..c5510e9d5 --- /dev/null +++ b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php @@ -0,0 +1,94 @@ +drupalPlaceBlock('local_tasks_block'); + + $this->createContentType(['type' => 'bundle_with_section_field']); + + $this->drupalLogin($this->drupalCreateUser([ + 'configure any layout', + 'administer node display', + 'administer node fields', + ])); + } + + /** + * Tests the message indicating unsaved changes. + */ + public function testUnsavedChangesMessage() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + // Enable layout builder. + $this->drupalPostForm( + static::FIELD_UI_PREFIX . '/display/default', + ['layout[enabled]' => TRUE], + 'Save' + ); + + // Make and then cancel changes. + $this->assertModifiedLayout(static::FIELD_UI_PREFIX . '/display-layout/default'); + $page->clickLink('Cancel Layout'); + $assert_session->pageTextNotContains('You have unsaved changes.'); + + // Make and then save changes. + $this->assertModifiedLayout(static::FIELD_UI_PREFIX . '/display-layout/default'); + $page->clickLink('Save Layout'); + $assert_session->pageTextNotContains('You have unsaved changes.'); + } + + /** + * Asserts that modifying a layout works as expected. + * + * @param string $path + * The path to a Layout Builder UI page. + */ + protected function assertModifiedLayout($path) { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + $this->drupalGet($path); + $page->clickLink('Add Section'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->pageTextNotContains('You have unsaved changes.'); + $page->clickLink('One column'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->pageTextContainsOnce('You have unsaved changes.'); + + // Reload the page. + $this->drupalGet($path); + $assert_session->pageTextContainsOnce('You have unsaved changes.'); + } + +}