Files
myep/tests/BusProNet/XmlParser/AgencyParserTest.php
T

112 lines
3.5 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\BusProNet\XmlParser;
use App\BusProNet\XmlParser\AgencyParser;
use PHPUnit\Framework\TestCase;
use Symfony\Component\DomCrawler\Crawler;
class AgencyParserTest extends TestCase
{
private AgencyParser $parser;
protected function setUp(): void
{
$this->parser = new AgencyParser();
}
public function testParseAgencies(): void
{
$xmlContent = '<?xml version="1.0" encoding="utf-8"?>
<ergebnis>
<satz typ="AGENTUREN" />
<agenturen>
<agentur id="124487">
<name>ADAC Hansa e.V.</name>
<code>295</code>
<strasse>Musterstr. 123</strasse>
<plz>99999</plz>
<ort>Musterort</ort>
<telefon>0361-442930</telefon>
</agentur>
<agentur id="75861">
<name>ADAC im Fördepark</name>
<code>103</code>
<strasse>Sebastianusstr. 24</strasse>
<plz>41468</plz>
<ort>Neuss</ort>
</agentur>
</agenturen>
</ergebnis>';
$crawler = new Crawler($xmlContent);
$resultNode = $crawler->filterXPath('//ergebnis');
$agencies = $this->parser->parse($resultNode);
$this->assertCount(2, $agencies);
// Test first agency (complete data)
$this->assertEquals(124487, $agencies[0]->id);
$this->assertEquals('ADAC Hansa e.V.', $agencies[0]->name);
$this->assertEquals('295', $agencies[0]->code);
$this->assertEquals('Musterstr. 123', $agencies[0]->street);
$this->assertEquals('99999', $agencies[0]->postCode);
$this->assertEquals('Musterort', $agencies[0]->city);
$this->assertEquals('0361-442930', $agencies[0]->phone);
// Test second agency (missing phone)
$this->assertEquals(75861, $agencies[1]->id);
$this->assertEquals('ADAC im Fördepark', $agencies[1]->name);
$this->assertEquals('103', $agencies[1]->code);
$this->assertEquals('Sebastianusstr. 24', $agencies[1]->street);
$this->assertEquals('41468', $agencies[1]->postCode);
$this->assertEquals('Neuss', $agencies[1]->city);
$this->assertNull($agencies[1]->phone);
}
public function testParseMinimalAgency(): void
{
$xmlContent = '<?xml version="1.0" encoding="utf-8"?>
<ergebnis>
<satz typ="AGENTUREN" />
<agenturen>
<agentur id="12345">
<name>Test Agency</name>
<code>001</code>
</agentur>
</agenturen>
</ergebnis>';
$crawler = new Crawler($xmlContent);
$resultNode = $crawler->filterXPath('//ergebnis');
$agencies = $this->parser->parse($resultNode);
$this->assertCount(1, $agencies);
$this->assertEquals(12345, $agencies[0]->id);
$this->assertEquals('Test Agency', $agencies[0]->name);
$this->assertEquals('001', $agencies[0]->code);
$this->assertNull($agencies[0]->street);
$this->assertNull($agencies[0]->postCode);
$this->assertNull($agencies[0]->city);
$this->assertNull($agencies[0]->phone);
}
public function testParseEmptyAgenciesList(): void
{
$xmlContent = '<?xml version="1.0" encoding="utf-8"?>
<ergebnis>
<satz typ="AGENTUREN" />
<agenturen>
</agenturen>
</ergebnis>';
$crawler = new Crawler($xmlContent);
$resultNode = $crawler->filterXPath('//ergebnis');
$agencies = $this->parser->parse($resultNode);
$this->assertCount(0, $agencies);
}
}