Files
kreios/backoffice/tests/Feature/CatalogoAdminTest.php
T
carmine.savino 0dfda3a338 Refactor PVC models and update tests
- Updated the PVC models in the database and adjusted the tests accordingly to reflect the new model counts and codes.
- Removed deprecated models from the JSON data for PVC systems.
- Added new GLB models for "scorrevole_sf_3_ante" and "scorrevole_sf_4_ante".
- Enhanced the development scripts to streamline the build process for both frontends.
- Updated documentation to reflect changes in the development environment and deployment process.
- Improved the styling of texture radio options for better visibility.
- Fixed URL handling in the configurator to ensure proper routing and API calls.
2026-10-20 18:40:59 +02:00

105 lines
4.6 KiB
PHP

<?php
namespace Tests\Feature;
use App\Filament\Resources\ModelloResource;
use App\Filament\Resources\ModelloResource\Pages\CreateModello;
use App\Filament\Resources\ModelloResource\Pages\EditModello;
use App\Filament\Resources\ModelloResource\Pages\ListModelli;
use App\Filament\Resources\SistemaResource\Pages\ListSistemi;
use App\Models\Modello;
use App\Models\Sistema;
use App\Models\User;
use Database\Seeders\CatalogoSeeder;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Storage;
use Livewire\Livewire;
use Tests\TestCase;
class CatalogoAdminTest extends TestCase
{
use RefreshDatabase;
protected function setUp(): void
{
parent::setUp();
Storage::fake('public');
$this->seed(CatalogoSeeder::class);
$this->actingAs(User::factory()->create());
}
public function test_le_pagine_admin_del_catalogo_si_aprono(): void
{
$modello = Modello::where('codice', 'finestra_1_anta')->firstOrFail();
Livewire::test(ListSistemi::class)->assertOk()->assertSee('PVC');
Livewire::test(ListModelli::class)->assertOk()->assertCanSeeTableRecords([$modello]);
Livewire::test(CreateModello::class)->assertOk();
Livewire::test(EditModello::class, ['record' => $modello->getRouteKey()])
->assertOk()
->assertFormSet(['codice' => 'finestra_1_anta', 'descrizione' => 'FINESTRA 1 ANTA, A/R']);
}
public function test_dai_sistemi_si_aprono_i_modelli_filtrati_per_sistema(): void
{
$pvc = Sistema::where('codice', 'pvc')->firstOrFail();
$altro = Sistema::create(['codice' => 'legno', 'nome' => 'Legno']);
$modelloAltro = Modello::create(['sistema_id' => $altro->id, 'codice' => 'finestra_1_anta', 'nome' => 'Finestra legno', 'attivo' => false]);
Livewire::test(ListSistemi::class)
->assertTableActionHasUrl('modelli', ModelloResource::getUrl('index', [
'tableFilters' => ['sistema' => ['value' => $pvc->id]],
]), $pvc);
Livewire::withQueryParams(['tableFilters' => ['sistema' => ['value' => $pvc->id]]])
->test(ListModelli::class)
->assertCountTableRecords($pvc->modelli()->count())
->assertCanNotSeeTableRecords([$modelloAltro]);
}
public function test_ordine_del_file_con_i_disattivi_in_fondo(): void
{
$codici = fn () => Modello::orderBy('ordine')->pluck('codice')->all();
// Ordine di OrdineSerramenti per gli attivi, poi i 2 disattivi nello stesso ordine.
$this->assertSame(['finestra_1_anta', 'finestra_2_ante', 'finestra_3_ante'], array_slice($codici(), 0, 3));
$this->assertSame(['scorrevole_hst_4_ante', 'traslante_scorrevole_1_anta_f'], array_slice($codici(), -2));
// Disattivando un modello passa nel gruppo in fondo (dopo i 25 attivi rimasti),
// mantenendo l'ordine relativo con gli altri disattivi; riattivandolo resta
// ultimo degli attivi, da riposizionare con "Riordina".
$bilico = Modello::where('codice', 'bilico')->firstOrFail();
Livewire::test(ListModelli::class)->call('updateTableColumnState', 'attivo', $bilico->getKey(), false);
$this->assertSame('celino', $codici()[24]);
$this->assertSame(['bilico', 'scorrevole_hst_4_ante'], array_slice($codici(), 25, 2));
$bilico->refresh()->update(['attivo' => true]);
$this->assertSame(['celino', 'bilico', 'scorrevole_hst_4_ante'], array_slice($codici(), 24, 3));
// In tabella i disattivi stanno in fondo anche se l'ordine salvato li metterebbe in mezzo.
Modello::where('codice', 'scorrevole_hst_4_ante')->update(['ordine' => 2]);
Livewire::test(ListModelli::class)
->set('tableRecordsPerPage', 50)
->assertCanSeeTableRecords(
Modello::orderByDesc('attivo')->orderBy('ordine')->get(),
inOrder: true
);
}
public function test_un_modello_attivo_richiede_la_configurazione_3d(): void
{
$sistema = Modello::firstOrFail()->sistema_id;
Livewire::test(CreateModello::class)
->fillForm(['sistema_id' => $sistema, 'codice' => 'nuovo', 'nome' => 'Nuovo', 'attivo' => true])
->call('create')
->assertHasFormErrors(['cartella' => 'required', 'file_modello' => 'required', 'categoria' => 'required']);
Livewire::test(CreateModello::class)
->fillForm(['sistema_id' => $sistema, 'codice' => 'finestra_1_anta', 'nome' => 'Doppione', 'attivo' => false])
->call('create')
->assertHasFormErrors(['codice' => 'unique']);
}
}