diff --git a/features/admin/content_types/has_many.feature b/features/admin/content_types/has_many.feature new file mode 100644 index 00000000..e8776a64 --- /dev/null +++ b/features/admin/content_types/has_many.feature @@ -0,0 +1,51 @@ +Feature: Create and manage has many relationships + In order to work with two associated models together + As an administrator + I want to set up and manage a has many relationship + +Background: + Given I have the site: "test site" set up + And I have a custom model named "Projects" with + | label | kind | required | target | + | Name | string | true | | + | Description | text | false | | + And I have a custom model named "Clients" with + | label | kind | required | target | + | Name | string | true | | + | Description | string | false | | + | Projects | has_many | false | Projects | + And I have entries for "Clients" with + | name | description | + | Alpha, Inc | Description for Alpha, Inc | + | Beta, Inc | Description for Beta, Inc | + | Gamma, Inc | Description for Gamma, Inc | + And I have entries for "Projects" with + | name | description | + | Fun project | Description for the fun one | + | Boring project | Description for the boring one | + + And I am an authenticated user + +@javascript +Scenario: I view a client without any projects + When I go to the "Clients" model list page + And I follow "Alpha, Inc" + And I wait until the has many selector is visible + Then I should see "Empty" within the list of items + +@javascript +Scenario: I add a project to a client + When I go to the "Clients" model list page + And I follow "Beta, Inc" + And I wait until the has many selector is visible + Then "Fun project" should be an option for "label" + And I press "+ add" + When I press "Save" + And I wait until the has many selector is visible + Then I should see "Fun project" within the list of added items + And I should not see "Empty" within the list of items + When I go to the "Clients" model list page + And I follow "Beta, Inc" + And I wait until the has many selector is visible + Then I should see "Fun project" within the list of added items + And I should not see "Empty" within the list of items diff --git a/features/admin/content_types/has_many_reverse.feature b/features/admin/content_types/has_many_reverse.feature index edf6db67..a0f01c04 100644 --- a/features/admin/content_types/has_many_reverse.feature +++ b/features/admin/content_types/has_many_reverse.feature @@ -36,26 +36,37 @@ Scenario: I do not see the "Add Item" button for new parent Scenario: I attach already created items for an existing parent and save it When I go to the "Clients" model list page And I follow "Apple Inc" - And I wait until ".has-many-selector ul li.template" is visible + And I wait until the has many selector is visible Then "My sexy project" should be an option for "label" When I select "My sexy project" from "label" And I press "+ add" And "My sexy project" should not be an option for "label" When I press "Save" - And I wait until ".has-many-selector ul li.template" is visible + And I wait until the has many selector is visible Then "My sexy project" should not be an option for "label" + When I go to the "Clients" model list page + And I follow "Apple Inc" + And I wait until the has many selector is visible + Then "My sexy project" should not be an option for "label" + And I should not see "Empty" within the list of items + @javascript Scenario: I create a new item and attach it When I go to the "Clients" model list page And I follow "Apple Inc" - And I wait until ".has-many-selector ul li.template" is visible + And I wait until the has many selector is visible And I press "+ add" Then I should see "Apple Inc » Projects — new item" And I should not see "Client" within the main form When I fill in "Name" with "iPad" And I press "Create" Then I should see "Content was successfully created." - When I wait until ".has-many-selector ul li.template" is visible + When I wait until the has many selector is visible Then I should see "iPad" And "iPad" should not be an option for "label" + When I go to the "Clients" model list page + And I follow "Apple Inc" + And I wait until the has many selector is visible + Then "iPad" should not be an option for "label" + And I should not see "Empty" within the list of items diff --git a/features/step_definitions/more_web_steps.rb b/features/step_definitions/more_web_steps.rb index 9ded333e..28c9e15c 100644 --- a/features/step_definitions/more_web_steps.rb +++ b/features/step_definitions/more_web_steps.rb @@ -10,6 +10,10 @@ When /^I wait until "([^"]*)" is visible$/ do |selector| page.has_css?("#{selector}", :visible => true) end +When /^I wait until ([^"]*) is visible$/ do |locator| + page.has_css?(selector_for(locator), :visible => true) +end + Then /^"([^"]*)" should( not)? be an option for "([^"]*)"(?: within "([^\"]*)")?$/ do |value, negate, field, selector| with_scope(selector) do expectation = negate ? :should_not : :should diff --git a/features/step_definitions/within_steps.rb b/features/step_definitions/within_steps.rb index 4b6b66f5..7131e694 100644 --- a/features/step_definitions/within_steps.rb +++ b/features/step_definitions/within_steps.rb @@ -1,7 +1,6 @@ # http://mislav.uniqpath.com/2010/09/cuking-it-right/ { - # 'as a movie title in the results' => 'ol.movies h1', # 'in a button' => 'button, input[type=submit]', # 'in the navigation' => 'nav' diff --git a/features/support/selectors.rb b/features/support/selectors.rb index d1ae28c5..32339920 100644 --- a/features/support/selectors.rb +++ b/features/support/selectors.rb @@ -13,7 +13,16 @@ module HtmlSelectorsHelpers when "the main form" "form.formtastic" - + + when "the list of added items" + ".has-many-selector li.item.added" + + when "the list of items" + ".has-many-selector" + + when "the has many selector" + ".has-many-selector ul li.template" + # Add more mappings here. # Here is an example that pulls values out of the Regexp: #