require "test_helper" class UsersSignupTest < ActionDispatch::IntegrationTest def setup ActionMailer::Base.deliveries.clear end test "invalid signup information" do get signup_path assert_no_difference "User.count" do post users_path, params: { user: { name: "", email: "user@invalid", password: "foo", password_confirmation: "bar" } } end assert_template "users/new" assert_select "div#error_explanation" assert_select "div.alert-danger" end test "valid signup information with account activation" do get signup_path assert_difference "User.count", 1 do post users_path, params: { user: { name: "Example User", email: "user@example.com", password: "password", password_confirmation: "password" } } end # follow_redirect! # assert_template "users/show" # assert_not flash.notice # assert is_logged_in? assert_equal 1, ActionMailer::Base.deliveries.size user = assigns(:user) assert_not user.activated? # 尝试激活前登陆 log_in_as(user) assert_not is_logged_in? # 激活令牌无效 get edit_account_activation_path("invalid token", email: user.email) assert_not is_logged_in? # 令牌有效,邮箱错误 get edit_account_activation_path(user.activation_token, email: "wrong") assert_not is_logged_in? # 令牌有效 get edit_account_activation_path(user.activation_token, email: user.email) assert user.reload.activated? follow_redirect! assert_template "users/show" assert is_logged_in? end end