@@ -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