'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); } }