<?php

declare(strict_types=1);

namespace Tests\Feature\Pwa;

use App\Models\Company;
use App\Models\Plan;
use App\Models\Subscription;
use App\Models\User;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use PHPUnit\Framework\Attributes\Test;
use Spatie\Permission\Models\Role;
use Tests\TestCase;

/**
 * El locale de la empresa se guarda al estilo PHP ('es_CO'), pero la PWA lo pasa
 * a Intl.NumberFormat, que exige 'es-CO' y con guion bajo lanza RangeError: la
 * pantalla de errores de sincronización se quedaba en blanco. (PWA-008)
 */
class SettingsLocaleTest extends TestCase
{
    use DatabaseTransactions;

    #[Test]
    public function el_locale_sale_con_guion(): void
    {
        Role::firstOrCreate(['name' => 'collector', 'guard_name' => 'web']);
        $company = Company::factory()->create(['locale' => 'es_CO']);
        Subscription::factory()->create([
            'company_id' => $company->id,
            'plan_id' => Plan::factory()->create()->id,
            'status' => Subscription::STATUS_ACTIVE,
            'is_active' => true,
            'starts_at' => now()->subMonth(),
            'ends_at' => now()->addYear(),
        ]);
        $user = User::factory()->create(['company_id' => $company->id]);
        $user->assignRole('collector');

        $this->actingAs($user->fresh(), 'sanctum')
            ->getJson('/api/pwa/settings')
            ->assertOk()
            ->assertJsonPath('currency.locale', 'es-CO');
    }
}
