diff --git a/app/controllers/volunteers_controller.rb b/app/controllers/volunteers_controller.rb index 1cb691e115..bc931d59a6 100644 --- a/app/controllers/volunteers_controller.rb +++ b/app/controllers/volunteers_controller.rb @@ -61,6 +61,9 @@ def edit def update authorize @volunteer + + @volunteer.skip_reconfirmation! + if @volunteer.update(update_volunteer_params) notice = check_unconfirmed_email_notice(@volunteer) diff --git a/app/views/volunteers/edit.html.erb b/app/views/volunteers/edit.html.erb index f99011702a..4b91c646ad 100644 --- a/app/views/volunteers/edit.html.erb +++ b/app/views/volunteers/edit.html.erb @@ -30,7 +30,7 @@ type: "submit", class: "main-btn primary-btn btn-hover btn-sm my-1" ) do %> - Submit + Update <% end %> <% end %> diff --git a/spec/requests/volunteers_spec.rb b/spec/requests/volunteers_spec.rb index a1586e7eb8..4159b925d2 100644 --- a/spec/requests/volunteers_spec.rb +++ b/spec/requests/volunteers_spec.rb @@ -239,18 +239,20 @@ expect(volunteer.phone_number).to eq "15463457898" end - it "sends the volunteer a confirmation email upon email change" do + it "updates the volunteer email without sending a confirmation email" do + old_email = volunteer.email + new_email = "newemail@example.com" + patch volunteer_path(volunteer), params: { - volunteer: {email: "newemail@gmail.com"} + volunteer: {email: new_email} } expect(response).to have_http_status(:redirect) volunteer.reload - expect(volunteer.unconfirmed_email).to eq("newemail@gmail.com") - expect(ActionMailer::Base.deliveries.count).to eq(1) - expect(ActionMailer::Base.deliveries.first).to be_a(Mail::Message) - expect(ActionMailer::Base.deliveries.first.body.encoded) - .to match("You can confirm your account email through the link below:") + + expect(volunteer.email).to eq(new_email) + expect(volunteer.old_emails).to eq([old_email]) + expect(volunteer.unconfirmed_email).to eq(nil) end end diff --git a/spec/system/volunteers/edit_spec.rb b/spec/system/volunteers/edit_spec.rb index 5cc016aa7c..33777935c7 100644 --- a/spec/system/volunteers/edit_spec.rb +++ b/spec/system/volunteers/edit_spec.rb @@ -14,7 +14,7 @@ fill_in "volunteer_display_name", with: "Kamisato Ayato" fill_in "volunteer_phone_number", with: "+14163248967" fill_in "volunteer_date_of_birth", with: Date.new(1998, 7, 1) - click_on "Submit" + click_on "Update" expect(page).to have_text "Volunteer was successfully updated." end @@ -31,7 +31,7 @@ visit edit_volunteer_path(volunteer) fill_in "volunteer_phone_number", with: "+141632489" - click_on "Submit" + click_on "Update" expect(page).to have_text "Phone number must be 10 digits or 12 digits including country code (+1)" end @@ -44,7 +44,7 @@ visit edit_volunteer_path(volunteer) fill_in "volunteer_phone_number", with: "+141632180923" - click_on "Submit" + click_on "Update" expect(page).to have_text "Phone number must be 10 digits or 12 digits including country code (+1)" end @@ -58,7 +58,7 @@ visit edit_volunteer_path(volunteer) fill_in "volunteer_phone_number", with: "+141632u809o" - click_on "Submit" + click_on "Update" expect(page).to have_text "Phone number must be 10 digits or 12 digits including country code (+1)" end @@ -72,7 +72,7 @@ visit edit_volunteer_path(volunteer) fill_in "volunteer_phone_number", with: "+24163218092" - click_on "Submit" + click_on "Update" expect(page).to have_text "Phone number must be 10 digits or 12 digits including country code (+1)" end @@ -86,7 +86,7 @@ visit edit_volunteer_path(volunteer) fill_in "volunteer_date_of_birth", with: 5.days.from_now - click_on "Submit" + click_on "Update" expect(page).to have_text "Date of birth must be in the past." end @@ -104,7 +104,7 @@ fill_in "volunteer_display_name", with: "Kamisato Ayato" fill_in "volunteer_email", with: admin.email fill_in "volunteer_display_name", with: "Mickey Mouse" - click_on "Submit" + click_on "Update" expect(page).to have_text "already been taken" end @@ -120,7 +120,7 @@ fill_in "volunteer_email", with: "" fill_in "volunteer_display_name", with: "" - click_on "Submit" + click_on "Update" expect(page).to have_text "can't be blank" end @@ -129,48 +129,27 @@ describe "updating a volunteer's email" do context "with a valid email" do - it "sends volunteer a confirmation email and does not change the displayed email" do + it "updates volunteer email without sending a confirmaiton email" do organization = create(:casa_org) admin = create(:casa_admin, casa_org: organization) volunteer = create(:volunteer, :with_assigned_supervisor, casa_org: organization) - old_email = volunteer.email - - sign_in admin - visit edit_volunteer_path(volunteer) - - fill_in "Email", with: "newemail@example.com" - click_on "Submit" - volunteer.reload - - expect(ActionMailer::Base.deliveries.count).to eq(1) - expect(ActionMailer::Base.deliveries.first).to be_a(Mail::Message) - expect(ActionMailer::Base.deliveries.first.body.encoded) - .to match("You can confirm your account email through the link below:") - - expect(page).to have_text "Volunteer was successfully updated. Confirmation Email Sent." - expect(page).to have_field("Email", with: old_email) - expect(volunteer.unconfirmed_email).to eq("newemail@example.com") - end - it "succesfully displays the new email once the user confirms" do - organization = create(:casa_org) - admin = create(:casa_admin, casa_org: organization) - volunteer = create(:volunteer, :with_assigned_supervisor, casa_org: organization) old_email = volunteer.email + new_email = "newemail@example.com" sign_in admin visit edit_volunteer_path(volunteer) - fill_in "Email", with: "newemail@example.com" - click_on "Submit" - volunteer.reload - volunteer.confirm + fill_in "Email", with: new_email + click_on "Update" - visit edit_volunteer_path(volunteer) + volunteer.reload - expect(page).to have_field("Email", with: "newemail@example.com") - expect(page).not_to have_field("Email", with: old_email) + expect(page).to have_text "Volunteer was successfully updated." + expect(page).to have_field("Email", with: new_email) + expect(volunteer.email).to eq(new_email) expect(volunteer.old_emails).to eq([old_email]) + expect(volunteer.unconfirmed_email).to eq(nil) end end end @@ -734,7 +713,7 @@ visit edit_volunteer_path(volunteer) fill_in "volunteer_address_attributes_content", with: "123 Main St" - click_on "Submit" + click_on "Update" expect(page).to have_text "Volunteer was successfully updated." expect(page).to have_selector("input[value='123 Main St']") end