seed(RolesAndPermissionsSeeder::class); $this->admin = User::create(['name' => 'Admin', 'email' => 'admin@example.test', 'password' => 'password-di-prova']); $this->admin->assignRole('amministratore'); $anno = AnnoTeocratico::create(['label' => '2025-2026', 'start_date' => '2025-09-01', 'end_date' => '2026-08-31']); $this->proclamatore = Proclamatore::create(['nome' => 'Giuseppe', 'cognome' => 'Verdi', 'attivo' => true]); $territorio = Territorio::create(['numero' => '7', 'attivo' => true]); $this->assegnazione = Assegnazione::create([ 'anno_teocratico_id' => $anno->id, 'territorio_id' => $territorio->id, 'proclamatore_id' => $this->proclamatore->id, 'assigned_at' => '2026-01-10', 'created_by' => $this->admin->id, ]); } public function test_le_voci_vecchie_perdono_il_nome_e_tengono_l_id(): void { activity()->performedOn($this->assegnazione) ->withProperties(['territorio' => '7', 'proclamatore' => 'Giuseppe Verdi']) ->log('assigned'); $migrazione = require database_path('migrations/2026_10_12_000010_nomi_proclamatori_fuori_dal_log.php'); $migrazione->up(); $proprieta = json_decode(DB::table('activity_log')->where('description', 'assigned')->value('properties'), true); $this->assertArrayNotHasKey('proclamatore', $proprieta); $this->assertSame($this->proclamatore->id, $proprieta['proclamatore_id']); $this->assertStringNotContainsString('Verdi', DB::table('activity_log')->where('description', 'assigned')->value('properties')); } public function test_il_registro_mostra_il_nome_di_oggi_anche_dopo_l_anonimizzazione(): void { activity()->performedOn($this->assegnazione) ->withProperties(['territorio' => '7', 'proclamatore_id' => $this->proclamatore->id]) ->log('assigned'); Livewire::actingAs($this->admin)->test(AuditLog::class)->assertSee('Verdi Giuseppe'); $this->proclamatore->anonimizza(); Livewire::actingAs($this->admin)->test(AuditLog::class) ->assertDontSee('Verdi Giuseppe') ->assertSee('Anonimo'); } public function test_assegnare_non_scrive_il_nome_nel_log(): void { $sorgente = file_get_contents(app_path('Livewire/Assegnazioni/Assegna.php')) . file_get_contents(app_path('Livewire/Assegnazioni/Rientra.php')); $this->assertStringNotContainsString("'proclamatore' => \$proclamatore->nome_completo", $sorgente); } }