seed(CatalogoSeeder::class); $this->actingAs(User::factory()->create(['is_superadmin' => true])); } 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', 'modello_3d_upload' => 'required', 'categoria' => 'required']); Livewire::test(CreateModello::class) ->fillForm(['sistema_id' => $sistema, 'codice' => 'finestra_1_anta', 'nome' => 'Doppione', 'attivo' => false]) ->call('create') ->assertHasFormErrors(['codice' => 'unique']); } }