spec/sneakers/worker_handlers_spec.rb in sneakers-1.0.3 vs spec/sneakers/worker_handlers_spec.rb in sneakers-1.0.4
- old
+ new
@@ -101,10 +101,35 @@
end
describe 'Maxretry' do
let(:max_retries) { nil }
+ let(:props_with_x_death_count) {
+ {
+ :headers => {
+ "x-death" => [
+ {
+ "count" => 3,
+ "reason" => "expired",
+ "queue" => "downloads-retry",
+ "time" => Time.now,
+ "exchange" => "RawMail-retry",
+ "routing-keys" => ["RawMail"]
+ },
+ {
+ "count" => 3,
+ "reason" => "rejected",
+ "queue" => "downloads",
+ "time" => Time.now,
+ "exchange" => "",
+ "routing-keys" => ["RawMail"]
+ }
+ ]
+ },
+ :delivery_mode => 1
+ }
+ }
before(:each) do
@opts = {
:exchange => 'sneakers',
:durable => 'true',
@@ -222,9 +247,24 @@
@error_exchange.called.must_equal(true)
@error_exchange.opts.must_equal({ :routing_key => '#' })
data = JSON.parse(@error_exchange.data)
data['error'].must_equal('reject')
data['num_attempts'].must_equal(2)
+ data['payload'].must_equal(Base64.encode64(:reject.to_s))
+ Time.parse(data['failed_at']).wont_be_nil
+ end
+
+ it 'counts the number of attempts using the count key' do
+ mock(@header).routing_key { '#' }
+ mock(channel).acknowledge(37, false)
+
+ @error_exchange.extend MockPublish
+ worker.do_work(@header, props_with_x_death_count, :reject, @handler)
+ @error_exchange.called.must_equal(true)
+ @error_exchange.opts.must_equal({ :routing_key => '#' })
+ data = JSON.parse(@error_exchange.data)
+ data['error'].must_equal('reject')
+ data['num_attempts'].must_equal(4)
data['payload'].must_equal(Base64.encode64(:reject.to_s))
Time.parse(data['failed_at']).wont_be_nil
end
end