Skip to content
This repository was archived by the owner on Apr 29, 2022. It is now read-only.

Commit 0edcc10

Browse files
author
Anton Vorontsov
committed
Added a test for a stop consuming feature.
1 parent 83b21f4 commit 0edcc10

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/RabbitMQ.Client.Core.DependencyInjection.Tests/UnitTests/QueueServiceConsumerTests.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,58 @@ await consumer.HandleBasicDeliver(
6565
messageHandlingServiceMock.Verify(x => x.HandleMessageReceivingEvent(It.IsAny<BasicDeliverEventArgs>(), It.IsAny<IQueueService>()), Times.Exactly(numberOfMessages));
6666
}
6767

68+
[Theory]
69+
[InlineData(1)]
70+
[InlineData(5)]
71+
[InlineData(10)]
72+
[InlineData(15)]
73+
[InlineData(20)]
74+
[InlineData(25)]
75+
public async Task ShouldProperlyStopConsumingMessages(int numberOfMessages)
76+
{
77+
var channelMock = new Mock<IModel>();
78+
var connectionMock = new Mock<IConnection>();
79+
connectionMock.Setup(x => x.CreateModel())
80+
.Returns(channelMock.Object);
81+
82+
var connectionFactoryMock = new Mock<IRabbitMqConnectionFactory>();
83+
connectionFactoryMock.Setup(x => x.CreateRabbitMqConnection(It.IsAny<RabbitMqClientOptions>()))
84+
.Returns(connectionMock.Object);
85+
86+
var consumer = new AsyncEventingBasicConsumer(channelMock.Object);
87+
connectionFactoryMock.Setup(x => x.CreateConsumer(It.IsAny<IModel>()))
88+
.Returns(consumer);
89+
90+
var messageHandlingServiceMock = new Mock<IMessageHandlingService>();
91+
var queueService = CreateService(connectionFactoryMock.Object, messageHandlingServiceMock.Object);
92+
queueService.StartConsuming();
93+
for (var i = 1; i <= numberOfMessages; i++)
94+
{
95+
await consumer.HandleBasicDeliver(
96+
"1",
97+
(ulong)numberOfMessages,
98+
false,
99+
"exchange",
100+
"routing,key",
101+
null,
102+
new ReadOnlyMemory<byte>());
103+
}
104+
105+
messageHandlingServiceMock.Verify(x => x.HandleMessageReceivingEvent(It.IsAny<BasicDeliverEventArgs>(), It.IsAny<IQueueService>()), Times.Exactly(numberOfMessages));
106+
107+
queueService.StopConsuming();
108+
await consumer.HandleBasicDeliver(
109+
"1",
110+
0,
111+
false,
112+
"exchange",
113+
"routing,key",
114+
null,
115+
new ReadOnlyMemory<byte>());
116+
117+
messageHandlingServiceMock.Verify(x => x.HandleMessageReceivingEvent(It.IsAny<BasicDeliverEventArgs>(), It.IsAny<IQueueService>()), Times.Exactly(numberOfMessages));
118+
}
119+
68120
static IConsumingService CreateService(
69121
IRabbitMqConnectionFactory connectionFactory,
70122
IMessageHandlingService messageHandlingService)

0 commit comments

Comments
 (0)