外部キーとテスト

■外部キーを含むテストの方法。フィクスチャファイルにはIDの値を書くのか?
なんの問題もなし。フィクスチャファイルにはIDを書けば、テストの方ではきちんと参照できる。
もちろん、テストでなくても、更新などは使える


【フィクスチャファイル】

                                                                                                                          • -
assert_equal iv.authentication.rank, @interviewer.authentication.rank
valid:
  id: 1
  family_name: Edogawa
  first_name: Konan
  login_name: kudo
  hashed_password: siniti
  authentication_id: 1
                                                                                                                          • -

【値の更新】
更新の場合はこうする。
×: @interviewer.authentication.id = 2。このように変えても反映されない。
○: fixtures :authentications。まず権限のデータを用いるので用意
  @next_authentication = Authentication.find(2)をsetupで実行
  @interviewer.authentication = @next_authenticationを更新前に書く



【こんなんもできる】

 
 post :update, :id => @valid_id, :interviewer => {:login_name => "SSD"} ,:temp => {:authentication => "Cheif", :interview_type1 => 1,:interview_type2 => 0,:interview_type3 => 0,:interview_type4 => 0}
    assert_response :redirect
    assert_redirected_to :action => 'list'
    assert_equal "SSD",assigns(:interviewer).login_name
    assert_equal "Cheif",assigns(:interviewer).authentication.rank  ←☆★


すごい。ちなみに、temp => {:authentication => "Cheif", のCheifをheifとかにすると、検証エラーに引っかかります。
これは、権限にないものを渡したから。これはauthenticationのフィクスチャにも書いてあるから、それを見に行く。
そう。外部キーの場合、そのフィクスチャを参照しにいっていることを忘れずに。
よって、フィクスチャにCheifもないなら、当然このままでもエラーになる。
※実際、この時にはフィクスチャにはAdministration,Cheifの2つがある。