Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。
第10章 アカウント有効化とパスワード再設定 | Rails チュートリアル
第10章 アカウント有効化とパスワード再設定
アカウント周りの実装が学べます。
個人的にはメール送信のテストが良いと思いました。
また、チュートリアルにherokuいらんかもと思っていましたが、
メール送信できる感動を味わえるので、やっぱりやっといたほうがいいですね。
制限はあるもののメール送信機能がほぼ無料で使えるというのは、良いです。
メール送信テスト
clearしておく。
def setup ActionMailer::Base.deliveries.clear end
メール送信されたか確認。
assert_equal 1, ActionMailer::Base.deliveries.size
メール本文はmailerのテストで実施。assert_equalでチェック。
test "password_reset" do user = users(:michael) user.reset_token = User.new_token mail = UserMailer.password_reset(user) assert_equal "Password reset", mail.subject assert_equal [user.email], mail.to assert_equal ["noreply@example.com"], mail.from assert_match user.reset_token, mail.body.encoded assert_match CGI::escape(user.email), mail.body.encoded end
ActiveRecord::Base#toggle!
テストの中で一時的にある値を反転させる場合に使用。
user.toggle!(:activated)
assert_select 便利
input hiddenのvalueチェックはこう書ける。
assert_select "input[name=email][type=hidden][value=?]", user.email
メール送信config設定
config/environments/production.rb
config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp host = "your_heroku_app_name.herokuapp.com" config.action_mailer.default_url_options = { host: host } ActionMailer::Base.smtp_settings = { :address => 'smtp.sendgrid.net', :port => '587', :authentication => :plain, :user_name => ENV['SENDGRID_USERNAME'], :password => ENV['SENDGRID_PASSWORD'], :domain => 'heroku.com', :enable_starttls_auto => true }