Where do you define valid attributes?

Have you tried post :plan => Factory(:plan)?
Am 12.11.2012 10:19 schrieb "Soichi Ishida" <li...@ruby-forum.com>:

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

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


Reply via email to