new MockResponse(json_encode([ 'success' => true, 'name' => 'Hotel Alpin', 'address' => "Musterstraße 1\n1234 Musterort", 'description' => '
Beschreibung
', 'features' => 'Ausstattung
', 'room_types' => 'Zimmer
', 'additional_information' => 'Weitere Infos
', 'images' => ['resized' => ['l' => [['url' => 'l.jpg', 'alt' => 'Alt']]]], 'icons' => ['sauna' => ['label' => 'Sauna', 'value' => true]], 'region' => [ 'name' => 'Alpenregion', 'latitude' => 47.1, 'longitude' => 11.2, 'webcam' => 'https://webcam.test', 'ski_area' => 'Skigebiet
', 'ski_area_extended' => 'Mehr Skigebiet
', 'description' => 'Region
', 'news' => 'News
', 'length' => '42', 'altitude' => '1800', 'lifts' => '5', 'images' => ['resized' => ['l' => []]], 'region_maps' => ['map1.jpg', 'map2.jpg'], ], ], JSON_THROW_ON_ERROR))); $provider = new CmsDataProvider($client, new ArrayAdapter(), 'test-key'); $data = $provider->getHotelDetails('HOTEL1'); self::assertNotNull($data); self::assertSame('Hotel Alpin', $data->name); self::assertSame("Musterstraße 1\n1234 Musterort", $data->address); self::assertSame('Zimmer
', $data->roomTypes); self::assertSame('Weitere Infos
', $data->additionalInformation); self::assertSame(['sauna' => ['label' => 'Sauna', 'value' => true]], $data->icons); self::assertNotNull($data->region); self::assertSame('Alpenregion', $data->region->name); self::assertSame('Skigebiet
', $data->region->skiArea); self::assertSame('Mehr Skigebiet
', $data->region->skiAreaExtended); self::assertSame(['map1.jpg', 'map2.jpg'], $data->region->regionMaps); self::assertSame(42, $data->region->length); self::assertSame(1800, $data->region->altitude); self::assertSame(5, $data->region->lifts); self::assertSame(47.1, $data->region->latitude); self::assertSame(11.2, $data->region->longitude); } public function testGetHotelDetailsReturnsNullOnFailure(): void { $client = new MockHttpClient(fn () => new MockResponse('', ['http_code' => 500])); $provider = new CmsDataProvider($client, new ArrayAdapter(), 'test-key'); self::assertNull($provider->getHotelDetails('UNKNOWN')); } }