<?php

use App\Jobs\EntraGroupSyncJob;
use App\Models\OperationRun;
use App\Services\Directory\EntraGroupSyncService;
use Illuminate\Support\Facades\Queue;

it('starts a manual group sync by creating a run and dispatching a job', function () {
    Queue::fake();

    [$user, $tenant] = createUserWithTenant(role: 'owner');

    $service = app(EntraGroupSyncService::class);

    $run = $service->startManualSync($tenant, $user);

    expect($run)->toBeInstanceOf(OperationRun::class)
        ->and($run->tenant_id)->toBe($tenant->getKey())
        ->and($run->user_id)->toBe($user->getKey())
        ->and($run->type)->toBe('entra_group_sync')
        ->and($run->status)->toBe('queued')
        ->and($run->context['selection_key'] ?? null)->toBe('groups-v1:all');

    Queue::assertPushed(EntraGroupSyncJob::class);
});
