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|