<?php

use App\Jobs\EntraGroupSyncJob;
use App\Models\EntraGroupSyncRun;
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(EntraGroupSyncRun::class)
        ->and($run->tenant_id)->toBe($tenant->getKey())
        ->and($run->initiator_user_id)->toBe($user->getKey())
        ->and($run->selection_key)->toBe('groups-v1:all')
        ->and($run->status)->toBe(EntraGroupSyncRun::STATUS_PENDING);

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