netgescon-day0/tests/Unit/FatturaParserServiceTest.php

80 lines
3.5 KiB
PHP

<?php
namespace Tests\Unit;
use App\Services\FatturaParserService;
use PHPUnit\Framework\TestCase;
class FatturaParserServiceTest extends TestCase
{
public function test_it_extracts_electricity_pod_and_details_correctly()
{
$parser = new FatturaParserService();
$sampleText = "ENEL SERVIZIO ELETTRICO NAZIONALE\n" .
"Codice Cliente: 987654321-A\n" .
"Punto di Prelievo (POD): IT001E12345678\n" .
"Matricola contatore: SN-998877\n" .
"Cod. CBILL: 125009100048454010\n" .
"Cod. SIA: C8MBI\n" .
"Lettura precedente: 12.350,5\n" .
"Lettura attuale: 12.850,5\n" .
"Consumo periodo: 500 kWh";
$parsed = $parser->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']);
}
}