From 12d6882a6cb7d2c49ddadf17d5b7e4d629ccb1b0 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Thu, 20 Jun 2024 11:31:38 +1200 Subject: [PATCH] MNT Add behat test for elemental searchable fields --- tests/Behat/Context/FixtureContext.php | 19 +++++++++ .../searchable-dropdown-fields.feature | 39 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 tests/Behat/features/searchable-dropdown-fields.feature diff --git a/tests/Behat/Context/FixtureContext.php b/tests/Behat/Context/FixtureContext.php index 564434bd..9c8234e2 100644 --- a/tests/Behat/Context/FixtureContext.php +++ b/tests/Behat/Context/FixtureContext.php @@ -8,6 +8,7 @@ use SilverStripe\Core\ClassInfo; use SilverStripe\ORM\DB; use SilverStripe\ORM\Queries\SQLInsert; +use SilverStripe\FrameworkTest\Elemental\Model\ElementalSearchableFieldsBlock; /** * Context used to create fixtures in the SilverStripe ORM. @@ -44,6 +45,24 @@ public function theHasAContentElementWithContent($type, $pageTitle, $elementTitl } } + /** + * @Given /a "([^"]+)" "([^"]+)" with a "([^"]+)" element titled "([^"]+)"/ + * + * e.g. Given a "page" "My page" with a "My\App\MyBlock" element titled "Some block" + * + * @param string $type - will be converted to a class name + * @param string $pageTitle + * @param string $elementClass + * @param string $elementTitle + */ + public function theDataObjectWithAnElement($type, $pageTitle, $elementClass, $elementTitle) + { + $elementalArea = $this->getElementalArea($type, $pageTitle); + $elementalArea->Elements()->add( + $this->getFixtureFactory()->createObject($elementClass, $elementTitle) + ); + } + /** * @Given /(?:the|a) "([^"]+)" "([^"]+)" (?:with|has) a broken element named "([^"]+)"/ */ diff --git a/tests/Behat/features/searchable-dropdown-fields.feature b/tests/Behat/features/searchable-dropdown-fields.feature new file mode 100644 index 00000000..abc32dd6 --- /dev/null +++ b/tests/Behat/features/searchable-dropdown-fields.feature @@ -0,0 +1,39 @@ +@javascript +Feature: Searchable fields + As a CMS user + I want searchable dropdown fields to function when used in a content block + So that I can continue to update my content + + Background: + Given I add an extension "DNADesign\Elemental\Extensions\ElementalPageExtension" to the "Page" class + And a "page" "Blocks Page" with a "SilverStripe\FrameworkTest\Elemental\Model\ElementalSearchableFieldsBlock" element titled "My block" + And a "SilverStripe\FrameworkTest\Model\Company" "test-1" + And a "SilverStripe\FrameworkTest\Model\Company" "test-2" + And a "SilverStripe\FrameworkTest\Model\Company" "test-3" + Given the "group" "EDITOR" has permissions "Access to 'Pages' section" + And I am logged in as a member of "EDITOR" group + And I go to "/admin/pages" + And I left click on "Blocks Page" in the tree + When I see a list of blocks + Then I should see "My block" + When I click on block 1 + + Scenario: I can use lazy-loaded searchable dropdown fields + When I click on the "#Form_ElementForm_1_PageElements_1_CompanyID .ss-searchable-dropdown-field__value-container" element + And I type "test-1" in the field + And I wait 2 seconds + And I press the "Enter" key globally + When I click on the "#Form_ElementForm_1_PageElements_1_Companys .ss-searchable-dropdown-field__value-container" element + And I type "test-2" in the field + And I wait 2 seconds + And I press the "Enter" key globally + And I type "test-3" in the field + And I wait 2 seconds + And I press the "Enter" key globally + When I press the "View actions" button + And I press the "Save" button + And I wait 1 second + Then I should see a "Saved 'My block' successfully" success toast + And I should see "test-1" + And I should see "test-2" + And I should see "test-3"