++ gruppi di servizio: utenza dell'ex sorvegliante riattivabile, cestino e anonimizzazione, registro senza nomi
Un ex sorvegliante puo' guidare un gruppo nuovo: si riattiva la sua utenza. Il sorvegliante di un gruppo attivo non si cestina ne' si anonimizza; anonimizzando un ex sorvegliante si anonimizza anche l'utenza. Nel registro delle attivita' nome ed email dell'utenza del sorvegliante diventano "proclamatore #id". La voce "Il mio gruppo" dipende dal ruolo: l'amministratore passa ogni @can. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -354,6 +354,72 @@ class GruppiServizioTest extends TestCase
|
||||
$this->actingAs($s->fresh())->get(route('profile'))->assertRedirect(route('login'));
|
||||
}
|
||||
|
||||
public function test_l_ex_sorvegliante_puo_guidare_un_gruppo_nuovo_con_la_stessa_utenza(): void
|
||||
{
|
||||
['gruppo' => $vecchio, 'rossi' => $rossi, 'sorvegliante' => $s] = $this->gruppo();
|
||||
app(GruppiServizio::class)->sciogli($vecchio);
|
||||
|
||||
$pagina = Livewire::test(GruppiIndex::class);
|
||||
$this->assertContains((string) $rossi->id, collect($pagina->viewData('opzioniSorveglianti'))->pluck('valore')->all(), 'Torna tra i candidati');
|
||||
|
||||
[$nuovo, $password] = app(GruppiServizio::class)->crea('Zisa 2', $rossi->fresh(), 'mario.nuovo@example.test');
|
||||
|
||||
$utente = $s->fresh();
|
||||
$this->assertSame(1, User::where('proclamatore_id', $rossi->id)->count(), 'Un proclamatore, un\'utenza');
|
||||
$this->assertFalse($utente->isDisattivato());
|
||||
$this->assertTrue($utente->hasRole('sorvegliante'));
|
||||
$this->assertSame('mario.nuovo@example.test', $utente->email);
|
||||
$this->assertTrue($utente->password_change_required);
|
||||
$this->assertTrue(\Illuminate\Support\Facades\Hash::check($password, $utente->password));
|
||||
$this->assertSame($nuovo->id, $utente->gruppoSorvegliato()?->id);
|
||||
}
|
||||
|
||||
// ─── Proclamatori: cestino, anonimizzazione, registro ───────
|
||||
|
||||
public function test_il_sorvegliante_di_un_gruppo_attivo_non_si_cestina_ne_si_anonimizza(): void
|
||||
{
|
||||
['rossi' => $rossi, 'verdi' => $verdi] = $this->gruppo();
|
||||
|
||||
Livewire::test(\App\Livewire\Proclamatori\ProclamatoreIndex::class)
|
||||
->call('deleteProclamatore', $rossi->id)
|
||||
->call('anonimizza', $rossi->id);
|
||||
$this->assertFalse($rossi->fresh()->trashed());
|
||||
$this->assertSame('Rossi', $rossi->fresh()->cognome);
|
||||
|
||||
// Un membro qualsiasi sì, e lascia il gruppo.
|
||||
Livewire::test(\App\Livewire\Proclamatori\ProclamatoreIndex::class)->call('deleteProclamatore', $verdi->id);
|
||||
$this->assertTrue($verdi->fresh()->trashed());
|
||||
$this->assertNull($verdi->fresh()->gruppo_servizio_id);
|
||||
}
|
||||
|
||||
public function test_anonimizzare_un_ex_sorvegliante_anonimizza_anche_la_sua_utenza(): void
|
||||
{
|
||||
['gruppo' => $gruppo, 'rossi' => $rossi, 'sorvegliante' => $s] = $this->gruppo();
|
||||
app(GruppiServizio::class)->sciogli($gruppo);
|
||||
|
||||
Livewire::test(\App\Livewire\Proclamatori\ProclamatoreIndex::class)->call('anonimizza', $rossi->id);
|
||||
|
||||
$utente = $s->fresh();
|
||||
$this->assertSame('Anonimo', $utente->name);
|
||||
$this->assertStringEndsWith('@anonimo.invalid', $utente->email);
|
||||
$this->assertTrue($utente->isDisattivato());
|
||||
$this->assertCount(0, $utente->roles);
|
||||
}
|
||||
|
||||
public function test_nel_registro_delle_attivita_l_utenza_del_sorvegliante_non_ha_nome_ne_email(): void
|
||||
{
|
||||
['sorvegliante' => $s] = $this->gruppo();
|
||||
$s->update(['email' => 'mario.rossi@example.test']);
|
||||
|
||||
$voci = \Spatie\Activitylog\Models\Activity::where('subject_type', User::class)->where('subject_id', $s->id)->get();
|
||||
$this->assertNotEmpty($voci);
|
||||
foreach ($voci as $voce) {
|
||||
$json = json_encode($voce->properties);
|
||||
$this->assertStringNotContainsString('Rossi', $json);
|
||||
$this->assertStringNotContainsString('mario', $json);
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Backup ─────────────────────────────────────────────────
|
||||
|
||||
public function test_l_xml_conserva_gruppi_membri_pacchetto_e_utenza(): void
|
||||
|
||||
Reference in New Issue
Block a user