'amministratore', 'guard_name' => 'web']);
app(PermissionRegistrar::class)->forgetCachedPermissions();
$admin = User::create([
'name' => 'Amministratore',
'email' => 'admin@example.test',
'password' => 'password-di-prova',
]);
$admin->assignRole('amministratore');
$this->actingAs($admin);
}
public function test_l_import_elimina_i_file_dei_territori_che_sostituisce(): void
{
$disco = Storage::disk('public');
$disco->put('territori-pdf/territorio-142-141.pdf', 'vecchio');
$disco->put('territori-thumbnails/territorio-142-141.png', 'vecchia');
$disco->put('territori-pdf-versioni/territorio-141-20260101.pdf', 'storico');
$disco->put('territori-pdf/caricato-a-mano.pdf', 'di nessuno');
$territorio = Territorio::create([
'numero' => '142',
'attivo' => true,
'pdf_path' => 'territori-pdf/territorio-142-141.pdf',
'thumbnail_path' => 'territori-thumbnails/territorio-142-141.png',
]);
TerritorioPdfVersione::create([
'territorio_id' => $territorio->id,
'pdf_path' => 'territori-pdf-versioni/territorio-141-20260101.pdf',
'sostituito_il' => now(),
]);
$this->post(route('xml.import-xml'), ['xmlImport' => $this->xml('142', 'territori-pdf/territorio-142-415.pdf')])
->assertSessionHasNoErrors();
$disco->assertMissing('territori-pdf/territorio-142-141.pdf');
$disco->assertMissing('territori-thumbnails/territorio-142-141.png');
// Lo storico se ne va con il territorio (cascata sulla riga): il file
// restava sul disco.
$disco->assertMissing('territori-pdf-versioni/territorio-141-20260101.pdf');
// Un file che nessun territorio richiamava non e' affare dell'import.
$disco->assertExists('territori-pdf/caricato-a-mano.pdf');
}
/** Il caso di tutti i giorni: reimportare l'export di questa stessa installazione. */
public function test_reimportare_l_export_della_stessa_installazione_non_cancella_niente(): void
{
$disco = Storage::disk('public');
$disco->put('territori-pdf/territorio-7-3.pdf', 'pdf');
$disco->put('territori-thumbnails/territorio-7-3.png', 'png');
Territorio::create([
'numero' => '7',
'attivo' => true,
'pdf_path' => 'territori-pdf/territorio-7-3.pdf',
'thumbnail_path' => 'territori-thumbnails/territorio-7-3.png',
]);
$export = (new XmlExchange())->currentXmlBackup();
$this->post(route('xml.import-xml'), ['xmlImport' => UploadedFile::fake()->createWithContent('export.xml', $export)])
->assertSessionHasNoErrors();
$disco->assertExists('territori-pdf/territorio-7-3.pdf');
$disco->assertExists('territori-thumbnails/territorio-7-3.png');
$this->assertSame('territori-pdf/territorio-7-3.pdf', Territorio::sole()->pdf_path);
}
public function test_un_import_rifiutato_non_cancella_niente(): void
{
$disco = Storage::disk('public');
$disco->put('territori-pdf/territorio-1-1.pdf', 'pdf');
Territorio::create(['numero' => '1', 'attivo' => true, 'pdf_path' => 'territori-pdf/territorio-1-1.pdf']);
$this->post(route('xml.import-xml'), [
'xmlImport' => UploadedFile::fake()->createWithContent('estraneo.xml', ''),
])->assertSessionHasErrors('xmlImport');
$disco->assertExists('territori-pdf/territorio-1-1.pdf');
}
private function xml(string $numero, string $pdfPath): UploadedFile
{
$xml = ''
. ''
. '' . $numero . '1'
. '' . $pdfPath . ''
. ''
. '';
return UploadedFile::fake()->createWithContent('export.xml', $xml);
}
}