require "spec_helper" describe DripCampaign do let(:user) { build_stubbed :user } let(:mail_message) { double(deliver!: true) } before(:each) do DummyMailer = double().as_null_object allow(DummyMailer).to receive(:send).and_return(mail_message) DripCampaign.mailer :dummy_mailer end describe ".send_email" do context "under normal circumstances" do it "delivers an email to the user" do binding.pry DripCampaign.send_email(:template1, user) expect(mail_message).to have_received(:deliver!).once end end context "if a user is already emailed" do it "does not deliver an email to the user" do DripCampaign.send_email(:template1, user) DripCampaign.send_email(:template2, user) expect(mail_message).to have_received(:deliver!).once end end end describe ".run" do before do DripCampaign.drip :day1 do send_email(:template1, FactoryGirl.build_stubbed(:user)) end end it "runs a designated drip" do DripCampaign.run expect(mail_message).to have_received(:deliver!).once end end end