mattscilipoti-model_steps¶ ↑
Attempt to answer 4 needs:
-
Support creation of models with attributes
-
Uniquely identify models in cucumber steps
-
Reference associated models
-
Support factory derivations i.e. user_admin, user_manager
Attempt:
Assume:
User belongs_to Organization User has_many Courses Course belongs_to Topic User has_friendly_id :login Note: it is dependent on friendly_id: http://github.com/norman/friendly_id
General: a step that ends in colon (:) expects a cucumber table.
-
Support creation of models with attributes
Given these Users exist: |login |first_name |last_name | |tester |joe |tester | |anon |John |Doe | * only one row is required. Works the same for one, or more, rows. This will call: Factory(:user, :login => 'tester', :first_name => 'joe', :last_name => 'tester') Factory(:user, :login => 'anon', :first_name => 'John', :last_name => 'Doe') Comparison: pickle: Single: Given a user exists with login: "tester", first_name: "joe", last_name: "tester" Multiple: Given the following Users exist |login |first_name |last_name | |tester |joe |tester | |anon |John |Doe | factory_girl: Given
-
Uniquely identify models in cucumber steps
Model:friendly_id User:Matt Possible options: User:"Matt" User|matt
-
Reference associated models
A. utilize associations in tables Given these people exist: |name |organization | |Matt |Dept. A| This will identify that 'role' is an association and perform the equivalent of: Role.find_by_name('Admin') || Factory(:role, :name => 'Admin') #using Factory(:role, Topic.friendly_column_name => 'Admin') B. ModelA has many ModelBs Given User:Matt has these Courses: |name |topic | |B101 |Biology | |CS101 |CompSci | Executes: Factory(:user, :course => :name => 'B101', :topic => Topic.find('Biology') || Factory(:topic, Topic.friendly_column_name => 'biology')) Factory(:user, :course => :name => 'CS101', :topic => Topic.find('CompSci'))
-
Support factory derivations i.e. user_admin, user_manager
Given this User(Admin) exists: |first_name | |Jane | Executes: Factory(:user_admin, :name => 'Jane') Given a User(with associations) exists Executes: Factory(:user_with_associations)
Note on Patches/Pull Requests¶ ↑
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but
bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Thanks for your help and patches!¶ ↑
ccahoon, ngauthier
Copyright¶ ↑
Copyright © 2009-10 Matt Scilipoti. See LICENSE for details.