<?php

it('documents the app local sail compose bridge in the canonical env example', function (): void {
    $envExample = file_get_contents(base_path('.env.example'));

    expect($envExample)->toContain('SAIL_FILES=../../docker-compose.yml')
        ->toContain('TENANTATLAS_REPO_ROOT=../..');
});

it('provides an executable root sail delegator that enters apps platform', function (): void {
    $scriptPath = repo_path('scripts/platform-sail');
    $scriptContents = file_get_contents($scriptPath);

    expect(is_file($scriptPath))->toBeTrue()
        ->and(is_executable($scriptPath))->toBeTrue()
        ->and($scriptContents)->toContain('APP_DIR')
        ->toContain('apps/platform')
        ->toContain('exec ./vendor/bin/sail "$@"')
        ->not->toContain('COMPOSE_PROJECT_NAME');
});

it('keeps the repo root compose file pointed at the relocated app', function (): void {
    $compose = file_get_contents(repo_path('docker-compose.yml'));

    expect($compose)->toContain("./apps/platform/vendor/laravel/sail/runtimes/8.4")
        ->toContain("./apps/platform:/var/www/html")
        ->toContain(".:/var/www/repo:ro")
        ->toContain('TENANTATLAS_REPO_ROOT: /var/www/repo');
});

it('keeps the local queue service in code-reloading listen mode', function (): void {
    $compose = file_get_contents(repo_path('docker-compose.yml'));

    expect($compose)->toContain('command: php artisan queue:listen --tries=3 --timeout=300 --sleep=3')
        ->not->toContain('command: php artisan queue:work --tries=3 --timeout=300 --sleep=3 --max-jobs=1000');
});
