Files
myep/tests/BusProNet/DataLoader/TravelDataLoaderTest.php
T

66 lines
2.4 KiB
PHP

<?php
namespace App\Tests\BusProNet\DataLoader;
use App\BusProNet\Model\Travel;
use App\BusProNet\XmlLoader\HotelLoader;
use App\BusProNet\XmlLoader\TravelLoader;
use App\BusProNet\XmlParser\TravelParser;
use League\Flysystem\FilesystemOperator;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
class TravelDataLoaderTest extends TestCase
{
public function testLoadById(): void
{
$xmlContent = '<?xml version="1.0" encoding="utf-8"?>
<!--Export für dreipunktnull büro für mediengestaltung-->
<reisen>
<reise id="1" idbuspro="1234" code="DPWMP" erstellt_am="14.07.2025 15:02:01">
<termin id="1" idbuspro="11478" idprodukt="1234" termin="06.01.2025" bis="25.01.2025" code="DPWMP060125" reiseart="F">
<text>Davos - Sportclub Waldschlössli</text>
<abpreis>534.2</abpreis>
<hotel idbuspro="123">
<text>Test Hotel</text>
</hotel>
</termin>
</reise>
</reisen>';
$filesystem = $this->createMock(FilesystemOperator::class);
$filesystem->expects($this->once())
->method('read')
->with('test_file.xml')
->willReturn($xmlContent);
$hotelLoader = $this->createMock(HotelLoader::class);
$travelParser = $this->createMock(TravelParser::class);
$expectedTravel = new Travel();
$expectedTravel->code = 'DPWMP060125';
$expectedTravel->type = 'F';
$expectedTravel->dateFrom = new \DateTimeImmutable('2025-01-06');
$expectedTravel->dateTo = new \DateTimeImmutable('2025-01-25');
$expectedTravel->label = 'Davos - Sportclub Waldschlössli';
$expectedTravel->priceFrom = 534.2;
$travelParser->expects($this->once())
->method('parse')
->willReturn($expectedTravel);
$cache = new ArrayAdapter();
$loader = new TravelLoader($hotelLoader, $travelParser, 'http://example.com', $cache, $filesystem);
$travel = $loader->loadById(11478, null, 'test_file.xml');
$this->assertInstanceOf(Travel::class, $travel);
$this->assertEquals('DPWMP060125', $travel->code);
$this->assertEquals('F', $travel->type);
$this->assertInstanceOf(\DateTimeImmutable::class, $travel->dateFrom);
$this->assertInstanceOf(\DateTimeImmutable::class, $travel->dateTo);
$this->assertEquals('Davos - Sportclub Waldschlössli', $travel->label);
$this->assertEquals(534.2, $travel->priceFrom);
}
}