X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/5c3f549492d5ef9b6eed6ebb7a8e32a19103b616..e4c73424502c578773f1088237c604c709fcf959:/test/controllers/users_controller_test.rb diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 91ef7222f..03657d288 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -233,7 +233,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template "new" - assert_select "form > fieldset > div.standard-form-row > input.field_with_errors#user_email" + assert_select "form > div.form-group > input.is-invalid#user_email" end def test_save_duplicate_email @@ -262,7 +262,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template "new" - assert_select "form > fieldset > div.standard-form-row > input.field_with_errors#user_email" + assert_select "form > div.form-group > input.is-invalid#user_email" end def test_save_duplicate_email_uppercase @@ -291,7 +291,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template "new" - assert_select "form > fieldset > div.standard-form-row > input.field_with_errors#user_email" + assert_select "form > div.form-group > input.is-invalid#user_email" end def test_save_duplicate_name @@ -320,7 +320,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template "new" - assert_select "form > fieldset > div.standard-form-row > input.field_with_errors#user_display_name" + assert_select "form > div.form-group > input.is-invalid#user_display_name" end def test_save_duplicate_name_uppercase @@ -349,7 +349,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template "new" - assert_select "form > fieldset > div.standard-form-row > input.field_with_errors#user_display_name" + assert_select "form > div.form-group > input.is-invalid#user_display_name" end def test_save_blocked_domain @@ -422,7 +422,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest get logout_path assert_response :success assert_template :logout - assert_select "input[name=referer][value=?]", "" + assert_select "input[name=referer]:not([value])" end def test_logout_fallback_with_referer @@ -814,7 +814,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_difference "ActionMailer::Base.deliveries.size", 1 do perform_enqueued_jobs do - post user_forgot_password_path, :params => { :user => { :email => user.email } } + post user_forgot_password_path, :params => { :email => user.email } end end assert_response :redirect @@ -829,7 +829,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest # that has the same address in a different case assert_difference "ActionMailer::Base.deliveries.size", 1 do perform_enqueued_jobs do - post user_forgot_password_path, :params => { :user => { :email => user.email.upcase } } + post user_forgot_password_path, :params => { :email => user.email.upcase } end end assert_response :redirect @@ -844,7 +844,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest # for more than one user but not an exact match for either assert_no_difference "ActionMailer::Base.deliveries.size" do perform_enqueued_jobs do - post user_forgot_password_path, :params => { :user => { :email => user.email.titlecase } } + post user_forgot_password_path, :params => { :email => user.email.titlecase } end end assert_response :success @@ -856,7 +856,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest third_user = create(:user) assert_difference "ActionMailer::Base.deliveries.size", 1 do perform_enqueued_jobs do - post user_forgot_password_path, :params => { :user => { :email => third_user.email } } + post user_forgot_password_path, :params => { :email => third_user.email } end end assert_response :redirect @@ -871,7 +871,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest # same (case insensitively unique) address in a different case assert_difference "ActionMailer::Base.deliveries.size", 1 do perform_enqueued_jobs do - post user_forgot_password_path, :params => { :user => { :email => third_user.email.upcase } } + post user_forgot_password_path, :params => { :email => third_user.email.upcase } end end assert_response :redirect @@ -906,7 +906,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest post user_reset_password_path, :params => { :token => token.token, :user => { :pass_crypt => "new_password", :pass_crypt_confirmation => "different_password" } } assert_response :success assert_template :reset_password - assert_select "div#errorExplanation" + assert_select "div.invalid-feedback" # Test setting a new password post user_reset_password_path, :params => { :token => token.token, :user => { :pass_crypt => "new_password", :pass_crypt_confirmation => "new_password" } } @@ -953,11 +953,13 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user.description = "new description" user.preferred_editor = "default" post user_account_path(user), :params => { :user => user.attributes } + assert_response :redirect + assert_redirected_to user_account_url(user) + get user_account_path(user) assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row > div#user_description_container > div#user_description_content > textarea#user_description", user.description + assert_select "form#accountForm > div.form-group > div#user_description_container > div#user_description_content > textarea#user_description", user.description # Changing to a invalid editor should fail user.preferred_editor = "unknown" @@ -965,51 +967,61 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template :account assert_select ".notice", false - assert_select "div#errorExplanation" - assert_select "form#accountForm > fieldset > div.standard-form-row > select#user_preferred_editor > option[selected]", false + assert_select "form#accountForm > div.form-group > select#user_preferred_editor > option[selected]", false # Changing to a valid editor should work - user.preferred_editor = "potlatch2" + user.preferred_editor = "id" post user_account_path(user), :params => { :user => user.attributes } + assert_response :redirect + assert_redirected_to user_account_url(user) + get user_account_path(user) assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row > select#user_preferred_editor > option[selected][value=?]", "potlatch2" + assert_select "form#accountForm > div.form-group > select#user_preferred_editor > option[selected][value=?]", "id" # Changing to the default editor should work user.preferred_editor = "default" post user_account_path(user), :params => { :user => user.attributes } + assert_response :redirect + assert_redirected_to user_account_url(user) + get user_account_path(user) assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row > select#user_preferred_editor > option[selected]", false + assert_select "form#accountForm > div.form-group > select#user_preferred_editor > option[selected]", false # Changing to an uploaded image should work image = Rack::Test::UploadedFile.new("test/gpx/fixtures/a.gif", "image/gif") post user_account_path(user), :params => { :avatar_action => "new", :user => user.attributes.merge(:avatar => image) } + assert_response :redirect + assert_redirected_to user_account_url(user) + get user_account_path(user) assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row.accountImage input[name=avatar_action][checked][value=?]", "keep" + assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-check > input[name=avatar_action][checked][value=?]", "keep" # Changing to a gravatar image should work post user_account_path(user), :params => { :avatar_action => "gravatar", :user => user.attributes } + assert_response :redirect + assert_redirected_to user_account_url(user) + get user_account_path(user) assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row.accountImage input[name=avatar_action][checked][value=?]", "gravatar" + assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-group > div.form-check > input[name=avatar_action][checked][value=?]", "gravatar" # Removing the image should work post user_account_path(user), :params => { :avatar_action => "delete", :user => user.attributes } + assert_response :redirect + assert_redirected_to user_account_url(user) + get user_account_path(user) assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row.accountImage input[name=avatar_action][checked]", false + assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-check > input[name=avatar_action][checked]", false + assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-group > div.form-check > input[name=avatar_action][checked]", false # Adding external authentication should redirect to the auth provider post user_account_path(user), :params => { :user => user.attributes.merge(:auth_provider => "openid", :auth_uid => "gmail.com") } @@ -1022,8 +1034,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template :account assert_select ".notice", false - assert_select "div#errorExplanation" - assert_select "form#accountForm > fieldset > div.standard-form-row > input.field_with_errors#user_display_name" + assert_select "form#accountForm > div.form-group > input.is-invalid#user_display_name" # Changing name to one that exists should fail, regardless of case new_attributes = user.attributes.dup.merge(:display_name => create(:user).display_name.upcase) @@ -1031,17 +1042,18 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template :account assert_select ".notice", false - assert_select "div#errorExplanation" - assert_select "form#accountForm > fieldset > div.standard-form-row > input.field_with_errors#user_display_name" + assert_select "form#accountForm > div.form-group > input.is-invalid#user_display_name" # Changing name to one that doesn't exist should work new_attributes = user.attributes.dup.merge(:display_name => "new tester") post user_account_path(user), :params => { :user => new_attributes } + assert_response :redirect + assert_redirected_to user_account_url(:display_name => "new tester") + get user_account_path(:display_name => "new tester") assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row > input#user_display_name[value=?]", "new tester" + assert_select "form#accountForm > div.form-group > input#user_display_name[value=?]", "new tester" # Record the change of name user.display_name = "new tester" @@ -1056,8 +1068,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template :account assert_select ".notice", false - assert_select "div#errorExplanation" - assert_select "form#accountForm > fieldset > div.standard-form-row > input.field_with_errors#user_new_email" + assert_select "form#accountForm > div.form-group > input.is-invalid#user_new_email" # Changing email to one that exists should fail, regardless of case user.new_email = create(:user).email.upcase @@ -1069,8 +1080,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template :account assert_select ".notice", false - assert_select "div#errorExplanation" - assert_select "form#accountForm > fieldset > div.standard-form-row > input.field_with_errors#user_new_email" + assert_select "form#accountForm > div.form-group > input.is-invalid#user_new_email" # Changing email to one that doesn't exist should work user.new_email = "new_tester@example.com" @@ -1079,11 +1089,13 @@ class UsersControllerTest < ActionDispatch::IntegrationTest post user_account_path(user), :params => { :user => user.attributes } end end + assert_response :redirect + assert_redirected_to user_account_url(user) + get user_account_path(user) assert_response :success assert_template :account - assert_select "div#errorExplanation", false assert_select ".notice", /^User information updated successfully/ - assert_select "form#accountForm > fieldset > div.standard-form-row > input#user_new_email[value=?]", user.new_email + assert_select "form#accountForm > div.form-group > input#user_new_email[value=?]", user.new_email email = ActionMailer::Base.deliveries.first assert_equal 1, email.to.count assert_equal user.new_email, email.to.first