[InlineData(false, 0)] // If requeue param to BasicNack is false, the message that is nacked should be removed from Rabbit public void Nacking_Message_Should_Not_Reenqueue_Brand_New_Message(bool requeue, int expectedMessageCount) { // arrange var node = new RabbitServer(); using (var model = new FakeModel(node)) { model.ExchangeDeclare("my_exchange", ExchangeType.Direct); model.QueueDeclare("my_queue"); model.ExchangeBind("my_queue", "my_exchange", null); var encodedMessage = Encoding.ASCII.GetBytes("hello world!"); model.BasicPublish("my_exchange", null, new BasicProperties(), encodedMessage); model.BasicConsume("my_queue", false, new EventingBasicConsumer(model)); // act var deliveryTag = model.WorkingMessages.First().Key; model.BasicNack(deliveryTag, false, requeue); // assert Assert.Equal(expectedMessageCount, node.Queues["my_queue"].Messages.Count); Assert.Equal(expectedMessageCount, model.WorkingMessages.Count); } }
[InlineData(false, 0)] // If requeue param to BasicNack is false, the message that is nacked should be removed from Rabbit public void Nacking_message_does_not_reenqueue_a_brand_new_message(bool requeue, int expectedMessageCount) { var server = new RabbitServer(); using (var model = new FakeModel(server)) { model.ExchangeDeclare("my_exchange", ExchangeType.Direct); model.QueueDeclare("my_queue"); model.ExchangeBind("my_queue", "my_exchange", null); var encodedMessage = Encoding.ASCII.GetBytes("hello world!"); model.BasicPublish("my_exchange", null, new BasicProperties(), encodedMessage); var consumer = new EventingBasicConsumer(model); model.BasicConsume("my_queue", false, consumer); Assert.True(consumer.IsRunning); var deliveryTag = model.WorkingMessagesForUnitTests.First().Key; model.BasicNack(deliveryTag, false, requeue); Assert.Equal(expectedMessageCount, server.Queues["my_queue"].Messages.Count); Assert.Equal(expectedMessageCount, model.WorkingMessagesForUnitTests.Count); } }