Sha256: 4e8d9884720fe89fe8a08a547ed6b20a2e4d669c182e747f215105f3eb034697

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

require 'helper'

class MyMailer < ActionMailer::Base
  def signup(email)
    mail :to => email, :subject => 'Delaying Emails', :from => 'delayedjob@example.com', :body => 'Delaying Emails Body'
  end
end

describe ActionMailer::Base do
  describe 'delay' do
    it 'enqueues a PerformableEmail job' do
      expect do
        job = MyMailer.delay.signup('john@example.com')
        expect(job.payload_object.class).to eq(Delayed::PerformableMailer)
        expect(job.payload_object.method_name).to eq(:signup)
        expect(job.payload_object.args).to eq(['john@example.com'])
      end.to change { Delayed::Job.count }.by(1)
    end
  end

  describe 'delay on a mail object' do
    it 'raises an exception' do
      expect do
        MyMailer.signup('john@example.com').delay
      end.to raise_error(RuntimeError)
    end
  end

  describe Delayed::PerformableMailer do
    describe 'perform' do
      it 'calls the method and #deliver on the mailer' do
        email = double('email', :deliver => true)
        mailer_class = double('MailerClass', :signup => email)
        mailer = Delayed::PerformableMailer.new(mailer_class, :signup, ['john@example.com'])

        expect(mailer_class).to receive(:signup).with('john@example.com')
        expect(email).to receive(:deliver)
        mailer.perform
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
delayed_job-4.1.8 spec/performable_mailer_spec.rb
delayed_job-4.1.8.beta1 spec/performable_mailer_spec.rb
delayed_job-4.1.7 spec/performable_mailer_spec.rb
delayed_job-4.1.7.beta1 spec/performable_mailer_spec.rb
delayed_job-4.1.6 spec/performable_mailer_spec.rb