++ Modulo pubblico: nella riconsegna il territorio si sceglie con il completamento automatico

Elenco con solo numero e zona (territori attivi e quelli ancora fuori),
mostrato solo per la riconsegna; il server accetta solo un numero
dell'elenco. Privacy, README e HANDOFF aggiornati.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Francesco Picone
2026-10-21 17:49:08 +02:00
parent 2e1da51080
commit d198ad0b54
6 changed files with 96 additions and 15 deletions

View File

@@ -15,6 +15,7 @@ use App\Models\Richiesta;
use App\Models\Setting;
use App\Models\Territorio;
use App\Models\User;
use App\Models\Zona;
use App\Notifications\RichiestaRicevuta;
use App\Services\RichiesteServizio;
use Database\Seeders\RolesAndPermissionsSeeder;
@@ -146,6 +147,7 @@ class RichiesteTest extends TestCase
public function test_senza_posta_la_richiesta_resta_comunque(): void
{
Notification::fake();
$this->territorio('12');
auth()->logout();
$this->compila(['tipo' => Richiesta::RICONSEGNA, 'nome' => 'Mario Rossi', 'numero' => '12'])->assertHasNoErrors();
@@ -162,6 +164,35 @@ class RichiesteTest extends TestCase
$this->assertSame(0, Richiesta::count());
}
public function test_nella_riconsegna_il_territorio_si_sceglie_dall_elenco(): void
{
$zona = Zona::create(['nome' => 'Centro storico']);
Territorio::create(['numero' => '12', 'zona_id' => $zona->id, 'attivo' => true]);
Territorio::create(['numero' => '3B', 'attivo' => true]);
$fuori = Territorio::create(['numero' => '40', 'attivo' => true]);
$this->assegna($fuori, $this->proclamatore('Verdi', 'Anna'), '2026-10-01');
$fuori->update(['attivo' => false]);
Territorio::create(['numero' => '77', 'attivo' => false]);
auth()->logout();
// L'elenco c'è solo nella riconsegna: numero e zona, nient'altro.
$modulo = Livewire::test(ModuloRichiesta::class)
->assertViewHas('opzioniTerritori', [])
->set('tipo', Richiesta::RICONSEGNA)
->assertSee('Centro storico')
->assertDontSee('Verdi')
->assertDontSee('assegnat');
$this->assertSame(['3B', '12', '40'], array_column($modulo->viewData('opzioniTerritori'), 'valore'),
'In ordine di numero; c\'è anche quello disattivato ma ancora fuori, non quello disattivato e rientrato');
$this->compila(['tipo' => Richiesta::RICONSEGNA, 'nome' => 'Anna Verdi', 'numero' => '99'])->assertHasErrors('numero');
$this->compila(['tipo' => Richiesta::RICONSEGNA, 'nome' => 'Anna Verdi', 'numero' => '77'])->assertHasErrors('numero');
$this->assertSame(0, Richiesta::count());
$this->compila(['tipo' => Richiesta::RICONSEGNA, 'nome' => 'Anna Verdi', 'numero' => '3b'])->assertHasNoErrors();
$this->assertSame('3b', Richiesta::sole()->numero_territorio);
}
public function test_lo_spam_non_si_salva_e_non_se_ne_accorge(): void
{
// Il campo trappola riempito.