wip: booking process, refactoring
This commit is contained in:
@@ -4,22 +4,45 @@ namespace App\Tests\BusProNet\DataLoader;
|
||||
|
||||
use App\BusProNet\Model\Hotel;
|
||||
use App\BusProNet\XmlLoader\HotelLoader;
|
||||
use League\Flysystem\FilesystemOperator;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Cache\Adapter\ArrayAdapter;
|
||||
|
||||
class HotelDataLoaderTest extends TestCase
|
||||
{
|
||||
public function testParse(): void
|
||||
public function testLoadAll(): void
|
||||
{
|
||||
$loader = new HotelLoader(__DIR__.'/../../Resources');
|
||||
$hotelId = 163113;
|
||||
$xmlContent = '<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Export für dreipunktnull büro für mediengestaltung-->
|
||||
<hotels erstellt_am="14.07.2025 15:04:46">
|
||||
<hotel id="1" idbuspro="163113" code="SBWOXA">
|
||||
<name>L\'Oxalys</name>
|
||||
<ort>Val Thorens</ort>
|
||||
<land>F</land>
|
||||
<strasse>Rue des Lacs</strasse>
|
||||
<telefon></telefon>
|
||||
<art>Hotel</art>
|
||||
<internetbuchbar>True</internetbuchbar>
|
||||
</hotel>
|
||||
</hotels>';
|
||||
|
||||
$xml = $loader->loadById($hotelId, 'hotels_data.xml');
|
||||
$this->assertInstanceOf(\SimpleXMLElement::class, $xml);
|
||||
$filesystem = $this->createMock(FilesystemOperator::class);
|
||||
$filesystem->expects($this->once())
|
||||
->method('read')
|
||||
->with('hotel.xml')
|
||||
->willReturn($xmlContent);
|
||||
|
||||
$hotel = $loader->parseXml($xml);
|
||||
$cache = new ArrayAdapter();
|
||||
$loader = new HotelLoader($cache, $filesystem);
|
||||
|
||||
$hotels = $loader->loadAll();
|
||||
|
||||
$this->assertIsArray($hotels);
|
||||
$this->assertArrayHasKey(163113, $hotels);
|
||||
|
||||
$hotel = $hotels[163113];
|
||||
$this->assertInstanceOf(Hotel::class, $hotel);
|
||||
$this->assertEquals($hotelId, $hotel->id);
|
||||
$this->assertEquals(163113, $hotel->id);
|
||||
$this->assertEquals('L\'Oxalys', $hotel->name);
|
||||
$this->assertEquals('SBWOXA', $hotel->code);
|
||||
$this->assertEquals('Val Thorens', $hotel->city);
|
||||
|
||||
@@ -4,22 +4,41 @@ namespace App\Tests\BusProNet\DataLoader;
|
||||
|
||||
use App\BusProNet\Model\Pickup;
|
||||
use App\BusProNet\XmlLoader\PickupLoader;
|
||||
use League\Flysystem\FilesystemOperator;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Cache\Adapter\ArrayAdapter;
|
||||
|
||||
class PickupDataLoaderTest extends TestCase
|
||||
{
|
||||
public function testParse(): void
|
||||
public function testLoadById(): void
|
||||
{
|
||||
$loader = new PickupLoader();
|
||||
$pickupId = 1;
|
||||
$xmlContent = '<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Export für dreipunktnull büro für mediengestaltung-->
|
||||
<zustiege erstellt_am="14.07.2025 15:15:09">
|
||||
<zustieg id="1" idbuspro="1" code="MS-Hbf">
|
||||
<ort>Münster</ort>
|
||||
<plz>48143</plz>
|
||||
<strasse>Hafenstr/Ecke Friedrich-Ebert-Str</strasse>
|
||||
<art>BUS</art>
|
||||
<hausabholung>False</hausabholung>
|
||||
<crsbuchbar>True</crsbuchbar>
|
||||
<internetbuchbar>True</internetbuchbar>
|
||||
</zustieg>
|
||||
</zustiege>';
|
||||
|
||||
$xml = $loader->loadById($pickupId, 'pickups_data.xml');
|
||||
$this->assertInstanceOf(\SimpleXMLElement::class, $xml);
|
||||
$filesystem = $this->createMock(FilesystemOperator::class);
|
||||
$filesystem->expects($this->once())
|
||||
->method('read')
|
||||
->with('zustiege.xml')
|
||||
->willReturn($xmlContent);
|
||||
|
||||
$pickup = $loader->parseXml($xml);
|
||||
$cache = new ArrayAdapter();
|
||||
$loader = new PickupLoader($cache, $filesystem);
|
||||
|
||||
$pickup = $loader->loadById(1);
|
||||
|
||||
$this->assertInstanceOf(Pickup::class, $pickup);
|
||||
$this->assertEquals($pickupId, $pickup->id);
|
||||
$this->assertEquals(1, $pickup->id);
|
||||
$this->assertEquals('MS-Hbf', $pickup->code);
|
||||
$this->assertEquals('Münster', $pickup->city);
|
||||
$this->assertEquals('48143', $pickup->postalCode);
|
||||
|
||||
@@ -3,21 +3,56 @@
|
||||
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 testParse(): void
|
||||
public function testLoadById(): void
|
||||
{
|
||||
$loader = new TravelLoader('');
|
||||
$filename = __DIR__.'/../../Resources/travel_data.xml';
|
||||
$travelId = 11478;
|
||||
$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>';
|
||||
|
||||
$xml = $loader->loadById($travelId, $filename);
|
||||
$this->assertInstanceOf(\SimpleXMLElement::class, $xml);
|
||||
$filesystem = $this->createMock(FilesystemOperator::class);
|
||||
$filesystem->expects($this->once())
|
||||
->method('read')
|
||||
->with('test_file.xml')
|
||||
->willReturn($xmlContent);
|
||||
|
||||
$travel = $loader->parseXml($xml);
|
||||
$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);
|
||||
@@ -26,11 +61,5 @@ class TravelDataLoaderTest extends TestCase
|
||||
$this->assertInstanceOf(\DateTimeImmutable::class, $travel->dateTo);
|
||||
$this->assertEquals('Davos - Sportclub Waldschlössli', $travel->label);
|
||||
$this->assertEquals(534.2, $travel->priceFrom);
|
||||
|
||||
$this->assertCount(8, $travel->selectionGroups);
|
||||
$this->assertCount(27, $travel->additionalServices);
|
||||
$this->assertCount(5, $travel->transportationServices);
|
||||
$this->assertCount(7, $travel->pickupsTo);
|
||||
$this->assertCount(12, $travel->rooms);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user