|
13 | 13 |
|
14 | 14 | use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage;
|
15 | 15 | use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummySchedule;
|
| 16 | +use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummyTask; |
16 | 17 | use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage;
|
17 | 18 | use Symfony\Component\Clock\MockClock;
|
18 | 19 | use Symfony\Component\HttpKernel\KernelInterface;
|
| 20 | +use Symfony\Component\Messenger\MessageBusInterface; |
| 21 | +use Symfony\Component\Messenger\Stamp\ReceivedStamp; |
19 | 22 | use Symfony\Component\Scheduler\Messenger\SchedulerTransport;
|
20 | 23 | use Symfony\Component\Scheduler\RecurringMessage;
|
21 | 24 |
|
@@ -54,6 +57,36 @@ public function testScheduler()
|
54 | 57 | $this->assertSame([$foo, $bar, $foo, $bar], $fetchMessages(600.0));
|
55 | 58 | }
|
56 | 59 |
|
| 60 | + public function testAutoconfiguredScheduler() |
| 61 | + { |
| 62 | + $container = self::getContainer(); |
| 63 | + $container->set('clock', $clock = new MockClock('2023-10-26T08:59:59Z')); |
| 64 | + |
| 65 | + $this->assertTrue($container->get('receivers')->has('scheduler_dummy_task')); |
| 66 | + $this->assertInstanceOf(SchedulerTransport::class, $cron = $container->get('receivers')->get('scheduler_dummy_task')); |
| 67 | + $bus = $container->get(MessageBusInterface::class); |
| 68 | + |
| 69 | + $getCalls = static function (float $sleep) use ($clock, $cron, $bus) { |
| 70 | + DummyTask::$calls = []; |
| 71 | + $clock->sleep($sleep); |
| 72 | + foreach ($cron->get() as $message) { |
| 73 | + $bus->dispatch($message->with(new ReceivedStamp('scheduler_dummy_task'))); |
| 74 | + } |
| 75 | + |
| 76 | + return DummyTask::$calls; |
| 77 | + }; |
| 78 | + |
| 79 | + $this->assertSame([], $getCalls(0)); |
| 80 | + $this->assertSame(['__invoke' => [[1]], 'method2' => [['2']], 'attributesOnMethod' => [['5', 6]]], $getCalls(1)); |
| 81 | + $this->assertSame(['__invoke' => [[3]]], $getCalls(5)); |
| 82 | + $this->assertSame(['__invoke' => [[3]]], $getCalls(5)); |
| 83 | + $calls = $getCalls(3595); |
| 84 | + $this->assertCount(779, $calls['__invoke']); |
| 85 | + $this->assertSame([['2']], $calls['method2']); |
| 86 | + $this->assertSame([['4']], $calls['method4']); |
| 87 | + $this->assertSame([['5', 6], ['7', 8]], $calls['attributesOnMethod']); |
| 88 | + } |
| 89 | + |
57 | 90 | protected static function createKernel(array $options = []): KernelInterface
|
58 | 91 | {
|
59 | 92 | return parent::createKernel(['test_case' => 'Scheduler'] + $options);
|
|
0 commit comments