12
12
namespace Symfony \Component \Messenger \Tests \Command ;
13
13
14
14
use PHPUnit \Framework \TestCase ;
15
+ use Symfony \Component \Console \Application ;
16
+ use Symfony \Component \Console \Tester \CommandTester ;
17
+ use Symfony \Component \DependencyInjection \ContainerInterface ;
15
18
use Symfony \Component \DependencyInjection \ServiceLocator ;
16
19
use Symfony \Component \Messenger \Command \ConsumeMessagesCommand ;
20
+ use Symfony \Component \Messenger \Command \FailedMessagesRemoveCommand ;
21
+ use Symfony \Component \Messenger \Envelope ;
22
+ use Symfony \Component \Messenger \MessageBusInterface ;
23
+ use Symfony \Component \Messenger \RoutableMessageBus ;
24
+ use Symfony \Component \Messenger \Stamp \BusNameStamp ;
25
+ use Symfony \Component \Messenger \Transport \Receiver \ListableReceiverInterface ;
26
+ use Symfony \Component \Messenger \Transport \Receiver \ReceiverInterface ;
17
27
18
28
class ConsumeMessagesCommandTest extends TestCase
19
29
{
@@ -24,4 +34,69 @@ public function testConfigurationWithDefaultReceiver()
24
34
$ this ->assertFalse ($ inputArgument ->isRequired ());
25
35
$ this ->assertSame (['amqp ' ], $ inputArgument ->getDefault ());
26
36
}
37
+
38
+ public function testBasicRun ()
39
+ {
40
+ $ envelope = new Envelope (new \stdClass (), [new BusNameStamp ('dummy-bus ' )]);
41
+
42
+ $ receiver = $ this ->createMock (ReceiverInterface::class);
43
+ $ receiver ->expects ($ this ->once ())->method ('get ' )->willReturn ([$ envelope ]);
44
+
45
+ $ receiverLocator = $ this ->createMock (ContainerInterface::class);
46
+ $ receiverLocator ->expects ($ this ->once ())->method ('has ' )->with ('dummy-receiver ' )->willReturn (true );
47
+ $ receiverLocator ->expects ($ this ->once ())->method ('get ' )->with ('dummy-receiver ' )->willReturn ($ receiver );
48
+
49
+ $ bus = $ this ->createMock (MessageBusInterface::class);
50
+ $ bus ->expects ($ this ->once ())->method ('dispatch ' );
51
+
52
+ $ busLocator = $ this ->createMock (ContainerInterface::class);
53
+ $ busLocator ->expects ($ this ->once ())->method ('has ' )->with ('dummy-bus ' )->willReturn (true );
54
+ $ busLocator ->expects ($ this ->once ())->method ('get ' )->with ('dummy-bus ' )->willReturn ($ bus );
55
+
56
+ $ command = new ConsumeMessagesCommand (new RoutableMessageBus ($ busLocator ), $ receiverLocator );
57
+
58
+ $ application = new Application ();
59
+ $ application ->add ($ command );
60
+ $ tester = new CommandTester ($ application ->get ('messenger:consume ' ));
61
+ $ tester ->execute ([
62
+ 'receivers ' => ['dummy-receiver ' ],
63
+ '--limit ' => 1 ,
64
+ ]);
65
+
66
+ $ this ->assertSame (0 , $ tester ->getStatusCode ());
67
+ $ this ->assertContains ('[OK] Consuming messages from transports "dummy-receiver" ' , $ tester ->getDisplay ());
68
+ }
69
+
70
+ public function testRunWithBusOption ()
71
+ {
72
+ $ envelope = new Envelope (new \stdClass ());
73
+
74
+ $ receiver = $ this ->createMock (ReceiverInterface::class);
75
+ $ receiver ->expects ($ this ->once ())->method ('get ' )->willReturn ([$ envelope ]);
76
+
77
+ $ receiverLocator = $ this ->createMock (ContainerInterface::class);
78
+ $ receiverLocator ->expects ($ this ->once ())->method ('has ' )->with ('dummy-receiver ' )->willReturn (true );
79
+ $ receiverLocator ->expects ($ this ->once ())->method ('get ' )->with ('dummy-receiver ' )->willReturn ($ receiver );
80
+
81
+ $ bus = $ this ->createMock (MessageBusInterface::class);
82
+ $ bus ->expects ($ this ->once ())->method ('dispatch ' );
83
+
84
+ $ busLocator = $ this ->createMock (ContainerInterface::class);
85
+ $ busLocator ->expects ($ this ->once ())->method ('has ' )->with ('dummy-bus ' )->willReturn (true );
86
+ $ busLocator ->expects ($ this ->once ())->method ('get ' )->with ('dummy-bus ' )->willReturn ($ bus );
87
+
88
+ $ command = new ConsumeMessagesCommand (new RoutableMessageBus ($ busLocator ), $ receiverLocator );
89
+
90
+ $ application = new Application ();
91
+ $ application ->add ($ command );
92
+ $ tester = new CommandTester ($ application ->get ('messenger:consume ' ));
93
+ $ tester ->execute ([
94
+ 'receivers ' => ['dummy-receiver ' ],
95
+ '--bus ' => 'dummy-bus ' ,
96
+ '--limit ' => 1 ,
97
+ ]);
98
+
99
+ $ this ->assertSame (0 , $ tester ->getStatusCode ());
100
+ $ this ->assertContains ('[OK] Consuming messages from transports "dummy-receiver" ' , $ tester ->getDisplay ());
101
+ }
27
102
}
0 commit comments