spec/utils/db_producer_spec.rb in deimos-ruby-1.0.0.pre.beta25 vs spec/utils/db_producer_spec.rb in deimos-ruby-1.0.0.pre.beta26
- old
+ new
@@ -174,9 +174,34 @@
)])
expect(producer).to receive(:produce_messages).once
producer.process_topic('my-topic')
end
+ it 'should notify on error' do
+ messages = (1..4).map do |i|
+ Deimos::KafkaMessage.create!(
+ id: i,
+ topic: 'my-topic',
+ message: "mess#{i}",
+ partition_key: "key#{i}"
+ )
+ end
+
+ expect(Deimos::KafkaTopicInfo).to receive(:lock).
+ with('my-topic', 'abc').and_return(true)
+ expect(producer).to receive(:produce_messages).and_raise('OH NOES')
+ expect(producer).to receive(:retrieve_messages).and_return(messages)
+ expect(Deimos::KafkaTopicInfo).to receive(:register_error)
+
+ expect(Deimos::KafkaMessage.count).to eq(4)
+ Deimos.subscribe('db_producer.produce') do |event|
+ expect(event.payload[:exception_object].message).to eq('OH NOES')
+ expect(event.payload[:messages]).to eq(messages)
+ end
+ producer.process_topic('my-topic')
+ expect(Deimos::KafkaMessage.count).to eq(0)
+ end
+
end
example 'Full integration test' do
(1..4).each do |i|
(1..2).each do |j|