From c9047a386f8a16130df23aee39885e6d35b271b8 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Sat, 14 Sep 2013 18:32:29 +0200 Subject: [PATCH] Behat: "insert link" feature --- .../Test/Behaviour/CmsFormsContext.php | 35 ++++++ tests/behat/features/insert-a-link.feature | 100 ++++++++++++------ 2 files changed, 101 insertions(+), 34 deletions(-) diff --git a/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsFormsContext.php b/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsFormsContext.php index 0897e5e18..2a65e3062 100644 --- a/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsFormsContext.php +++ b/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsFormsContext.php @@ -111,6 +111,41 @@ class CmsFormsContext extends BehatContext } } + /** + * Selects the first textual match in the HTML editor. Does not support + * selection across DOM node boundaries. + * + * @When /^I select "(?P([^"]*))" in the "(?P([^"]*))" HTML field$/ + */ + public function stepIHighlightTextInHtmlField($text, $field) + { + $page = $this->getSession()->getPage(); + $inputField = $page->findField($field); + assertNotNull($inputField, sprintf('HTML field "%s" not found', $field)); + $inputFieldId = $inputField->getAttribute('id'); + $text = addcslashes($text, "'"); + + $js = <<getSession()->evaluateScript($js); + } + /** * @Given /^I should see a "([^"]*)" button$/ */ diff --git a/tests/behat/features/insert-a-link.feature b/tests/behat/features/insert-a-link.feature index 14b813c0f..44419fe5d 100644 --- a/tests/behat/features/insert-a-link.feature +++ b/tests/behat/features/insert-a-link.feature @@ -1,52 +1,84 @@ -@assets +@assets Feature: Insert links into a page As a cms author I want to insert a link into my content So that I can link to a external website or a page on my site Background: - Given a "page" "About Us" - Given I am logged in with "ADMIN" permissions - Given "About Us" has text in content "You can fill this page out with your own content, or delete it and create your own pages." + Given a "page" "Home" + And a "page" "About Us" has the "Content" "My awesome content" + #And a "file" "assets/folder1/file1.jpg" + And I am logged in with "ADMIN" permissions And I go to "/admin/pages" And I click on "About Us" in the tree - @javascript - Scenario: I can select text within the content and apply an internal sitetree url link using the add url button - When I follow "About Us" - Then I should see an edit page form - - When I highlight the text "pages" - And the "Insert Link" button activates - When I press the "Insert Link" button - Then I should see "Form_EditorToolbarLinkForm" - - When I check the "Form_EditorToolbarLinkForm_LinkType_internal" radio button - And I select "home" in "treedropdownfield-title" field - And I enter "Test Link Description" in "Form_EditorToolbarLinkForm_Description" field - And I check the "Form_EditorToolbarLinkForm_TargetBlank" tickbox - And I press the "Form_EditorToolbarLinkForm_action_insert" button - Then I should see the "content" HTML field contains "pages" with tag "pages" - + Scenario: I can link to an internal page + Given I select "awesome" in the "Content" HTML field + And I press the "Insert Link" button + When I check "Page on the site" + And I fill in the "Page" dropdown with "Home" + And I fill in "my desc" for "Link description" + And I press the "Insert" button + # TODO Dynamic DB identifiers + Then the "Content" HTML field should contain "awesome" # Required to avoid "unsaved changed" browser dialog Then I press the "Save draft" button - @javascript - Scenario: I can select text within the content and apply an external url link using the add url button - When I follow "About Us" - Then I should see an edit page form + @todo + Scenario: I can link to an external URL + Given I select "awesome" in the "Content" HTML field + And I press the "Insert Link" button - When I highlight the text "pages" - And the "Insert Link" button activates + When I check "Another website" + And I fill in "http://silverstripe.org" for "URL" + And I check "Open link in a new window" + And I press the "Insert" button + Then the "Content" HTML field should contain "awesome" + # Required to avoid "unsaved changed" browser dialog + Then I press the "Save draft" button + + @todo + Scenario: I can link to a file + Given I select "awesome" in the "Content" HTML field When I press the "Insert Link" button - Then I should see "Form_EditorToolbarLinkForm" + When I check "Download a file" + And I fill in the "File" dropdown with "file1.jpg" + And I press the "Insert link" button + Then the "Content" HTML field should contain "awesome" + # Required to avoid "unsaved changed" browser dialog + Then I press the "Save draft" button - When I check the "Form_EditorToolbarLinkForm_LinkType_external" radio button - And I enter "http://silverstripe.com" in "Form_EditorToolbarLinkForm_external" field - And I enter "Test Link Description" in "Form_EditorToolbarLinkForm_Description" field - And I check the "Form_EditorToolbarLinkForm_TargetBlank" tickbox - And I press the "Form_EditorToolbarLinkForm_action_insert" button - Then I should see the "content" HTML field contains "pages" with tag "pages" + @todo + Scenario: I can link to an anchor + Given I fill in the "Content" HTML field with "My awesome content " + And I select "awesome" in the "Content" HTML field + When I press the "Insert Link" button + When I check "Anchor on this page" + And I fill in the "Select an anchor" dropdown with "myanchor" + And I press the "Insert link" button + Then the "Content" HTML field should contain "awesome" + # Required to avoid "unsaved changed" browser dialog + Then I press the "Save draft" button + + @todo + Scenario: I can edit a link + Given I fill in the "Content" HTML field with "My awesome content" + And I select "awesome" + When I press the "Insert Link" button + And the "URL" field should contain "http://silverstripe.org" + When I fill in "http://wordpress.org" for "URL" + And I press the "Insert link" button + Then the "Content" HTML field should contain "awesome" + # Required to avoid "unsaved changed" browser dialog + Then I press the "Save draft" button + + @todo + Scenario: I can delete a link + Given I fill in the "Content" HTML field with "My awesome content" + And I select "awesome" + When I press the "Insert Link" button + And I press the "Remove link" button + Then the "Content" HTML field should not contain "awesome" # Required to avoid "unsaved changed" browser dialog Then I press the "Save draft" button \ No newline at end of file