parseText($sampleText); $this->assertEquals('987654321-A', $parsed['codice_cliente']); $this->assertEquals('IT001E12345678', $parsed['pod']); $this->assertEquals('SN-998877', $parsed['matricola_contatore']); $this->assertEquals('125009100048454010', $parsed['cbill']); $this->assertEquals('C8MBI', $parsed['codice_fornitore_ente']); $this->assertEquals(12350.5, $parsed['lettura_precedente']); $this->assertEquals(12850.5, $parsed['lettura_attuale']); $this->assertEquals(500.0, $parsed['quantita_consumata']); $this->assertEquals('energia_elettrica', $parsed['categoria']); $this->assertEquals('SPESE_ENERGIA', $parsed['conto_mastro']); } public function test_it_extracts_gas_pdr_and_classifies_as_heating() { $parser = new FatturaParserService(); $sampleText = "Plenitude gas e luce S.p.A.\n" . "Punto di riconsegna (PDR): 01234567890123\n" . "Seriale contatore: G4-8899\n" . "Codice Avviso: 125009100048454010\n" . "Lettura prec.: 5420\n" . "Lettura att.: 5840\n" . "Volume riscaldato: 420 m3"; $parsed = $parser->parseText($sampleText); $this->assertEquals('01234567890123', $parsed['pdr']); $this->assertEquals('G4-8899', $parsed['matricola_contatore']); $this->assertEquals('125009100048454010', $parsed['cbill']); $this->assertEquals(5420.0, $parsed['lettura_precedente']); $this->assertEquals(5840.0, $parsed['lettura_attuale']); $this->assertEquals(420.0, $parsed['quantita_consumata']); $this->assertEquals('riscaldamento', $parsed['categoria']); $this->assertEquals('SPESE_RISCALDAMENTO', $parsed['conto_mastro']); } public function test_it_classifies_water_correctly() { $parser = new FatturaParserService(); $sampleText = "PUBLIACQUA S.p.A. - Servizio Idrico Integrato\n" . "Cod. Cliente: 44332211\n" . "Numero Contatore: MAT-888-H\n" . "Lettura precedente: 100\n" . "Lettura attuale: 150\n" . "Consumo rilevato: 50 mc"; $parsed = $parser->parseText($sampleText); $this->assertEquals('44332211', $parsed['codice_cliente']); $this->assertEquals('MAT-888-H', $parsed['matricola_contatore']); $this->assertEquals(100.0, $parsed['lettura_precedente']); $this->assertEquals(150.0, $parsed['lettura_attuale']); $this->assertEquals(50.0, $parsed['quantita_consumata']); $this->assertEquals('acqua', $parsed['categoria']); $this->assertEquals('SPESE_ACQUA', $parsed['conto_mastro']); } }