13
13
14
14
use PHPUnit \Framework \TestCase ;
15
15
use Symfony \Component \Console \Tester \CommandTester ;
16
- use Symfony \Component \Debug \Exception \FlattenException ;
17
16
use Symfony \Component \EventDispatcher \EventDispatcherInterface ;
18
17
use Symfony \Component \Messenger \Command \FailedMessagesRetryCommand ;
19
18
use Symfony \Component \Messenger \Envelope ;
20
19
use Symfony \Component \Messenger \MessageBusInterface ;
21
- use Symfony \Component \Messenger \Retry \RetryStrategyInterface ;
22
- use Symfony \Component \Messenger \Stamp \ReceivedStamp ;
23
- use Symfony \Component \Messenger \Stamp \RedeliveryStamp ;
24
20
use Symfony \Component \Messenger \Transport \Receiver \ListableReceiverInterface ;
21
+ use Symfony \Component \Messenger \Worker ;
25
22
26
23
class FailedMessagesRetryCommandTest extends TestCase
27
24
{
@@ -37,52 +34,16 @@ public function testBasicRun()
37
34
// the bus should be called in the worker
38
35
$ bus ->expects ($ this ->exactly (2 ))->method ('dispatch ' )->willReturn (new Envelope (new \stdClass ()));
39
36
40
- $ command = new FailedMessagesRetryCommand ('failure_receiver ' , $ receiver , $ bus , $ dispatcher );
37
+ $ command = new FailedMessagesRetryCommand (
38
+ 'failure_receiver ' ,
39
+ $ receiver ,
40
+ $ bus ,
41
+ $ dispatcher
42
+ );
41
43
42
44
$ tester = new CommandTester ($ command );
43
45
$ tester ->execute (['id ' => [10 , 12 ]]);
44
46
45
47
$ this ->assertStringContainsString ('[OK] ' , $ tester ->getDisplay ());
46
48
}
47
-
48
- public function testExceptionOnRetry ()
49
- {
50
- $ receiver = $ this ->createMock (ListableReceiverInterface::class);
51
- $ receiver ->expects ($ this ->once ())->method ('find ' )->with (10 )->willReturn (new Envelope (new \stdClass ()));
52
- // message will eventually be ack'ed in Worker
53
- $ receiver ->expects ($ this ->once ())->method ('ack ' );
54
-
55
- $ dispatcher = $ this ->createMock (EventDispatcherInterface::class);
56
- $ bus = $ this ->createMock (MessageBusInterface::class);
57
- // the bus should be called in the worker
58
- $ bus ->expects ($ this ->at (0 ))
59
- ->method ('dispatch ' )
60
- ->with ($ this ->callback (function (Envelope $ envelope ) {
61
- $ lastReceivedStamp = $ envelope ->last (ReceivedStamp::class);
62
-
63
- return $ lastReceivedStamp instanceof ReceivedStamp && \is_string ($ lastReceivedStamp ->getTransportName ());
64
- }))
65
- ->will ($ this ->throwException (new \Exception ('Mock test exception ' )));
66
-
67
- $ bus ->expects ($ this ->at (1 ))
68
- ->method ('dispatch ' )
69
- ->with ($ this ->callback (function (Envelope $ envelope ) {
70
- $ lastRedeliveryStamp = $ envelope ->last (RedeliveryStamp::class);
71
-
72
- return $ lastRedeliveryStamp instanceof RedeliveryStamp &&
73
- \is_string ($ lastRedeliveryStamp ->getExceptionMessage ()) &&
74
- $ lastRedeliveryStamp ->getFlattenException () instanceof FlattenException;
75
- }))
76
- ->willReturn (new Envelope (new \stdClass ()));
77
-
78
- $ retryStrategy = $ this ->createMock (RetryStrategyInterface::class);
79
- $ retryStrategy ->expects ($ this ->once ())->method ('isRetryable ' )->with ($ this ->isInstanceOf (Envelope::class))->willReturn (true );
80
-
81
- $ command = new FailedMessagesRetryCommand ('failure_receiver ' , $ receiver , $ bus , $ dispatcher , $ retryStrategy );
82
-
83
- $ tester = new CommandTester ($ command );
84
- $ tester ->execute (['id ' => [10 ]]);
85
-
86
- $ this ->assertStringContainsString ('[OK] ' , $ tester ->getDisplay ());
87
- }
88
49
}
0 commit comments