テストしようとすると、ログイン後に(authlogicを使用して)新しいユーザーが正常に作成されます。ユーザーにいくつかの新しいフィールドを追加したので、ユーザーが正しく保存されていることを確認したいだけです。
問題は、有効なユーザーファクトリを作成しているにもかかわらず、その属性を取得してcreateメソッドに投稿しようとすると、パスワードとパスワードの確認が省略されることです。これは、authlogicがバックグラウンドで実行するセキュリティメソッドであると思います。これにより、検証が失敗し、テストが失敗します。
どうすればこの問題を回避できますか?手で属性を入力することもできますが、それはあまり乾燥していないようです。
context "on POST to :create" do
context "on posting a valid user" do
setup do
@user = Factory.build(:user)
post :create, :user => @user.attributes
end
should "be valid" do
assert @user.valid?
end
should_redirect_to("users sentences index page") { sentences_path() }
should "add user to the db" do
assert User.find_by_username(@user.username)
end
end
##User factory
Factory.define :user do |f|
f.username {Factory.next(:username) }
f.email { Factory.next(:email)}
f.password_confirmation "password"
f.password "password"
f.native_language {|nl| nl.association(:language)}
f.second_language {|nl| nl.association(:language)}
end