How do we create functional test when the model has association

Hi all,

I want to test my controller, but unfortunately the model that has association to other model. I already have setup the parameter in the test code but encounter this error:   1) Error: test_create(SprintsControllerTest): ActiveRecord::StatementInvalid: SQLite3::SQLException: sprints.project_id may not be NULL: INSERT INTO "sprints" ("cancelled_date", "created_at", "end_date", "goal", "project_id", "retrospective", "start_date", "updated_at") VALUES (NULL, '2009-11-21 00:37:33.924413', '1901-01-01', 'Deliver usable product', NULL, NULL, '1900-01-01', '2009-11-21 00:37:33.924413')

This is how my test code looks like: assert_difference('Sprint.count') do       post(:create, :sprint => {:project_id => '9999', :goal => 'Deliver usable product',                                 :start_date => '1900-01-01', :end_date => '1901-01-01'})     end

Have I setup the test code wrong? What am I missing here?

Thanks for the insights.

This is how my test code looks like: assert_difference('Sprint.count') do post(:create, :sprint => {:project_id => '9999', :goal => 'Deliver usable product', :start_date => '1900-01-01', :end_date => '1901-01-01'}) end

Have I setup the test code wrong? What am I missing here?

That looks reasonable. What is in the controller / model ?

Fred

is it possible the form is passing the project_id parameter to the controller as something else? maybe as project ? submit the form from a browser and look at the development.log file and see what the HTTP request looks like, my guess is something like

Processing SprintsController#create (for 127.0.0.1 at .....) [POST] Parameters: {"action"=>"create", "authenticity_token"=>"....", "method"=>"post", "controller"=>"sprints", "sprint"=>{"goal"=>"...", "start_date"=>"...", "project"=>"..."} }

Note the key project vs project_id, just guessing here but a good place to start