|
27 | 27 | use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
28 | 28 | use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
|
29 | 29 | use Symfony\Component\Messenger\Worker;
|
| 30 | +use Symfony\Component\Messenger\Worker\StopWhenMessageCountIsExceededWorker; |
30 | 31 | use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
31 | 32 |
|
32 | 33 | /**
|
@@ -361,6 +362,30 @@ public function testWorkerWithMultipleReceivers()
|
361 | 362 | // make sure they were processed in the correct order
|
362 | 363 | $this->assertSame([$envelope1, $envelope2, $envelope3, $envelope4, $envelope5, $envelope6], $processedEnvelopes);
|
363 | 364 | }
|
| 365 | + |
| 366 | + public function testWorkerWithDecorator() |
| 367 | + { |
| 368 | + $envelope1 = new Envelope(new DummyMessage('message1')); |
| 369 | + $envelope2 = new Envelope(new DummyMessage('message2')); |
| 370 | + $envelope3 = new Envelope(new DummyMessage('message3')); |
| 371 | + |
| 372 | + $receiver = new DummyReceiver([ |
| 373 | + [$envelope1, $envelope2, $envelope3], |
| 374 | + ]); |
| 375 | + |
| 376 | + $bus = $this->getMockBuilder(MessageBusInterface::class)->getMock(); |
| 377 | + |
| 378 | + $worker = new Worker([$receiver], $bus); |
| 379 | + $workerWithDecorator = new StopWhenMessageCountIsExceededWorker($worker, 2); |
| 380 | + $processedEnvelopes = []; |
| 381 | + $workerWithDecorator->run([], function (?Envelope $envelope) use ($worker, &$processedEnvelopes) { |
| 382 | + if (null !== $envelope) { |
| 383 | + $processedEnvelopes[] = $envelope; |
| 384 | + } |
| 385 | + }); |
| 386 | + |
| 387 | + $this->assertSame([$envelope1, $envelope2], $processedEnvelopes); |
| 388 | + } |
364 | 389 | }
|
365 | 390 |
|
366 | 391 | class DummyReceiver implements ReceiverInterface
|
|
0 commit comments