Merge pull request #164 from corgibytes/has_many_issue

Has many relationships are not working correctly
This commit is contained in:
Didier Lafforgue 2011-08-14 13:37:59 -07:00
commit 8d30ba5152
5 changed files with 80 additions and 6 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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'

View File

@ -14,6 +14,15 @@ 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:
#