require 'test_helper' class UsersControllerTest < ActionController::TestCase include Devise::TestHelpers setup do request.env['devise.mapping'] = Devise.mappings[:user] @user = users(:erik) end test 'should render edit form' do sign_in @user get :edit assert_response :success assert_select 'form#edit_form' do assert_select '[action=?]', '/users' assert_select '[method=?]', 'post' end assert_select 'input', count: 15 assert_select 'label', count: 12 assert_select 'input[name="commit"]' do assert_select '[type=?]', 'submit' assert_select '[value=?]', 'Update' end assert_select 'a.btn', 'Back' end test 'should update user if password is correct' do sign_in @user assert_not_equal 'New Name', @user.name put :update, user: {name: 'New Name', current_password: 'correct'} @user.reload assert_equal 'New Name', @user.name assert_response :redirect assert_redirected_to controller: 'sidebar', action: 'search' end test 'should return error if password is incorrect' do sign_in @user put :update, user: {name: 'New Name', current_password: 'incorrect'} assert_response :error end test 'should create user if information is valid' do post :create, user: {email: 'user@example.com', name: 'User', password: 'correct', password_confirmation: 'correct'} assert_response :success end test 'should return error if information is invalid' do post :create, user: {email: 'user@example.com', name: 'User', password: 'correct', password_confirmation: 'incorrect'} assert_response :error end end