【140日目】【1日20分のRailsチュートリアル】【第10章】10章のまとめと演習の1.
前回からだいぶ間が空いてしまったけど復活。
今日は「10.4 最後に」から。
10.4 最後に
アカウント有効化機能とパスワード再設定機能が追加されたことで、ついにサンプルアプリケーションの登録、ログイン、ログアウト機能がすべて本格的に実装完了しました。
アプリケーションの本機能ではないけど、アカウント管理には必須な機能がこれで実装完了したのか…!
10.4.1 本章のまとめ
そういえばGitへのコミットは…!?って思いかけたけど、前回してました。そうだった。
10.5 演習
演習とチュートリアル本編の食い違いを避ける方法については、3.6のトピックブランチの演習に追加したメモをご覧ください。
演習用にブランチ作成しておきます。
$ git checkout account-activation-password-reset $ git checkout -b account-activation-password-reset-exercises
1.リスト10.57のテンプレートを埋めて、期限切れのパスワード再設定のブランチ (リスト10.52) の統合テストを作成してください (10.57 のコードにあるresponse.bodyは、そのページのHTML本文をすべて返すメソッドです)。
期限切れのテスト方法はさまざまですが、リスト10.57でおすすめした手法 (大文字小文字は区別されません) を使えば、レスポンスの本文に「expired」という語があるかどうかをチェックできます。
"Password reset has expired."
っていうエラーメッセージの全文でなくてもいいのかな。。。まぁ一部でいいか。
リスト10.57をほぼコピペして一部埋めてみた。
assert_match /expired/i, response.body
でIDEのワーニング出てるんだよね…合ってると思うんだけどな。。。
正規表現の/i
については下記記事が詳しかった。/i
が大文字小文字区別されないための記法か。
test/integration/password_resets_test.rb
test "expired token" do get new_password_reset_path post password_resets_path, password_reset: { email: @user.email } @user = assigns(:user) @user.update_attribute(:reset_sent_at, 3.hours.ago) patch password_reset_path(@user.reset_token), email: @user.email, user: { password: "foobar", password_confirmation: "foobar" } assert_response :redirect follow_redirect! assert_match /expired/i, response.body end
テストは通ったのでワーニングは無視します。気になるけど…
$ bundle exec rake test 46 tests, 213 assertions, 0 failures, 0 errors, 0 skips
今日の学習時間は【25分】。
次は「10.5 演習」の2.から。