'Commemorazione', 'start_date' => '2026-03-01', 'end_date' => '2026-03-31', ]); Carbon::setTestNow('2026-03-31 18:30:00'); $this->assertTrue($campagna->fresh()->is_attiva); $this->assertSame($campagna->id, Campagna::attiva()?->id); $this->assertSame(0, Campagna::completate()->count()); Carbon::setTestNow('2026-04-01 08:00:00'); $this->assertNull(Campagna::attiva()); $this->assertSame(1, Campagna::completate()->count()); } public function test_la_percentuale_conta_i_territori_attivi_una_volta_sola(): void { $campagna = Campagna::create([ 'descrizione' => 'Commemorazione', 'start_date' => '2026-03-01', 'end_date' => '2026-03-31', ]); $proclamatore = Proclamatore::create(['nome' => 'Mario', 'cognome' => 'Rossi', 'attivo' => true]); $utente = User::create(['name' => 'Admin', 'email' => 'admin@example.test', 'password' => 'password-di-prova']); $anno = AnnoTeocratico::create(['label' => '2025-2026', 'start_date' => '2025-09-01', 'end_date' => '2026-08-31']); $t1 = Territorio::create(['numero' => '1', 'attivo' => true]); $t2 = Territorio::create(['numero' => '2', 'attivo' => true]); Territorio::create(['numero' => '3', 'attivo' => true]); Territorio::create(['numero' => '4', 'attivo' => true]); $dismesso = Territorio::create(['numero' => '5', 'attivo' => true]); $conta = fn (Territorio $t, string $uscita, string $rientro) => Assegnazione::create([ 'anno_teocratico_id' => $anno->id, 'created_by' => $utente->id, 'territorio_id' => $t->id, 'proclamatore_id' => $proclamatore->id, 'assigned_at' => $uscita, 'returned_at' => $rientro, 'campaign_id' => $campagna->id, 'counted_in_campaign' => true, ]); // Il territorio 1 percorso due volte, il 2 una, il 5 poi disattivato. $conta($t1, '2026-03-02', '2026-03-10'); $conta($t1, '2026-03-12', '2026-03-20'); $conta($t2, '2026-03-03', '2026-03-15'); $conta($dismesso, '2026-03-04', '2026-03-16'); $dismesso->update(['attivo' => false]); // 2 territori attivi percorsi su 4 attivi: prima diceva 4 su 4, 100%. $this->assertSame(50.0, $campagna->fresh()->percentuale_percorrenza); } }