create([ 'tenant_id' => $tenant->getKey(), 'last_seen_at' => now('UTC')->subDays(91), ]); $newGroup = EntraGroup::factory()->create([ 'tenant_id' => $tenant->getKey(), 'last_seen_at' => now('UTC')->subDays(10), ]); $mock = \Mockery::mock(GraphClientInterface::class); $mock->shouldReceive('request') ->once() ->andReturn(new GraphResponse(success: true, data: ['value' => []], status: 200)); app()->instance(GraphClientInterface::class, $mock); /** @var OperationRunService $opService */ $opService = app(OperationRunService::class); $opRun = $opService->ensureRun( tenant: $tenant, type: 'directory_groups.sync', inputs: ['selection_key' => 'groups-v1:all'], initiator: $user, ); $job = new EntraGroupSyncJob( tenantId: (int) $tenant->getKey(), selectionKey: 'groups-v1:all', slotKey: null, runId: null, operationRun: $opRun, ); $job->handle(app(EntraGroupSyncService::class), app(AuditLogger::class)); expect(EntraGroup::query()->whereKey($oldGroup->getKey())->exists())->toBeFalse(); expect(EntraGroup::query()->whereKey($newGroup->getKey())->exists())->toBeTrue(); });