ensureRange( 'deals', Carbon::parse('2024-02-15'), Carbon::parse('2024-04-03'), ); expect($created)->toBeGreaterThanOrEqual(3) ->and(partitionExists('deals_2024_02'))->toBeTrue() ->and(partitionExists('deals_2024_03'))->toBeTrue() ->and(partitionExists('deals_2024_04'))->toBeTrue(); }); test('ensureRange идемпотентна — повторный вызов не падает', function (): void { $manager = app(MonthlyPartitionManager::class); $manager->ensureRange('deals', Carbon::parse('2024-02-15'), Carbon::parse('2024-02-20')); $secondRun = $manager->ensureRange('deals', Carbon::parse('2024-02-15'), Carbon::parse('2024-02-20')); expect($secondRun)->toBe(0); // всё уже существует }); test('ensureRange отвергает неизвестную таблицу', function (): void { app(MonthlyPartitionManager::class)->ensureRange('orders', now(), now()); })->throws(InvalidArgumentException::class);