fix: refresh live room availability during create flow
This commit is contained in:
1 parent
a73e8a593f
commit
cdce7d57e0
26 files changed
+1976
-54
No files matched your search
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Tests\BusProNet\XmlParser;
|
||||
|
||||
use App\BusProNet\Constants;
|
||||
use App\BusProNet\Model\Room;
|
||||
use App\BusProNet\XmlParser\AvailabilitiesParser;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
|
||||
class AvailabilitiesParserTest extends TestCase
|
||||
{
|
||||
private AvailabilitiesParser $parser;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->parser = new AvailabilitiesParser();
|
||||
}
|
||||
|
||||
public function testParseRoomsNormalizesHotelAvailabilityStatuses(): void
|
||||
{
|
||||
$xml = <<<'XML'
|
||||
<ergebnis>
|
||||
<unterbringungen>
|
||||
<unterbringung id_zimmer="1" bezeichnung="Room 1" kategorie="A" verpflegung="Board" frei="1" status="buchbar" preis="749,00" />
|
||||
<unterbringung id_zimmer="2" bezeichnung="Room 2" kategorie="B" verpflegung="Board" frei="-900" status="anfrage" preis="849,00" />
|
||||
<unterbringung id_zimmer="3" bezeichnung="Room 3" kategorie="C" verpflegung="Board" frei="0" status="stopp" preis="949,00" />
|
||||
</unterbringungen>
|
||||
</ergebnis>
|
||||
XML;
|
||||
|
||||
$rooms = $this->parser->parseRooms(new Crawler($xml))->getItems();
|
||||
|
||||
$this->assertContainsOnlyInstancesOf(Room::class, $rooms);
|
||||
$this->assertSame(Constants::STATUS_AVAILABLE, $rooms[1]->status);
|
||||
$this->assertSame(Constants::STATUS_ON_REQUEST, $rooms[2]->status);
|
||||
$this->assertSame(Constants::STATUS_BLOCKED, $rooms[3]->status);
|
||||
}
|
||||
|
||||
public function testParseRoomsLogsUnrecognizedStatus(): void
|
||||
{
|
||||
$logger = $this->createMock(LoggerInterface::class);
|
||||
$logger->expects($this->once())
|
||||
->method('warning')
|
||||
->with(
|
||||
'Unrecognized room availability status from BusProNet XML',
|
||||
['status' => 'foo']
|
||||
);
|
||||
|
||||
$parser = new AvailabilitiesParser($logger);
|
||||
|
||||
$xml = <<<'XML'
|
||||
<ergebnis>
|
||||
<unterbringungen>
|
||||
<unterbringung id_zimmer="1" bezeichnung="Room 1" kategorie="A" verpflegung="Board" frei="1" status="foo" preis="749,00" />
|
||||
</unterbringungen>
|
||||
</ergebnis>
|
||||
XML;
|
||||
|
||||
$rooms = $parser->parseRooms(new Crawler($xml))->getItems();
|
||||
|
||||
$this->assertSame('foo', $rooms[1]->status);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user