Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/models/message.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class Message < ApplicationRecord
"questionnaire.rsvp_confirmed" => "Questionnaire Status: RSVP Confirmed",
"questionnaire.rsvp_denied" => "Questionnaire Status: RSVP Denied",
"questionnaire.rsvp_reminder" => "Questionnaire: RSVP Reminder",
"questionnaire.checked-in" => "Questionnaire: Checked in",
"user.24hr_incomplete_application" => "User: Incomplete application (24 hours later)",
"bus_list.new_captain_confirmation" => "Bus List: New captain confirmation",
"bus_list.notes_update" => "Bus List: Updated notes (manually triggered)"
Expand Down
6 changes: 6 additions & 0 deletions app/models/questionnaire.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class Questionnaire < ApplicationRecord
after_create :queue_triggered_email_create
after_update :queue_triggered_email_update
after_update :queue_triggered_email_rsvp_reminder
after_update :queue_triggered_email_checked_in
after_save :update_school_questionnaire_count
after_destroy :update_school_questionnaire_count

Expand Down Expand Up @@ -257,6 +258,11 @@ def queue_triggered_email_create
Message.queue_for_trigger("questionnaire.#{acc_status}", user_id)
end

def queue_triggered_email_checked_in
return unless saved_change_to_checked_in_at && checked_in?
Message.queue_for_trigger("questionnaire.checked-in", user_id)
end

def queue_triggered_email_rsvp_reminder
return unless saved_change_to_acc_status? && acc_status == "accepted"

Expand Down
15 changes: 15 additions & 0 deletions test/models/questionnaire_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,21 @@ class QuestionnaireTest < ActiveSupport::TestCase
create(:questionnaire, acc_status: "pending")
end
end

should "send triggered email on checked in" do
create(:message, trigger: "questionnaire.checked-in")
assert_difference "enqueued_jobs.size", 1 do
create(:questionnaire, checked_in_at: Time.now)
end
end

should "not send triggered email on checked out" do
create(:message, trigger: "questionnaire.checked-in")
questionnaire = create(:questionnaire, checked_in_at: Time.now)
assert_difference "enqueued_jobs.size", 0 do
questionnaire.update_attribute(:checked_in_at, nil)
end
end
end

should "clean up bus-related fields when changing RSVP" do
Expand Down