277 lines
8.7 KiB
PHP
277 lines
8.7 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use App\Models\Assemblea;
|
|
use App\Models\Convocazione;
|
|
use App\Models\OrdineGiorno;
|
|
use App\Models\Stabile;
|
|
use App\Models\Soggetto;
|
|
use App\Models\UnitaImmobiliare;
|
|
use App\Models\Amministratore;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Tests\TestCase;
|
|
|
|
class AssembleaMobileTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
config(['netgescon.database.use_observers' => 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);
|
|
}
|
|
}
|