28 lines
769 B
Ruby
28 lines
769 B
Ruby
|
require "rails_helper"
|
||
|
require "email/processor"
|
||
|
|
||
|
describe Email::Processor do
|
||
|
|
||
|
describe "rate limits" do
|
||
|
|
||
|
let(:mail) { "From: foo@bar.com\nTo: bar@foo.com\nSubject: FOO BAR\n\nFoo foo bar bar?" }
|
||
|
let(:limit_exceeded) { RateLimiter::LimitExceeded.new(10) }
|
||
|
|
||
|
before do
|
||
|
Email::Receiver.any_instance.expects(:process!).raises(limit_exceeded)
|
||
|
end
|
||
|
|
||
|
it "enqueues a background job by default" do
|
||
|
Jobs.expects(:enqueue).with(:process_email, mail: mail)
|
||
|
Email::Processor.process!(mail)
|
||
|
end
|
||
|
|
||
|
it "doesn't enqueue a background job when retry is disabled" do
|
||
|
Jobs.expects(:enqueue).with(:process_email, mail: mail).never
|
||
|
expect { Email::Processor.process!(mail, false) }.to raise_error(limit_exceeded)
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|