72 lines
2.4 KiB
PHP
72 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use App\Models\Modello;
|
|
use App\Models\Sistema;
|
|
use Database\Seeders\CatalogoSeeder;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Tests\TestCase;
|
|
|
|
class CatalogoApiTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
Storage::fake('public');
|
|
}
|
|
|
|
public function test_il_seeder_carica_anagrafica_pvc_con_icone(): void
|
|
{
|
|
$this->seed(CatalogoSeeder::class);
|
|
|
|
$pvc = Sistema::where('codice', 'pvc')->firstOrFail();
|
|
$this->assertSame(30, $pvc->modelli()->count());
|
|
|
|
$finestra = $pvc->modelli()->where('codice', 'finestra_1_anta')->firstOrFail();
|
|
$this->assertSame('FINESTRA 1 ANTA, A/R', $finestra->descrizione);
|
|
Storage::disk('public')->assertExists($finestra->icona);
|
|
|
|
// Modelli presenti solo nell'Excel: senza asset 3D, quindi disattivi.
|
|
$this->assertFalse($pvc->modelli()->where('codice', 'scorrevole_sf_3_ante')->value('attivo'));
|
|
}
|
|
|
|
public function test_il_seeder_non_sovrascrive_le_modifiche_admin(): void
|
|
{
|
|
$this->seed(CatalogoSeeder::class);
|
|
Modello::where('codice', 'bilico')->update(['nome' => 'Bilico modificato']);
|
|
|
|
$this->seed(CatalogoSeeder::class);
|
|
|
|
$this->assertSame('Bilico modificato', Modello::where('codice', 'bilico')->value('nome'));
|
|
$this->assertSame(30, Modello::count());
|
|
}
|
|
|
|
public function test_api_sistemi_espone_solo_modelli_attivi_in_ordine(): void
|
|
{
|
|
$this->seed(CatalogoSeeder::class);
|
|
Sistema::create(['codice' => 'legno', 'nome' => 'Legno', 'attivo' => false]);
|
|
|
|
$response = $this->getJson('/api/sistemi')->assertOk();
|
|
|
|
$response->assertJsonCount(1);
|
|
$response->assertJsonPath('0.codice', 'pvc');
|
|
|
|
$modelli = collect($response->json('0.modelli'));
|
|
$this->assertSame(26, $modelli->count());
|
|
$this->assertSame('finestra_1_anta', $modelli->first()['id']);
|
|
$this->assertNotContains('scorrevole_sf_3_ante', $modelli->pluck('id'));
|
|
$this->assertStringEndsWith('/storage/modelli/icone/pvc/finestra_1_anta.jpg', $modelli->first()['icona']);
|
|
$this->assertSame('finestra_1_anta.glb', $modelli->first()['modello']);
|
|
}
|
|
|
|
public function test_api_sistema_inesistente_restituisce_404(): void
|
|
{
|
|
$this->getJson('/api/sistemi/inesistente')->assertNotFound();
|
|
}
|
|
}
|