require 'spec_helper' describe EmailBatch do describe 'all users' do let (:email_batch) { FactoryGirl.create(:email_batch) } before { pending } before(:each) do BatchMailer.deliveries.clear end it 'has test emails setup' do expect(email_batch.test_emails.present?).to be true expect(email_batch.pending?).to be true users = email_batch.test_users expect(email_batch.test_count).to eq(users.count) end end describe 'new musician' do let (:new_musician_batch) { FactoryGirl.create(:email_batch_new_musician) } before { pending } before(:each) do @u1 = FactoryGirl.create(:user, :lat => 37.791649, :lng => -122.394395, :email => 'jonathan@jamkazam.com', :subscribe_email => true, :created_at => Time.now - 3.weeks) @u2 = FactoryGirl.create(:user, :lat => 37.791649, :lng => -122.394395, :subscribe_email => true) @u3 = FactoryGirl.create(:user, :lat => 37.791649, :lng => -122.394395, :subscribe_email => false, :created_at => Time.now - 3.weeks) @u4 = FactoryGirl.create(:user, :lat => 37.791649, :lng => -122.394395, :subscribe_email => true, :created_at => Time.now - 3.weeks) end it 'find new musicians with good score' do new_musician_batch.fetch_recipients do |new_musicians| expect(new_musicians.count).to eq(2) num = (new_musicians.keys.map(&:id) - [@u1.id, @u4.id]).count expect(num).to eq(0) end end it 'has correct time since last batch' do tt = EmailBatchNewMusician.time_since_last_batch expect(tt.to_i).to be < (Time.now - 1.week).to_i end it 'cycles through states properly' do new_musician_batch.deliver_batch expect(UserMailer.deliveries.length).to eq(2) new_musician_batch.reload expect(new_musician_batch.delivered?).to eq(true) expect(new_musician_batch.sent_count).to eq(2) end end context 'user progress' do describe 'client not downloaded' do let(:client_notdl) { FactoryGirl.create(:email_batch_progression, :sub_type => :client_notdl) } 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) } it 'returns no users' do pending user_client_notdl expect(client_notdl.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) end it 'returns user second trigger' do end it 'returns user third trigger' do end it 'returns no users after third trigger' do end end end end