require 'test_helper' module Admin class UserControllerTest < ActionDispatch::IntegrationTest def setup post admin_auth_url, params: { auth: { email: 'alan.admin@mailinator.com', password: 'password' } } end test "should get index" do get admin_users_url assert_response :success assert assigns :users end test "should get new" do get admin_new_user_url assert_response :success assert assigns :user end test "should fail create" do assert_difference("User.count", 0) do post admin_create_user_url, params: { user: { name: 'New User' } } end assert :success assert_match(/failed/i, session[:flash].values.join) end test "should post create" do assert_difference("ActionMailer::Base.deliveries.size", 1) do assert_difference("User.count", 1) do post admin_create_user_url, params: { user: { email: 'new.user@mailinator.com', name: 'New User', role: 'reviewer' } } end end assert_redirected_to admin_users_url end test "should get view" do user = users(:recruiter) get admin_user_url user.to_i assert_response :success assert_select 'p', user.name end test "should get edit" do user = users(:recruiter) get admin_edit_user_url user.to_i assert_response :success assert_select "[value=?]", user.name end test "should post update user" do user = users(:recruiter) post admin_update_user_url(user.to_i), params: { user: { name: 'new name' } } assert_redirected_to admin_user_path(user.to_i) get admin_user_url user.to_i assert_select 'p', 'new name' end test "should fail to update user" do user = users(:recruiter) post admin_update_user_url(user.to_i), params: { user: { name: nil } } assert :success assert_match(/failed/i, session[:flash].values.join) end end end