From fbb86dd9e711ea335e2c94e93cdac769846b2bef Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Sun, 18 May 2014 05:24:07 +0000 Subject: [PATCH] VRFS-736 tests passing and what-not --- .../jam_ruby/models/email_batch_periodic.rb | 4 ++ .../models/email_batch_progression.rb | 15 ++--- ruby/spec/jam_ruby/models/email_batch_spec.rb | 58 +++++++++++++------ 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/ruby/lib/jam_ruby/models/email_batch_periodic.rb b/ruby/lib/jam_ruby/models/email_batch_periodic.rb index 5b62b46c5..6a9c6fe3f 100644 --- a/ruby/lib/jam_ruby/models/email_batch_periodic.rb +++ b/ruby/lib/jam_ruby/models/email_batch_periodic.rb @@ -38,5 +38,9 @@ module JamRuby def deliver_batch_sets! end + def clear_batch_sets! + self.email_batch_sets.map(&:destroy) + end + end end diff --git a/ruby/lib/jam_ruby/models/email_batch_progression.rb b/ruby/lib/jam_ruby/models/email_batch_progression.rb index a989cc8dd..170bf6371 100644 --- a/ruby/lib/jam_ruby/models/email_batch_progression.rb +++ b/ruby/lib/jam_ruby/models/email_batch_progression.rb @@ -93,14 +93,7 @@ module JamRuby def trigger_date_constraint(trigger_idx, date_column) intervals = self.class.subtype_trigger_interval(self.sub_type) - case trigger_idx - when 1 - return ["#{date_column} >= ? AND #{date_column} < ?", - Time.now - intervals[0].days, - Time.now - intervals[1].days] - else - return ["#{date_column} < ?", Time.now - intervals[trigger_idx].days] - end + ["#{date_column} < ?", Time.now - intervals[trigger_idx].days] end def fetch_client_notdl(trigger_idx=0) @@ -118,13 +111,17 @@ module JamRuby fetched end + def make_set(uu, trigger_idx) + EmailBatchSet.progress_set(self, uu, trigger_idx) + end + def deliver_batch_sets! self.opt_in_count = 0 sent = 0 3.times do |trigger_idx| self.send("fetch_#{self.sub_type}", trigger_idx) do |users| users.each do |uu| - self.email_batch_sets << (bset = EmailBatchSet.progress_set(self, uu, trigger_idx)) + self.email_batch_sets << (bset = self.make_set(uu, trigger_idx)) ProgressMailer.send_reminder(bset).deliver sent += 1 end diff --git a/ruby/spec/jam_ruby/models/email_batch_spec.rb b/ruby/spec/jam_ruby/models/email_batch_spec.rb index 657bb49ca..e8a679eb4 100644 --- a/ruby/spec/jam_ruby/models/email_batch_spec.rb +++ b/ruby/spec/jam_ruby/models/email_batch_spec.rb @@ -2,6 +2,10 @@ require 'spec_helper' describe EmailBatch do + after(:each) do + Timecop.return + end + describe 'all users' do let (:email_batch) { FactoryGirl.create(:email_batch) } @@ -59,34 +63,52 @@ describe EmailBatch do context 'user progress' do describe 'client not downloaded' do - let(:client_notdl) { FactoryGirl.create(:email_batch_progression, :sub_type => :client_notdl) } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :client_notdl) + } + let(:user_) { FactoryGirl.create(:user) } + let(:user_trigger0) { + FactoryGirl.create(:user, + :created_at => Time.now - batchp.days_past_for_trigger_index(0).days) + } + let(:user_trigger1) { + FactoryGirl.create(:user, + :created_at => Time.now - batchp.days_past_for_trigger_index(1).days) + } + let(:user_trigger2) { + FactoryGirl.create(:user, + :created_at => Time.now - batchp.days_past_for_trigger_index(2).days) + } - let(:user_client_notdl) { FactoryGirl.create(:user) } - let(:user_client_notdl_trigger0) { - FactoryGirl.create(:user, - :created_at => Time.now - client_notdl.days_past_for_trigger_index(0).days) - } - let(:user_client_notdl_trigger1) { - FactoryGirl.create(:user, - :created_at => Time.now - client_notdl.days_past_for_trigger_index(1).days) - } - let(:user_client_notdl_trigger2) { - FactoryGirl.create(:user, - :created_at => Time.now - client_notdl.days_past_for_trigger_index(2).days) - } + after(:each) do + batchp.clear_batch_sets! + end it 'returns no users' do pending - user_client_notdl - expect(client_notdl.fetch_client_notdl.count).to eq(0) + user_ + expect(batchp.fetch_client_notdl.count).to eq(0) end it 'returns user first trigger' do - user_client_notdl_trigger0 - expect(client_notdl.fetch_client_notdl.count).to eq(1) + pending + user_ + user_trigger2 + expect(batchp.fetch_client_notdl.count).to eq(1) + batchp.make_set(user_trigger2, 0) + expect(batchp.fetch_client_notdl(0).count).to eq(0) end it 'returns user second trigger' do + user_ + batchp.make_set(user_trigger2, 0) + expect(batchp.fetch_client_notdl(0).count).to eq(0) + Timecop.travel(Time.now - batchp.days_past_for_trigger_index(1).days) + expect(batchp.fetch_client_notdl(1).count).to eq(1) + + # batchp.make_set(user_trigger0, 0) + # user_trigger1 + # expect(batchp.fetch_client_notdl(0).count).to eq(1) end it 'returns user third trigger' do