Aggiunge pulsante per fermare un invio email in corso.
CI / scan_ruby (push) Failing after 14m2s
CI / scan_js (push) Successful in 12m13s
CI / lint (push) Failing after 11m23s

Permette di annullare i destinatari ancora in coda mantenendo le email già inviate.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-18 00:49:57 +02:00
co-authored by Cursor
parent 765ee51eeb
commit d98c3e87a8
7 changed files with 70 additions and 1 deletions
@@ -184,4 +184,25 @@ class MailingsControllerTest < ActionDispatch::IntegrationTest
assert_equal "B {{societa}}", mailing.subject_b
assert_includes mailing.body_html_b, "Versione B dal template"
end
test "cancel stops pending recipients and keeps sent ones" do
login_as users(:admin)
follow_redirect! if response.redirect?
create_campaign_org(name: "Seconda societa", email: "seconda@example.com")
mailing = create_mailing(identity: @identity, audience: "to_send")
mailing.rebuild_recipients!
recipients = mailing.mailing_recipients.order(:id).to_a
assert recipients.size >= 2
recipients.first.update!(status: "sent", sent_at: Time.current)
mailing.update!(status: "sending", queued_at: Time.current, test_sent_at: Time.current, test_sent_to: "test@example.com")
post cancel_mailing_path(mailing, project_code: @project.code)
assert_redirected_to dashboard_mailings_path(project_code: @project.code)
assert_equal "cancelled", mailing.reload.status
assert_equal "sent", recipients.first.reload.status
assert_equal "skipped", recipients.second.reload.status
assert_equal "invio annullato", recipients.second.skip_reason
assert mailing.mailing_recipients.pending.none?
end
end