Hey,
I’m having some problems testing the creation of objects with nested
objects. First of all, the test itself:
def test_should_create_user
assert_difference(‘User.count’) do
post :create, :user => {
:character => characters(:user_controller_test),
:username => ‘test123’,
:password => ‘test123’, :password_confirmation => ‘test123’,
:email => ‘[email protected]’ }
end
assert_redirected_to
end
My problem is, that :character has an object as value and converting it
to an arraay with .to_a doesn’t really help cause the create method in
the Users controller looks like:
@nationality = Nationality.find(params[:character][:nationality])
params[:character][:nationality] = @nationality
params[:character][:birthday] =
Date.strptime(params[:character][:birthday], ‘%d.%m.%Y’).to_s(:db)
@user = User.new(params[:user])
@character = Character.new(params[:character])
@user.character = @character
When I convert the characters(:user_controller_test) to an array it has
:nationality_id as a value but not :nationality as I’d have it when I
was using a normal form.
Does anyone know how I could solve that problem?
One more thing… I’ve got many nested objects in User that’s why I need
to create @nationality and @character in order to create @user and
actually save it. Is there a more convenient way of doing this than I do
it above?
Thanks