create(); Config::set('directory_groups.schedule.enabled', true); Config::set('directory_groups.schedule.time_utc', '02:00'); CarbonImmutable::setTestNow(CarbonImmutable::parse('2026-01-11 02:00:00', 'UTC')); $legacyCountBefore = \App\Models\EntraGroupSyncRun::query() ->where('tenant_id', $tenant->getKey()) ->count(); Artisan::call('tenantpilot:directory-groups:dispatch', [ '--tenant' => [$tenant->tenant_id], ]); $slotKey = CarbonImmutable::now('UTC')->format('YmdHi').'Z'; $legacyCountAfter = \App\Models\EntraGroupSyncRun::query() ->where('tenant_id', $tenant->getKey()) ->count(); expect($legacyCountAfter)->toBe($legacyCountBefore); $opRun = OperationRun::query() ->where('tenant_id', $tenant->getKey()) ->where('type', 'directory_groups.sync') ->where('context->slot_key', $slotKey) ->first(); expect($opRun)->not->toBeNull(); expect($opRun?->user_id)->toBeNull(); Queue::assertPushed(EntraGroupSyncJob::class, function (EntraGroupSyncJob $job) use ($opRun): bool { return (int) ($job->operationRun?->getKey() ?? 0) === (int) $opRun->getKey(); }); CarbonImmutable::setTestNow(); });