From 6fa125538861a8a2cbf30b0d2104e4d32c91ae65 Mon Sep 17 00:00:00 2001 From: Budmin Date: Sat, 13 Dec 2025 13:19:21 -0500 Subject: [PATCH 1/4] disabled devise reconfirmable setting --- app/views/volunteers/edit.html.erb | 2 +- config/initializers/devise.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/config/initializers/devise.rb b/config/initializers/devise.rb index c98e2c0538..1a1e2461c0 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -197,7 +197,7 @@ # initial account confirmation) to be applied. Requires additional unconfirmed_email # db field (see migrations). Until confirmed, new email is stored in # unconfirmed_email column, and copied to email column on successful confirmation. - config.reconfirmable = true + config.reconfirmable = false # Defines which key will be used when confirming an account # config.confirmation_keys = [:email] From d3e41c7e558c08d7701b963aaf241a6e84dbfc3c Mon Sep 17 00:00:00 2001 From: Budmin Date: Sun, 21 Dec 2025 23:59:24 -0500 Subject: [PATCH 2/4] email confirmation is only skipped when updating volunteers --- app/controllers/volunteers_controller.rb | 3 +++ config/initializers/devise.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) 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/config/initializers/devise.rb b/config/initializers/devise.rb index 1a1e2461c0..c98e2c0538 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -197,7 +197,7 @@ # initial account confirmation) to be applied. Requires additional unconfirmed_email # db field (see migrations). Until confirmed, new email is stored in # unconfirmed_email column, and copied to email column on successful confirmation. - config.reconfirmable = false + config.reconfirmable = true # Defines which key will be used when confirming an account # config.confirmation_keys = [:email] From 57eeec6f986c99b6189b5df8ec3abc5a4807ad09 Mon Sep 17 00:00:00 2001 From: Budmin Date: Mon, 22 Dec 2025 00:00:06 -0500 Subject: [PATCH 3/4] update to tests --- spec/requests/volunteers_spec.rb | 17 ++++---- spec/system/volunteers/edit_spec.rb | 60 ++++++++++------------------- 2 files changed, 30 insertions(+), 47 deletions(-) diff --git a/spec/requests/volunteers_spec.rb b/spec/requests/volunteers_spec.rb index a1586e7eb8..ad1923390d 100644 --- a/spec/requests/volunteers_spec.rb +++ b/spec/requests/volunteers_spec.rb @@ -239,18 +239,21 @@ 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..7df2873ea0 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,28 @@ 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 - organization = create(:casa_org) + 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 +714,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 From f0005f08950eaa9afae8b479bac889a337934f44 Mon Sep 17 00:00:00 2001 From: Budmin Date: Mon, 22 Dec 2025 00:20:38 -0500 Subject: [PATCH 4/4] linting fixes --- spec/requests/volunteers_spec.rb | 1 - spec/system/volunteers/edit_spec.rb | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/spec/requests/volunteers_spec.rb b/spec/requests/volunteers_spec.rb index ad1923390d..4159b925d2 100644 --- a/spec/requests/volunteers_spec.rb +++ b/spec/requests/volunteers_spec.rb @@ -253,7 +253,6 @@ 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 7df2873ea0..33777935c7 100644 --- a/spec/system/volunteers/edit_spec.rb +++ b/spec/system/volunteers/edit_spec.rb @@ -130,7 +130,7 @@ describe "updating a volunteer's email" do context "with a valid email" do it "updates volunteer email without sending a confirmaiton email" do - organization =create(:casa_org) + organization = create(:casa_org) admin = create(:casa_admin, casa_org: organization) volunteer = create(:volunteer, :with_assigned_supervisor, casa_org: organization) @@ -150,7 +150,6 @@ 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