Rails 3.1.3 rspec-rails (2.11.4) rspec 2.11.1 I am new to rspec. I don't quite understand tests for POST create part.
I have generated scaffold, and simultaneously it generated controller_spec.rb as well. it "assigns a newly created plan as @plan" do post :create, {:plan => valid_attributes}, valid_session assigns(:plan).should be_a(Plan) assigns(:plan).should be_persisted end is the default POST create test. It raises a failure, if I changed the validations of Plan class Plan < ActiveRecord::Base validates :give_take, :presence => true validates :flight_name_id, :presence => true validates :day_departure, :presence => true validates :weight, :presence => true end The failure message is 1) PlansController POST create with valid params assigns a newly created plan as @plan Failure/Error: assigns(:plan).should be_persisted expected persisted? to return true, got false # ./spec/controllers/plans_controller_spec.rb:117:in `block (4 levels) in <top (required)>' If my understanding is correct, be_persisted is testing if the newly created model instance is properly stored in DB. I understand that my way is rather opposite: building test methods after setting actual codes. But first I need to understand RSpec. I have also setup FactoryGirl FactoryGirl.define do factory :plan do sequence(:give_take) { |n| [ 0, 1 ][n%2] } sequence(:weight) { | n | n } sequence(:check_in) { |c| [ true, false ][c%2] } sequence(:flight_name_id) { |n| n } day_departure Date.new(2012, 12, 1) end end which does work. Question: Can you show me how to pass the object to create method WITH valid attributes? Thanks in advance soichi -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.