import 'package:flutter_test/flutter_test.dart'; import 'package:cid_app/global_data.dart'; import 'package:cid_app/cid_data_manager.dart'; void main() { test('Verifica Inserimento, Esportazione JSON e Importazione Dati (Simulazione Scambio Firebase)', () { // 1. Reset Pulito GlobalData.reset(); GlobalData.latoCorrente = 'A'; // 2. Inserimento Dati Simulato (Conducente A compila) GlobalData.dataIncidente = "02/05/2026"; GlobalData.luogo = "Milano, Via Roma 1"; GlobalData.feriti = false; GlobalData.cognomeContraenteA = "Rossi"; GlobalData.nomeContraenteA = "Mario"; GlobalData.codiceFiscaleContraenteA = "RSSMRA80A01F205Z"; GlobalData.emailContraenteA = "mario.rossi@test.it"; GlobalData.marcaETipoA = "Fiat Panda"; GlobalData.targaA = "AA123BB"; GlobalData.denominazioneA = "Assicurazioni Test"; GlobalData.numeroPolizzaA = "123456789"; GlobalData.flagDanniMatAssicuratiA = true; GlobalData.danniVisibiliA = "Paraurti distrutto"; GlobalData.circostanzeA = {2: true, 5: true}; // 3. Serializzazione JSON (Simulazione Esportazione verso QR o Firebase) Map jsonEsportato = CidDataManager.estraiDatiPerExport(); // Verifica intermedia della struttura esportata (con le chiavi "minificate") expect(jsonEsportato['lato'], 'A'); expect(jsonEsportato['generali']['luogo'], "Milano, Via Roma 1"); expect(jsonEsportato['contraente']['cognome'], "Rossi"); expect(jsonEsportato['veicolo']['targa'], "AA123BB"); expect(jsonEsportato['assicurazione']['flag_danni'], true); // 4. Reset Simulato (Il dispositivo del Conducente B è vuoto prima di scansionare) GlobalData.reset(); GlobalData.latoCorrente = 'B'; // Adesso siamo il dispositivo B expect(GlobalData.cognomeContraenteA, ""); expect(GlobalData.targaA, ""); // 5. Importazione Dati (Simulazione Ricezione JSON scansionato o da Firebase) CidDataManager.importaDati(jsonEsportato); // 6. Verifica Integrità Dati Post-Importazione (I dati di A devono essere andati in "Lato A") expect(GlobalData.dataIncidente, "02/05/2026", reason: "Data incidente persa"); expect(GlobalData.luogo, "Milano, Via Roma 1", reason: "Luogo perso"); expect(GlobalData.feriti, false, reason: "Stato feriti perso"); expect(GlobalData.cognomeContraenteA, "Rossi", reason: "Cognome Contraente A perso (Possibile errore naming refactoring)"); expect(GlobalData.nomeContraenteA, "Mario", reason: "Nome Contraente A perso"); expect(GlobalData.emailContraenteA, "mario.rossi@test.it", reason: "Email A persa"); expect(GlobalData.targaA, "AA123BB", reason: "Targa A persa"); expect(GlobalData.numeroPolizzaA, "123456789", reason: "Polizza A persa"); expect(GlobalData.flagDanniMatAssicuratiA, true, reason: "Flag danni A perso"); expect(GlobalData.danniVisibiliA, "Paraurti distrutto", reason: "Danni visibili A persi"); // Test mappa circostanze (List vs Map issue test) expect(GlobalData.circostanzeA[2], true, reason: "Circostanza 2 persa"); expect(GlobalData.circostanzeA[5], true, reason: "Circostanza 5 persa"); print("✅ TEST COMPLETATO: Serializzazione, Scambio Dati JSON e Refactoring Variabili perfettamente funzionanti."); }); }