true]); } public function test_public_assemblea_mobile_view() { $user = User::create([ 'name' => 'Admin User', 'email' => 'admin.user@example.com', 'password' => bcrypt('password'), ]); $amministratore = Amministratore::create([ 'user_id' => $user->id, 'nome' => 'Admin', 'cognome' => 'Test', 'denominazione' => 'Amministrazione Test', 'codice_fiscale' => '12345678901', ]); $stabile = Stabile::create([ 'amministratore_id' => $amministratore->id, 'denominazione' => 'Condominio Test', 'codice_fiscale' => '12345678901', 'indirizzo' => 'Via Test 1', 'citta' => 'Roma', 'cap' => '00100', 'provincia' => 'RM', 'codice_stabile' => 'STAB-001', ]); $unita = UnitaImmobiliare::create([ 'stabile_id' => $stabile->id, 'interno' => '1A', 'codice_unita' => 'UI-TEST-001', 'millesimi_generali' => 50.000, ]); $soggetto = Soggetto::create([ 'nome' => 'Mario', 'cognome' => 'Rossi', 'codice_fiscale' => 'RSSMRA80A01H501U', 'email' => 'mario.rossi@example.com', 'telefono' => '+393331234567', 'tipo' => 'persona_fisica', ]); $assemblea = Assemblea::create([ 'stabile_id' => $stabile->id, 'tipo' => 'ordinaria', 'stato' => 'convocata', 'data_prima_convocazione' => now()->addDays(5), 'data_seconda_convocazione' => now()->addDays(6), ]); $convocazione = Convocazione::create([ 'assemblea_id' => $assemblea->id, 'unita_immobiliare_id' => $unita->id, 'soggetto_id' => $soggetto->id, 'ruolo' => 'C', 'consegnato_canale' => 'email', 'token_accesso' => 'test-token-12345', ]); $response = $this->get(route('public.assemblea.show', ['token' => $convocazione->token_accesso])); $response->assertStatus(200); $response->assertSee($soggetto->nome_completo); $response->assertSee($stabile->denominazione); } public function test_public_assemblea_conferma_ricezione() { $user = User::create([ 'name' => 'Admin User 2', 'email' => 'admin.user2@example.com', 'password' => bcrypt('password'), ]); $amministratore = Amministratore::create([ 'user_id' => $user->id, 'nome' => 'Admin', 'cognome' => 'Test', 'denominazione' => 'Amministrazione Test', 'codice_fiscale' => '12345678901', ]); $stabile = Stabile::create([ 'amministratore_id' => $amministratore->id, 'denominazione' => 'Condominio Test', 'codice_fiscale' => '12345678901', 'indirizzo' => 'Via Test 1', 'citta' => 'Roma', 'cap' => '00100', 'provincia' => 'RM', 'codice_stabile' => 'STAB-002', ]); $unita = UnitaImmobiliare::create([ 'stabile_id' => $stabile->id, 'interno' => '1A', 'codice_unita' => 'UI-TEST-001', ]); $soggetto = Soggetto::create([ 'nome' => 'Mario', 'cognome' => 'Rossi', 'codice_fiscale' => 'RSSMRA80A01H501U', 'tipo' => 'persona_fisica', ]); $assemblea = Assemblea::create([ 'stabile_id' => $stabile->id, 'tipo' => 'ordinaria', 'stato' => 'convocata', ]); $convocazione = Convocazione::create([ 'assemblea_id' => $assemblea->id, 'unita_immobiliare_id' => $unita->id, 'soggetto_id' => $soggetto->id, 'token_accesso' => 'test-token-receipt', ]); $response = $this->post(route('public.assemblea.ricezione', ['token' => $convocazione->token_accesso])); $response->assertJson(['success' => true]); $this->assertNotNull($convocazione->fresh()->ricezione_confermata_at); } public function test_public_assemblea_voto_live() { $user = User::create([ 'name' => 'Admin User 3', 'email' => 'admin.user3@example.com', 'password' => bcrypt('password'), ]); $amministratore = Amministratore::create([ 'user_id' => $user->id, 'nome' => 'Admin', 'cognome' => 'Test', 'denominazione' => 'Amministrazione Test', 'codice_fiscale' => '12345678901', ]); $stabile = Stabile::create([ 'amministratore_id' => $amministratore->id, 'denominazione' => 'Condominio Test', 'codice_fiscale' => '12345678901', 'indirizzo' => 'Via Test 1', 'citta' => 'Roma', 'cap' => '00100', 'provincia' => 'RM', 'codice_stabile' => 'STAB-003', ]); $unita = UnitaImmobiliare::create([ 'stabile_id' => $stabile->id, 'interno' => '1A', 'codice_unita' => 'UI-TEST-001', 'millesimi_generali' => 45.500, ]); $soggetto = Soggetto::create([ 'nome' => 'Mario', 'cognome' => 'Rossi', 'codice_fiscale' => 'RSSMRA80A01H501U', 'tipo' => 'persona_fisica', ]); $assemblea = Assemblea::create([ 'stabile_id' => $stabile->id, 'tipo' => 'ordinaria', 'stato' => 'convocata', ]); $odg = OrdineGiorno::create([ 'assemblea_id' => $assemblea->id, 'numero_punto' => 1, 'titolo' => 'Punto test', 'descrizione' => 'Descrizione test', ]); $convocazione = Convocazione::create([ 'assemblea_id' => $assemblea->id, 'unita_immobiliare_id' => $unita->id, 'soggetto_id' => $soggetto->id, 'token_accesso' => 'test-token-vote', ]); Cache::put("assemblea.{$assemblea->id}.attivo_odg_id", $odg->id); $response = $this->post(route('public.assemblea.vota', ['token' => $convocazione->token_accesso]), [ 'ordine_giorno_id' => $odg->id, 'voto' => 'favorevole', ]); $response->assertJson(['success' => true]); $this->assertDatabaseHas('assemblee_voti', [ 'assemblea_id' => $assemblea->id, 'ordine_giorno_id' => $odg->id, 'soggetto_id' => $soggetto->id, 'unita_immobiliare_id' => $unita->id, 'voto' => 'favorevole', 'millesimi_voto' => 45.500, ]); } public function test_admin_gestione_assemblea_page_rendering() { $user = User::create([ 'name' => 'Admin User X', 'email' => 'admin.x@test.com', 'password' => bcrypt('password'), ]); \Spatie\Permission\Models\Role::create(['name' => 'amministratore']); $user->assignRole('amministratore'); $amministratore = Amministratore::create([ 'user_id' => $user->id, 'nome' => 'Admin', 'cognome' => 'Test', 'denominazione' => 'Amministrazione Test', 'codice_fiscale' => '12345678901', ]); $stabile = Stabile::create([ 'amministratore_id' => $amministratore->id, 'denominazione' => 'Condominio Test', 'codice_fiscale' => '12345678901', 'indirizzo' => 'Via Test 1', 'citta' => 'Roma', 'cap' => '00100', 'provincia' => 'RM', 'codice_stabile' => 'STAB-001', ]); $assemblea = Assemblea::create([ 'stabile_id' => $stabile->id, 'tipo' => 'ordinaria', 'stato' => 'convocata', 'data_prima_convocazione' => now()->addDays(5), 'data_seconda_convocazione' => now()->addDays(6), ]); $url = \App\Filament\Pages\Condomini\GestioneAssemblea::getUrl(['record' => $assemblea->id], panel: 'admin-filament'); $response = $this->actingAs($user)->get($url); $response->assertStatus(200); } }