@@ -63,7 +63,7 @@ public function testRecoverableStrategyCausesRetry()
63
63
$ senderLocator ->expects ($ this ->once ())->method ('has ' )->willReturn (true );
64
64
$ senderLocator ->expects ($ this ->once ())->method ('get ' )->willReturn ($ sender );
65
65
$ retryStategy = $ this ->createMock (RetryStrategyInterface::class);
66
- $ retryStategy ->expects ($ this ->never ())->method ('isRetryable ' );
66
+ $ retryStategy ->expects ($ this ->once ())->method ('isRetryable ' )-> willReturn ( true );
67
67
$ retryStategy ->expects ($ this ->once ())->method ('getWaitingTime ' )->willReturn (1000 );
68
68
$ retryStrategyLocator = $ this ->createMock (ContainerInterface::class);
69
69
$ retryStrategyLocator ->expects ($ this ->once ())->method ('has ' )->willReturn (true );
@@ -78,6 +78,27 @@ public function testRecoverableStrategyCausesRetry()
78
78
$ listener ->onMessageFailed ($ event );
79
79
}
80
80
81
+ public function testRetryIsOnlyAllowedWhenPermittedByRetryStrategy ()
82
+ {
83
+ $ senderLocator = $ this ->createMock (ContainerInterface::class);
84
+ $ senderLocator ->expects ($ this ->never ())->method ('has ' );
85
+ $ senderLocator ->expects ($ this ->never ())->method ('get ' );
86
+ $ retryStrategy = $ this ->createMock (RetryStrategyInterface::class);
87
+ $ retryStrategy ->expects ($ this ->once ())->method ('isRetryable ' )->willReturn (false );
88
+ $ retryStrategy ->expects ($ this ->never ())->method ('getWaitingTime ' );
89
+ $ retryStrategyLocator = $ this ->createMock (ContainerInterface::class);
90
+ $ retryStrategyLocator ->expects ($ this ->once ())->method ('has ' )->willReturn (true );
91
+ $ retryStrategyLocator ->expects ($ this ->once ())->method ('get ' )->willReturn ($ retryStrategy );
92
+
93
+ $ listener = new SendFailedMessageForRetryListener ($ senderLocator , $ retryStrategyLocator );
94
+
95
+ $ exception = new RecoverableMessageHandlingException ('retry ' );
96
+ $ envelope = new Envelope (new \stdClass ());
97
+ $ event = new WorkerMessageFailedEvent ($ envelope , 'my_receiver ' , $ exception );
98
+
99
+ $ listener ->onMessageFailed ($ event );
100
+ }
101
+
81
102
public function testEnvelopeIsSentToTransportOnRetry ()
82
103
{
83
104
$ exception = new \Exception ('no! ' );
0 commit comments