X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fsystem%2Ftests%2Fsrc%2FFunctional%2FForm%2FElementsVerticalTabsTest.php;fp=web%2Fcore%2Fmodules%2Fsystem%2Ftests%2Fsrc%2FFunctional%2FForm%2FElementsVerticalTabsTest.php;h=07f25fef6b442f34cf26c11c9756ebaacc2d2aec;hp=0000000000000000000000000000000000000000;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/web/core/modules/system/tests/src/Functional/Form/ElementsVerticalTabsTest.php b/web/core/modules/system/tests/src/Functional/Form/ElementsVerticalTabsTest.php new file mode 100644 index 000000000..07f25fef6 --- /dev/null +++ b/web/core/modules/system/tests/src/Functional/Form/ElementsVerticalTabsTest.php @@ -0,0 +1,95 @@ +adminUser = $this->drupalCreateUser(['access vertical_tab_test tabs']); + $this->webUser = $this->drupalCreateUser(); + $this->drupalLogin($this->adminUser); + } + + /** + * Ensures that vertical-tabs.js is included before collapse.js. + * + * Otherwise, collapse.js adds "SHOW" or "HIDE" labels to the tabs. + */ + public function testJavaScriptOrdering() { + $this->drupalGet('form_test/vertical-tabs'); + $content = $this->getSession()->getPage()->getContent(); + $position1 = strpos($content, 'core/misc/vertical-tabs.js'); + $position2 = strpos($content, 'core/misc/collapse.js'); + $this->assertTrue($position1 !== FALSE && $position2 !== FALSE && $position1 < $position2, 'vertical-tabs.js is included before collapse.js'); + } + + /** + * Ensures that vertical tab markup is not shown if user has no tab access. + */ + public function testWrapperNotShownWhenEmpty() { + // Test admin user can see vertical tabs and wrapper. + $this->drupalGet('form_test/vertical-tabs'); + $wrapper = $this->xpath("//div[@data-vertical-tabs-panes]"); + $this->assertTrue(isset($wrapper[0]), 'Vertical tab panes found.'); + + // Test wrapper markup not present for non-privileged web user. + $this->drupalLogin($this->webUser); + $this->drupalGet('form_test/vertical-tabs'); + $wrapper = $this->xpath("//div[@data-vertical-tabs-panes]"); + $this->assertFalse(isset($wrapper[0]), 'Vertical tab wrappers are not displayed to unprivileged users.'); + } + + /** + * Ensures that default vertical tab is correctly selected. + */ + public function testDefaultTab() { + $this->drupalGet('form_test/vertical-tabs'); + + $value = $this->assertSession() + ->elementExists('css', 'input[name="vertical_tabs__active_tab"]') + ->getValue(); + + $this->assertSame('edit-tab3', $value, t('The default vertical tab is correctly selected.')); + } + + /** + * Ensures that vertical tab form values are cleaned. + */ + public function testDefaultTabCleaned() { + $values = Json::decode($this->drupalPostForm('form_test/form-state-values-clean', [], t('Submit'))); + $this->assertFalse(isset($values['vertical_tabs__active_tab']), SafeMarkup::format('%element was removed.', ['%element' => 'vertical_tabs__active_tab'])); + } + +}