1414use PHPUnit \Framework \TestCase ;
1515use Psr \EventDispatcher \EventDispatcherInterface ;
1616use Psr \Log \LoggerInterface ;
17+ use Symfony \Bridge \PhpUnit \ClockMock ;
1718use Symfony \Component \Clock \MockClock ;
1819use Symfony \Component \EventDispatcher \EventDispatcher ;
1920use Symfony \Component \HttpKernel \DependencyInjection \ServicesResetter ;
4748use Symfony \Component \Messenger \Transport \Receiver \ReceiverInterface ;
4849use Symfony \Component \Messenger \Worker ;
4950use Symfony \Component \RateLimiter \RateLimiterFactory ;
51+ use Symfony \Component \RateLimiter \Reservation ;
5052use Symfony \Component \RateLimiter \Storage \InMemoryStorage ;
51- use Symfony \Contracts \Service \ResetInterface ;
5253
5354/**
5455 * @group time-sensitive
@@ -73,7 +74,7 @@ public function testWorkerDispatchTheReceivedMessage()
7374 return $ envelopes [] = $ envelope ;
7475 });
7576
76- $ dispatcher = new class () implements EventDispatcherInterface {
77+ $ dispatcher = new class implements EventDispatcherInterface {
7778 private StopWorkerOnMessageLimitListener $ listener ;
7879
7980 public function __construct ()
@@ -403,7 +404,7 @@ public function testWorkerLimitQueuesUnsupported()
403404
404405 $ worker = new Worker (['transport1 ' => $ receiver1 , 'transport2 ' => $ receiver2 ], $ bus , clock: new MockClock ());
405406 $ this ->expectException (RuntimeException::class);
406- $ this ->expectExceptionMessage (sprintf ('Receiver for "transport2" does not implement "%s". ' , QueueReceiverInterface::class));
407+ $ this ->expectExceptionMessage (\ sprintf ('Receiver for "transport2" does not implement "%s". ' , QueueReceiverInterface::class));
407408 $ worker ->run (['queues ' => ['foo ' ]]);
408409 }
409410
@@ -418,7 +419,7 @@ public function testWorkerMessageReceivedEventMutability()
418419 $ eventDispatcher = new EventDispatcher ();
419420 $ eventDispatcher ->addSubscriber (new StopWorkerOnMessageLimitListener (1 ));
420421
421- $ stamp = new class () implements StampInterface {
422+ $ stamp = new class implements StampInterface {
422423 };
423424 $ listener = function (WorkerMessageReceivedEvent $ event ) use ($ stamp ) {
424425 $ event ->addStamps ($ stamp );
@@ -438,21 +439,21 @@ public function testWorkerRateLimitMessages()
438439 $ envelope = [
439440 new Envelope (new DummyMessage ('message1 ' )),
440441 new Envelope (new DummyMessage ('message2 ' )),
442+ new Envelope (new DummyMessage ('message3 ' )),
443+ new Envelope (new DummyMessage ('message4 ' )),
441444 ];
442445 $ receiver = new DummyReceiver ([$ envelope ]);
443446
444447 $ bus = $ this ->createMock (MessageBusInterface::class);
445448 $ bus ->method ('dispatch ' )->willReturnArgument (0 );
446449
447450 $ eventDispatcher = new EventDispatcher ();
448- $ eventDispatcher ->addSubscriber (new StopWorkerOnMessageLimitListener (2 ));
451+ $ eventDispatcher ->addSubscriber (new StopWorkerOnMessageLimitListener (4 ));
449452
450453 $ rateLimitCount = 0 ;
451- $ listener = function (WorkerRateLimitedEvent $ event ) use (&$ rateLimitCount ) {
454+ $ eventDispatcher -> addListener (WorkerRateLimitedEvent::class, static function () use (&$ rateLimitCount ) {
452455 ++$ rateLimitCount ;
453- $ event ->getLimiter ()->reset (); // Reset limiter to continue test
454- };
455- $ eventDispatcher ->addListener (WorkerRateLimitedEvent::class, $ listener );
456+ });
456457
457458 $ rateLimitFactory = new RateLimiterFactory ([
458459 'id ' => 'bus ' ,
@@ -461,11 +462,14 @@ public function testWorkerRateLimitMessages()
461462 'interval ' => '1 minute ' ,
462463 ], new InMemoryStorage ());
463464
465+ ClockMock::register (Reservation::class);
466+ ClockMock::register (InMemoryStorage::class);
467+
464468 $ worker = new Worker (['bus ' => $ receiver ], $ bus , $ eventDispatcher , null , ['bus ' => $ rateLimitFactory ], new MockClock ());
465469 $ worker ->run ();
466470
467- $ this ->assertCount ( 2 , $ receiver ->getAcknowledgedEnvelopes ());
468- $ this ->assertEquals ( 1 , $ rateLimitCount );
471+ $ this ->assertSame ( 4 , $ receiver ->getAcknowledgeCount ());
472+ $ this ->assertSame ( 3 , $ rateLimitCount );
469473 }
470474
471475 public function testWorkerShouldLogOnStop ()
0 commit comments