From 78d35d969796965c68ca558402d3c063d02ea782 Mon Sep 17 00:00:00 2001 From: murphy-ariel Date: Mon, 17 Apr 2017 17:33:56 -0400 Subject: [PATCH] Intent reminder emails go only to relevant students Resolved #588 --- app/jobs/intent_reminder_job.rb | 4 +++- spec/jobs/intent_reminder_job_spec.rb | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/jobs/intent_reminder_job.rb b/app/jobs/intent_reminder_job.rb index f8d8a75c..94bfc99b 100644 --- a/app/jobs/intent_reminder_job.rb +++ b/app/jobs/intent_reminder_job.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true + # Job to send intent deadline reminders class IntentReminderJob < ApplicationJob queue_as :default @@ -7,7 +8,8 @@ class IntentReminderJob < ApplicationJob # # @param [Draw] the draw to send reminders in def perform(draw:) - draw.students.each { |s| send_email(s) } + students = draw.students.where(intent: %w(undeclared)) + students.each { |s| send_email(s) } end private diff --git a/spec/jobs/intent_reminder_job_spec.rb b/spec/jobs/intent_reminder_job_spec.rb index 1456779d..f2c4b4b8 100644 --- a/spec/jobs/intent_reminder_job_spec.rb +++ b/spec/jobs/intent_reminder_job_spec.rb @@ -1,11 +1,18 @@ # frozen_string_literal: true + require 'rails_helper' RSpec.describe IntentReminderJob, type: :job do let(:msg) { instance_spy(ActionMailer::MessageDelivery, deliver_later: 1) } - let(:user) { instance_spy('user') } - let(:draw) { instance_spy('draw', students: [user], intent_deadline: 'date') } - it 'sends intent reminders to all users in the draw' do + let(:draw) { instance_spy('draw', intent_deadline: 'date') } + let(:user) do + instance_spy('user').tap do |u| + allow(draw.students).to receive(:where) + .with(intent: %w(undeclared)).and_return([u]) + end + end + + it 'sends intent reminders to undeclared users in the draw' do allow(StudentMailer).to receive(:intent_reminder) .with(user: user).and_return(msg) described_class.perform_now(draw: draw)