86 lines
3.0 KiB
PHP
86 lines
3.0 KiB
PHP
<?php
|
|
|
|
use App\Models\DocumentoArchivioFisicoItem;
|
|
use App\Models\Stabile;
|
|
use App\Models\User;
|
|
use App\Models\Amministratore;
|
|
use App\Filament\Pages\Strumenti\DocumentiArchivio;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
test('it exports physical archive to xml and imports it back successfully', function () {
|
|
$user = User::factory()->create();
|
|
$user->assignRole('super-admin');
|
|
$this->actingAs($user);
|
|
|
|
$amministratore = Amministratore::create([
|
|
'user_id' => $user->id,
|
|
'nome' => 'Admin',
|
|
'cognome' => 'Test',
|
|
'denominazione' => 'Amministrazione Test',
|
|
'codice_fiscale' => '12345678901',
|
|
]);
|
|
|
|
$stabile = Stabile::create([
|
|
'amministratore_id' => $amministratore->id,
|
|
'codice_stabile' => '9999',
|
|
'denominazione' => 'Condominio Test XML',
|
|
'codice_fiscale' => '12345678901',
|
|
'indirizzo' => 'Via Test 1',
|
|
'citta' => 'Roma',
|
|
'cap' => '00100',
|
|
'provincia' => 'RM',
|
|
'codice_destinatario_sdi' => '0000000',
|
|
]);
|
|
|
|
// Simula resolveActiveStabile tramite mock o set nel contesto sessione
|
|
session(['netgescon.stabile_attivo_id' => $stabile->id]);
|
|
|
|
// Crea elementi di test (faldone -> cartellina -> documento)
|
|
$faldone = DocumentoArchivioFisicoItem::create([
|
|
'stabile_id' => $stabile->id,
|
|
'codice_univoco' => 'AF-' . $stabile->id . '-0001',
|
|
'tipo_item' => 'faldone_anelli',
|
|
'titolo' => 'Faldone Generale 2026',
|
|
'data_archiviazione' => now()->toDateString(),
|
|
'stato' => 'disponibile',
|
|
]);
|
|
|
|
$cartellina = DocumentoArchivioFisicoItem::create([
|
|
'stabile_id' => $stabile->id,
|
|
'parent_id' => $faldone->id,
|
|
'codice_univoco' => 'AF-' . $stabile->id . '-0002',
|
|
'tipo_item' => 'cartellina',
|
|
'titolo' => 'Cartellina Riscaldamento',
|
|
'data_archiviazione' => now()->toDateString(),
|
|
'stato' => 'disponibile',
|
|
]);
|
|
|
|
$page = new DocumentiArchivio();
|
|
|
|
$xml = $page->exportPhysicalArchiveToXml();
|
|
|
|
expect($xml)->toContain('netgescon_physical_archive')
|
|
->toContain('Faldone Generale 2026')
|
|
->toContain('Cartellina Riscaldamento');
|
|
|
|
// Cancella gli elementi per testare il re-import
|
|
DocumentoArchivioFisicoItem::query()->delete();
|
|
expect(DocumentoArchivioFisicoItem::count())->toBe(0);
|
|
|
|
// Re-importa
|
|
$importedCount = $page->importPhysicalArchiveFromXml($xml);
|
|
expect($importedCount)->toBe(2);
|
|
|
|
expect(DocumentoArchivioFisicoItem::count())->toBe(2);
|
|
|
|
$importedFaldone = DocumentoArchivioFisicoItem::where('tipo_item', 'faldone_anelli')->first();
|
|
$importedCartellina = DocumentoArchivioFisicoItem::where('tipo_item', 'cartellina')->first();
|
|
|
|
expect($importedFaldone->titolo)->toBe('Faldone Generale 2026');
|
|
expect($importedCartellina->titolo)->toBe('Cartellina Riscaldamento');
|
|
expect($importedCartellina->parent_id)->toBe($importedFaldone->id);
|
|
});
|