From a9a6da1c700fd807dc04c8fa7ca3296b841255bb Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Mon, 4 Dec 2023 10:21:27 +0100 Subject: [PATCH] Use new JSON TCA Type --- .../TCA/tx_thuecat_import_log_entry.php | 2 +- .../TCA/tx_thuecat_parking_facility.php | 10 +- .../TCA/tx_thuecat_tourist_attraction.php | 12 +- Documentation/Changelog/3.0.0.rst | 3 +- .../Frontend/SecondTouristAttraction.php | 256 +++++++++++++++- .../TouristAttractionWithOfferTypes.php | 73 ++++- .../Frontend/TouristAttractionWithPrices.php | 38 ++- .../Fixtures/Frontend/TouristAttractions.php | 283 +++++++++++++++++- ...uristAttractionsForIsAccessibleForFree.php | 16 +- .../Frontend/TouristAttractionsForPets.php | 16 +- .../TouristAttractionsForPublicAccess.php | 16 +- Tests/Functional/FrontendTest.php | 252 ++++++++-------- ext_tables.sql | 12 - 13 files changed, 806 insertions(+), 183 deletions(-) diff --git a/Configuration/TCA/tx_thuecat_import_log_entry.php b/Configuration/TCA/tx_thuecat_import_log_entry.php index 3adfe0b..3b04852 100644 --- a/Configuration/TCA/tx_thuecat_import_log_entry.php +++ b/Configuration/TCA/tx_thuecat_import_log_entry.php @@ -85,7 +85,7 @@ return (static function (string $extensionKey, string $tableName) { 'errors' => [ 'label' => $languagePath . '.errors', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], diff --git a/Configuration/TCA/tx_thuecat_parking_facility.php b/Configuration/TCA/tx_thuecat_parking_facility.php index 73c0351..2be5e09 100644 --- a/Configuration/TCA/tx_thuecat_parking_facility.php +++ b/Configuration/TCA/tx_thuecat_parking_facility.php @@ -127,7 +127,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.opening_hours', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], @@ -135,7 +135,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.special_opening_hours', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], @@ -143,7 +143,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.address', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], @@ -151,7 +151,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.media', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], @@ -159,7 +159,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.offers', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], diff --git a/Configuration/TCA/tx_thuecat_tourist_attraction.php b/Configuration/TCA/tx_thuecat_tourist_attraction.php index 1cae9a1..e8c7223 100644 --- a/Configuration/TCA/tx_thuecat_tourist_attraction.php +++ b/Configuration/TCA/tx_thuecat_tourist_attraction.php @@ -192,7 +192,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.opening_hours', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], @@ -200,7 +200,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.special_opening_hours', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], @@ -208,7 +208,7 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.address', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], @@ -224,21 +224,21 @@ return (static function (string $extensionKey, string $tableName) { 'label' => $languagePath . '.media', 'l10n_mode' => 'exclude', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], 'offers' => [ 'label' => $languagePath . '.offers', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], 'accessibility_specification' => [ 'label' => $languagePath . '.accessibility_specification', 'config' => [ - 'type' => 'text', + 'type' => 'json', 'readOnly' => true, ], ], diff --git a/Documentation/Changelog/3.0.0.rst b/Documentation/Changelog/3.0.0.rst index 239b533..c8b5c52 100644 --- a/Documentation/Changelog/3.0.0.rst +++ b/Documentation/Changelog/3.0.0.rst @@ -23,7 +23,8 @@ Nothing Tasks ----- -Nothing +* Use new TYPO3 JSON types. + That way TYPO3 backend will properly render the stored JSON of those fields. Deprecation ----------- diff --git a/Tests/Functional/Fixtures/Frontend/SecondTouristAttraction.php b/Tests/Functional/Fixtures/Frontend/SecondTouristAttraction.php index 77206cd..a897e6e 100644 --- a/Tests/Functional/Fixtures/Frontend/SecondTouristAttraction.php +++ b/Tests/Functional/Fixtures/Frontend/SecondTouristAttraction.php @@ -10,11 +10,198 @@ return [ 'title' => 'Eine weitere Attraktion', 'description' => 'Die Beschreibung der Attraktion', 'town' => '1', - 'media' => '[{"mainImage":true,"type":"image","title":"Erfurt-Dom und Severikirche-beleuchtet.jpg","description":"","url":"https:\\/\\/cms.thuecat.org\\/o\\/adaptive-media\\/image\\/5159216\\/Preview-1280x0\\/image","copyrightYear":2016,"author":"Image Author","license":{"type":"https:\\/\\/creativecommons.org\\/licenses\\/by\\/4.0\\/","author":""}},{"mainImage":false,"type":"image","title":"Erfurt-Dom-und-Severikirche.jpg","description":"Sicht auf Dom St. Marien, St. Severikirche sowie die davor liegenden Klostergeb\\u00e4ude und einem Ausschnitt des Biergartens umgeben von einem d\\u00e4mmerungsverf\\u00e4rten Himmel","url":"https:\\/\\/cms.thuecat.org\\/o\\/adaptive-media\\/image\\/5159186\\/Preview-1280x0\\/image","copyrightYear":2020,"license":{"type":"https:\\/\\/creativecommons.org\\/licenses\\/by\\/4.0\\/","author":""}},{"mainImage":false,"type":"image","title":"Erfurt-Dom und Severikirche-beleuchtet.jpg","description":"","url":"https:\\/\\/cms.thuecat.org\\/o\\/adaptive-media\\/image\\/5159216\\/Preview-1280x0\\/image","copyrightYear":2016,"license":{"type":"https:\\/\\/creativecommons.org\\/licenses\\/by\\/4.0\\/","author":""}}]', - 'opening_hours' => '[{"opens":"09:30:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday"]},{"opens":"09:30:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday","PublicHolidays"]}]', - 'address' => '{"street":"Beispielstraße 1a","zip":"99084","city":"Beispielstadt","email":"example@example.com","phone":"(0)30 23125 000","fax":"","geo":{"latitude":50.975955358589545,"longitude":11.023667024961856}}', + 'media' => [ + 0 => (object)[ + 'mainImage' => true, + 'type' => 'image', + 'title' => 'Erfurt-Dom und Severikirche-beleuchtet.jpg', + 'description' => '', + 'url' => 'https://cms.thuecat.org/o/adaptive-media/image/5159216/Preview-1280x0/image', + 'copyrightYear' => 2016, + 'author' => 'Image Author', + 'license' => (object)[ + 'type' => 'https://creativecommons.org/licenses/by/4.0/', + 'author' => '', + ], + ], + 1 => (object)[ + 'mainImage' => false, + 'type' => 'image', + 'title' => 'Erfurt-Dom-und-Severikirche.jpg', + 'description' => 'Sicht auf Dom St. Marien, St. Severikirche sowie die davor liegenden Klostergebäude und einem Ausschnitt des Biergartens umgeben von einem dämmerungsverfärten Himmel', + 'url' => 'https://cms.thuecat.org/o/adaptive-media/image/5159186/Preview-1280x0/image', + 'copyrightYear' => 2020, + 'license' => (object)[ + 'type' => 'https://creativecommons.org/licenses/by/4.0/', + 'author' => '', + ], + ], + 2 => (object)[ + 'mainImage' => false, + 'type' => 'image', + 'title' => 'Erfurt-Dom und Severikirche-beleuchtet.jpg', + 'description' => '', + 'url' => 'https://cms.thuecat.org/o/adaptive-media/image/5159216/Preview-1280x0/image', + 'copyrightYear' => 2016, + 'license' => (object)[ + 'type' => 'https://creativecommons.org/licenses/by/4.0/', + 'author' => '', + ], + ], + ], + 'opening_hours' => [ + 0 => (object)[ + 'opens' => '09:30:00', + 'closes' => '18:00:00', + 'from' => (object)[ + 'date' => '2021-05-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2021-10-31 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Saturday', + 1 => 'Friday', + 2 => 'Thursday', + 3 => 'Tuesday', + 4 => 'Monday', + 5 => 'Wednesday', + ], + ], + 1 => (object)[ + 'opens' => '13:00:00', + 'closes' => '18:00:00', + 'from' => (object)[ + 'date' => '2021-05-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2021-10-31 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Sunday', + ], + ], + 2 => (object)[ + 'opens' => '09:30:00', + 'closes' => '17:00:00', + 'from' => (object)[ + 'date' => '2021-11-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2022-04-30 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Saturday', + 1 => 'Friday', + 2 => 'Thursday', + 3 => 'Tuesday', + 4 => 'Monday', + 5 => 'Wednesday', + ], + ], + 3 => (object)[ + 'opens' => '13:00:00', + 'closes' => '17:00:00', + 'from' => (object)[ + 'date' => '2021-11-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2022-04-30 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Sunday', + 1 => 'PublicHolidays', + ], + ], + ], + 'address' => (object)[ + 'street' => 'Beispielstraße 1a', + 'zip' => '99084', + 'city' => 'Beispielstadt', + 'email' => 'example@example.com', + 'phone' => '(0)30 23125 000', + 'fax' => '', + 'geo' => (object)[ + 'latitude' => 50.975955358589545, + 'longitude' => 11.023667024961856, + ], + ], 'url' => 'https://example.com/attraction', - 'offers' => '[{"type":"GuidedTourOffer","title":"F\\u00fchrungen","description":"Immer samstags, um 11:15 Uhr findet eine \\u00f6ffentliche F\\u00fchrung durch das Museum statt. Dauer etwa 90 Minuten","prices":[{"title":"Erwachsene","description":"","price":8,"currency":"EUR","rule":"PerPerson"},{"title":"Erm\\u00e4\\u00dfigt","description":"als erm\\u00e4\\u00dfigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner\\/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt","price":5,"currency":"EUR","rule":"PerPerson"}]},{"type":"EntryOffer","title":"Eintritt","description":"Schulklassen und Kitagruppen im Rahmen des Unterrichts: Eintritt frei\\nAn jedem ersten Dienstag im Monat: Eintritt frei","prices":[{"title":"Erm\\u00e4\\u00dfigt","description":"als erm\\u00e4\\u00dfigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner\\/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt","price":5,"currency":"EUR","rule":"PerPerson"},{"title":"Familienkarte","description":"","price":17,"currency":"EUR","rule":"PerGroup"},{"title":"ErfurtCard","description":"","price":14.9,"currency":"EUR","rule":"PerPackage"},{"title":"Erwachsene","description":"","price":8,"currency":"EUR","rule":"PerPerson"}]}]', + 'offers' => [ + 0 => (object)[ + 'type' => 'GuidedTourOffer', + 'title' => 'Führungen', + 'description' => 'Immer samstags, um 11:15 Uhr findet eine öffentliche Führung durch das Museum statt. Dauer etwa 90 Minuten', + 'prices' => [ + 0 => (object)[ + 'title' => 'Erwachsene', + 'description' => '', + 'price' => 8, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + 1 => (object)[ + 'title' => 'Ermäßigt', + 'description' => 'als ermäßigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt', + 'price' => 5, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + ], + ], + 1 => (object)[ + 'type' => 'EntryOffer', + 'title' => 'Eintritt', + 'description' => 'Schulklassen und Kitagruppen im Rahmen des Unterrichts: Eintritt frei' + . PHP_EOL . 'An jedem ersten Dienstag im Monat: Eintritt frei', + 'prices' => [ + 0 => (object)[ + 'title' => 'Ermäßigt', + 'description' => 'als ermäßigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt', + 'price' => 5, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + 1 => (object)[ + 'title' => 'Familienkarte', + 'description' => '', + 'price' => 17, + 'currency' => 'EUR', + 'rule' => 'PerGroup', + ], + 2 => (object)[ + 'title' => 'ErfurtCard', + 'description' => '', + 'price' => 14.9, + 'currency' => 'EUR', + 'rule' => 'PerPackage', + ], + 3 => (object)[ + 'title' => 'Erwachsene', + 'description' => '', + 'price' => 8, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + ], + ], + ], 'slogan' => 'Highlight', 'start_of_construction' => '11. Jh', 'sanitation' => 'Toilets,DisabledToilets,NappyChangingArea,FamilyAndChildFriendly', @@ -29,7 +216,66 @@ return [ 'available_languages' => 'German,English,French', 'distance_to_public_transport' => '250:MTR', 'parking_facility_near_by' => '1,2', - 'accessibility_specification' => '{"accessibilityCertificationStatus":"AccessibilityChecked","accessibilitySearchCriteria":{"facilityAccessibilityDeaf":["AudioInductionLoop","FlashingSignalCallWaitingDoor","SpecialOffersDeafPeople","SpecialOffersHearingImpairment","VisualConfirmationDistressCallElevator"],"facilityAccessibilityMental":["ColoredOrPictorialGuidanceSystem","InformationInEasyLanguage","InformationWithPictogramsOrPictures"],"facilityAccessibilityVisual":["AssistanceDogsWelcome","GuidanceSystemWithFloorIndicators","InformationBrailleOrPrismaticFont","OffersInPictoralLanguage","SpecialOffersBlindPeople","SpecialOffersVisualImpairment","TactileOffers","VisuallyContrastingStepEdges"],"facilityAccessibilityWalking":["AllRoomsStepFreeAccess","EightyCMWidthPassageWays","EntryAidSwimmingPool","GrabRailInShower","HandrailsOnBothSidesOfAllStaircases","HingedGrabRailToilet","LateralAccessibleToilet","MinumumManoeuvringSpaceShower","NinetyCMWidthPassageWays","NursingBed","ParkingPeopleWithDisabilities","SeventyCMWidthPassageWays","ShowerSeat","SpecialOffersWalkingImpairment","SpecialOffersWheelchairUsers","StepFreeAccess","StepFreeShower","ToiletsPeopleWithDisabilities"]},"certificationAccessibilityDeaf":"Full","certificationAccessibilityMental":"None","certificationAccessibilityPartiallyDeaf":"None","certificationAccessibilityPartiallyVisual":"Info","certificationAccessibilityVisual":"None","certificationAccessibilityWalking":"Info","certificationAccessibilityWheelchair":"Info","shortDescriptionAccessibilityAllGenerations":"Deutsche Beschreibung von shortDescriptionAccessibilityAllGenerations","shortDescriptionAccessibilityAllergic":"Deutsche Beschreibung von shortDescriptionAccessibilityAllergic","shortDescriptionAccessibilityDeaf":"Deutsche Beschreibung von shortDescriptionAccessibilityDeaf","shortDescriptionAccessibilityMental":"Deutsche Beschreibung von shortDescriptionAccessibilityMental","shortDescriptionAccessibilityVisual":"Deutsche Beschreibung von shortDescriptionAccessibilityVisual","shortDescriptionAccessibilityWalking":"Deutsche Beschreibung von shortDescriptionAccessibilityWalking"}', + 'accessibility_specification' => (object)[ + 'accessibilityCertificationStatus' => 'AccessibilityChecked', + 'accessibilitySearchCriteria' => (object)[ + 'facilityAccessibilityDeaf' => [ + 0 => 'AudioInductionLoop', + 1 => 'FlashingSignalCallWaitingDoor', + 2 => 'SpecialOffersDeafPeople', + 3 => 'SpecialOffersHearingImpairment', + 4 => 'VisualConfirmationDistressCallElevator', + ], + 'facilityAccessibilityMental' => [ + 0 => 'ColoredOrPictorialGuidanceSystem', + 1 => 'InformationInEasyLanguage', + 2 => 'InformationWithPictogramsOrPictures', + ], + 'facilityAccessibilityVisual' => [ + 0 => 'AssistanceDogsWelcome', + 1 => 'GuidanceSystemWithFloorIndicators', + 2 => 'InformationBrailleOrPrismaticFont', + 3 => 'OffersInPictoralLanguage', + 4 => 'SpecialOffersBlindPeople', + 5 => 'SpecialOffersVisualImpairment', + 6 => 'TactileOffers', + 7 => 'VisuallyContrastingStepEdges', + ], + 'facilityAccessibilityWalking' => [ + 0 => 'AllRoomsStepFreeAccess', + 1 => 'EightyCMWidthPassageWays', + 2 => 'EntryAidSwimmingPool', + 3 => 'GrabRailInShower', + 4 => 'HandrailsOnBothSidesOfAllStaircases', + 5 => 'HingedGrabRailToilet', + 6 => 'LateralAccessibleToilet', + 7 => 'MinumumManoeuvringSpaceShower', + 8 => 'NinetyCMWidthPassageWays', + 9 => 'NursingBed', + 10 => 'ParkingPeopleWithDisabilities', + 11 => 'SeventyCMWidthPassageWays', + 12 => 'ShowerSeat', + 13 => 'SpecialOffersWalkingImpairment', + 14 => 'SpecialOffersWheelchairUsers', + 15 => 'StepFreeAccess', + 16 => 'StepFreeShower', + 17 => 'ToiletsPeopleWithDisabilities', + ], + ], + 'certificationAccessibilityDeaf' => 'Full', + 'certificationAccessibilityMental' => 'None', + 'certificationAccessibilityPartiallyDeaf' => 'None', + 'certificationAccessibilityPartiallyVisual' => 'Info', + 'certificationAccessibilityVisual' => 'None', + 'certificationAccessibilityWalking' => 'Info', + 'certificationAccessibilityWheelchair' => 'Info', + 'shortDescriptionAccessibilityAllGenerations' => 'Deutsche Beschreibung von shortDescriptionAccessibilityAllGenerations', + 'shortDescriptionAccessibilityAllergic' => 'Deutsche Beschreibung von shortDescriptionAccessibilityAllergic', + 'shortDescriptionAccessibilityDeaf' => 'Deutsche Beschreibung von shortDescriptionAccessibilityDeaf', + 'shortDescriptionAccessibilityMental' => 'Deutsche Beschreibung von shortDescriptionAccessibilityMental', + 'shortDescriptionAccessibilityVisual' => 'Deutsche Beschreibung von shortDescriptionAccessibilityVisual', + 'shortDescriptionAccessibilityWalking' => 'Deutsche Beschreibung von shortDescriptionAccessibilityWalking', + ], ], ], ]; diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionWithOfferTypes.php b/Tests/Functional/Fixtures/Frontend/TouristAttractionWithOfferTypes.php index f854793..8d41c04 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionWithOfferTypes.php +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionWithOfferTypes.php @@ -8,7 +8,78 @@ return [ 'uid' => '1', 'pid' => '3', 'title' => 'Attraktion mit Angebotstypen', - 'offers' => '[{"description":"","prices":[{"currency":"EUR","description":"","price":8,"rule":"PerGroup","title":"Schulklassen"}],"title":"Führungen","type":"GuidedTourOffer"},{"description":"","prices":[{"currency":"EUR","description":"","price":8,"rule":"PerGroup","title":"Schulklassen"}],"title":"Verkostung","type":"Tasting"},{"description":"","prices":[{"currency":"EUR","description":"","price":8,"rule":"PerGroup","title":"Schulklassen"}],"title":"Eintritt 1","type":"EntryOffer"},{"description":"","prices":[{"currency":"EUR","description":"","price":8,"rule":"PerGroup","title":"Schulklassen"}],"title":"Eintritt 2","type":"EntryOffer"},{"description":"","prices":[{"currency":"EUR","description":"","price":8,"rule":"PerGroup","title":"Schulklassen"}],"title":"Parkgebühr","type":"ParkingFee"}]', + 'offers' => [ + 0 => (object)[ + 'description' => '', + 'prices' => [ + 0 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 8, + 'rule' => 'PerGroup', + 'title' => 'Schulklassen', + ], + ], + 'title' => 'Führungen', + 'type' => 'GuidedTourOffer', + ], + 1 => (object)[ + 'description' => '', + 'prices' => [ + 0 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 8, + 'rule' => 'PerGroup', + 'title' => 'Schulklassen', + ], + ], + 'title' => 'Verkostung', + 'type' => 'Tasting', + ], + 2 => (object)[ + 'description' => '', + 'prices' => [ + 0 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 8, + 'rule' => 'PerGroup', + 'title' => 'Schulklassen', + ], + ], + 'title' => 'Eintritt 1', + 'type' => 'EntryOffer', + ], + 3 => (object)[ + 'description' => '', + 'prices' => [ + 0 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 8, + 'rule' => 'PerGroup', + 'title' => 'Schulklassen', + ], + ], + 'title' => 'Eintritt 2', + 'type' => 'EntryOffer', + ], + 4 => (object)[ + 'description' => '', + 'prices' => [ + 0 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 8, + 'rule' => 'PerGroup', + 'title' => 'Schulklassen', + ], + ], + 'title' => 'Parkgebühr', + 'type' => 'ParkingFee', + ], + ], ], ], ]; diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionWithPrices.php b/Tests/Functional/Fixtures/Frontend/TouristAttractionWithPrices.php index ff47721..01d9178 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionWithPrices.php +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionWithPrices.php @@ -8,7 +8,43 @@ return [ 'uid' => '1', 'pid' => '3', 'title' => 'Attraktion mit Preisen', - 'offers' => '[{"prices":[{"currency":"EUR","description":"","price":8,"rule":"PerGroup","title":"Schulklassen"},{"currency":"EUR","description":"","price":8,"rule":"PerPerson","title":"Erwachsene"},{"currency":"EUR","description":"","price":5,"rule":"PerPerson","title":"Familienkarte B"},{"currency":"EUR","description":"","price":5,"rule":"PerPerson","title":"Familienkarte A"}],"description":"","title":"Führungen","type":"GuidedTourOffer"}]', + 'offers' => [ + 0 => (object)[ + 'prices' => [ + 0 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 8, + 'rule' => 'PerGroup', + 'title' => 'Schulklassen', + ], + 1 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 8, + 'rule' => 'PerPerson', + 'title' => 'Erwachsene', + ], + 2 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 5, + 'rule' => 'PerPerson', + 'title' => 'Familienkarte B', + ], + 3 => (object)[ + 'currency' => 'EUR', + 'description' => '', + 'price' => 5, + 'rule' => 'PerPerson', + 'title' => 'Familienkarte A', + ], + ], + 'description' => '', + 'title' => 'Führungen', + 'type' => 'GuidedTourOffer', + ], + ], ], ], ]; diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractions.php b/Tests/Functional/Fixtures/Frontend/TouristAttractions.php index b2f9ae9..003e0d2 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractions.php +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractions.php @@ -10,11 +10,199 @@ return [ 'title' => 'Erste Attraktion', 'description' => 'Die Beschreibung der Attraktion', 'town' => '1', - 'media' => '[{"mainImage":true,"type":"image","title":"Erfurt-Dom und Severikirche-beleuchtet.jpg","description":"","url":"https:\\/\\/cms.thuecat.org\\/o\\/adaptive-media\\/image\\/5159216\\/Preview-1280x0\\/image","copyrightYear":2016,"author":"Image Author","license":{"type":"https:\\/\\/creativecommons.org\\/licenses\\/by\\/4.0\\/","author":""}},{"mainImage":false,"type":"image","title":"Erfurt-Dom-und-Severikirche.jpg","description":"Sicht auf Dom St. Marien, St. Severikirche sowie die davor liegenden Klostergeb\\u00e4ude und einem Ausschnitt des Biergartens umgeben von einem d\\u00e4mmerungsverf\\u00e4rten Himmel","url":"https:\\/\\/cms.thuecat.org\\/o\\/adaptive-media\\/image\\/5159186\\/Preview-1280x0\\/image","copyrightYear":2020,"license":{"type":"https:\\/\\/creativecommons.org\\/licenses\\/by\\/4.0\\/","author":""}},{"mainImage":false,"type":"image","title":"Erfurt-Dom und Severikirche-beleuchtet.jpg","description":"","url":"https:\\/\\/cms.thuecat.org\\/o\\/adaptive-media\\/image\\/5159216\\/Preview-1280x0\\/image","copyrightYear":2016,"license":{"type":"https:\\/\\/creativecommons.org\\/licenses\\/by\\/4.0\\/","author":""}}]', - 'opening_hours' => '[{"opens":"09:30:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday"]},{"opens":"09:30:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday","PublicHolidays"]}]', - 'address' => '{"street":"Beispielstraße 1a","zip":"99084","city":"Beispielstadt","email":"example@example.com","phone":"(0)30 23125 000","fax":"","geo":{"latitude":50.975955358589545,"longitude":11.023667024961856}}', + 'media' => [ + 0 => (object)[ + 'mainImage' => true, + 'type' => 'image', + 'title' => 'Erfurt-Dom und Severikirche-beleuchtet.jpg', + 'description' => '', + 'url' => 'https://cms.thuecat.org/o/adaptive-media/image/5159216/Preview-1280x0/image', + 'copyrightYear' => 2016, + 'author' => 'Image Author', + 'license' => (object)[ + 'type' => 'https://creativecommons.org/licenses/by/4.0/', + 'author' => '', + ], + ], + 1 => (object)[ + 'mainImage' => false, + 'type' => 'image', + 'title' => 'Erfurt-Dom-und-Severikirche.jpg', + 'description' => 'Sicht auf Dom St. Marien, St. Severikirche sowie die davor liegenden Klostergebäude und einem Ausschnitt des Biergartens umgeben von einem dämmerungsverfärten Himmel', + 'url' => 'https://cms.thuecat.org/o/adaptive-media/image/5159186/Preview-1280x0/image', + 'copyrightYear' => 2020, + 'license' => (object)[ + 'type' => 'https://creativecommons.org/licenses/by/4.0/', + 'author' => '', + ], + ], + 2 => (object)[ + 'mainImage' => false, + 'type' => 'image', + 'title' => 'Erfurt-Dom und Severikirche-beleuchtet.jpg', + 'description' => '', + 'url' => 'https://cms.thuecat.org/o/adaptive-media/image/5159216/Preview-1280x0/image', + 'copyrightYear' => 2016, + 'license' => (object)[ + 'type' => 'https://creativecommons.org/licenses/by/4.0/', + 'author' => '', + ], + ], + ], + 'opening_hours' => [ + 0 => (object)[ + 'opens' => '09:30:00', + 'closes' => '18:00:00', + 'from' => (object)[ + 'date' => '2021-05-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2021-10-31 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Saturday', + 1 => 'Friday', + 2 => 'Thursday', + 3 => 'Tuesday', + 4 => 'Monday', + 5 => 'Wednesday', + ], + ], + 1 => (object)[ + 'opens' => '13:00:00', + 'closes' => '18:00:00', + 'from' => (object)[ + 'date' => '2021-05-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2021-10-31 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Sunday', + ], + ], + 2 => (object)[ + 'opens' => '09:30:00', + 'closes' => '17:00:00', + 'from' => (object)[ + 'date' => '2021-11-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2022-04-30 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Saturday', + 1 => 'Friday', + 2 => 'Thursday', + 3 => 'Tuesday', + 4 => 'Monday', + 5 => 'Wednesday', + ], + ], + 3 => (object)[ + 'opens' => '13:00:00', + 'closes' => '17:00:00', + 'from' => (object)[ + 'date' => '2021-11-01 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'through' => (object)[ + 'date' => '2022-04-30 00:00:00.000000', + 'timezone_type' => 3, + 'timezone' => 'UTC', + ], + 'daysOfWeek' => [ + 0 => 'Sunday', + 1 => 'PublicHolidays', + ], + ], + ], + 'address' => (object)[ + 'street' => 'Beispielstraße 1a', + 'zip' => '99084', + 'city' => 'Beispielstadt', + 'email' => 'example@example.com', + 'phone' => '(0)30 23125 000', + 'fax' => '', + 'geo' => (object)[ + 'latitude' => 50.975955358589545, + 'longitude' => 11.023667024961856, + ], + ] + , 'url' => 'https://example.com/attraction', - 'offers' => '[{"type":"GuidedTourOffer","title":"F\\u00fchrungen","description":"Immer samstags, um 11:15 Uhr findet eine \\u00f6ffentliche F\\u00fchrung durch das Museum statt. Dauer etwa 90 Minuten","prices":[{"title":"Erwachsene","description":"","price":8,"currency":"EUR","rule":"PerPerson"},{"title":"Erm\\u00e4\\u00dfigt","description":"als erm\\u00e4\\u00dfigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner\\/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt","price":5,"currency":"EUR","rule":"PerPerson"}]},{"type":"EntryOffer","title":"Eintritt","description":"Schulklassen und Kitagruppen im Rahmen des Unterrichts: Eintritt frei\\nAn jedem ersten Dienstag im Monat: Eintritt frei","prices":[{"title":"Erm\\u00e4\\u00dfigt","description":"als erm\\u00e4\\u00dfigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner\\/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt","price":5,"currency":"EUR","rule":"PerPerson"},{"title":"Familienkarte","description":"","price":17,"currency":"EUR","rule":"PerGroup"},{"title":"ErfurtCard","description":"","price":14.9,"currency":"EUR","rule":"PerPackage"},{"title":"Erwachsene","description":"","price":8,"currency":"EUR","rule":"PerPerson"}]}]', + 'offers' => [ + 0 => (object)[ + 'type' => 'GuidedTourOffer', + 'title' => 'Führungen', + 'description' => 'Immer samstags, um 11:15 Uhr findet eine öffentliche Führung durch das Museum statt. Dauer etwa 90 Minuten', + 'prices' => [ + 0 => (object)[ + 'title' => 'Erwachsene', + 'description' => '', + 'price' => 8, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + 1 => (object)[ + 'title' => 'Ermäßigt', + 'description' => 'als ermäßigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt', + 'price' => 5, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + ], + ], + 1 => (object)[ + 'type' => 'EntryOffer', + 'title' => 'Eintritt', + 'description' => 'Schulklassen und Kitagruppen im Rahmen des Unterrichts: Eintritt frei' + . PHP_EOL . 'An jedem ersten Dienstag im Monat: Eintritt frei', + 'prices' => [ + 0 => (object)[ + 'title' => 'Ermäßigt', + 'description' => 'als ermäßigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt', + 'price' => 5, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + 1 => (object)[ + 'title' => 'Familienkarte', + 'description' => '', + 'price' => 17, + 'currency' => 'EUR', + 'rule' => 'PerGroup', + ], + 2 => (object)[ + 'title' => 'ErfurtCard', + 'description' => '', + 'price' => 14.9, + 'currency' => 'EUR', + 'rule' => 'PerPackage', + ], + 3 => (object)[ + 'title' => 'Erwachsene', + 'description' => '', + 'price' => 8, + 'currency' => 'EUR', + 'rule' => 'PerPerson', + ], + ], + ], + ], 'slogan' => 'Highlight', 'start_of_construction' => '11. Jh', 'sanitation' => 'Toilets,DisabledToilets,NappyChangingArea,FamilyAndChildFriendly', @@ -29,7 +217,66 @@ return [ 'available_languages' => 'German,English,French', 'distance_to_public_transport' => '250:MTR', 'parking_facility_near_by' => '1,2', - 'accessibility_specification' => '{"accessibilityCertificationStatus":"AccessibilityChecked","accessibilitySearchCriteria":{"facilityAccessibilityDeaf":["AudioInductionLoop","FlashingSignalCallWaitingDoor","SpecialOffersDeafPeople","SpecialOffersHearingImpairment","VisualConfirmationDistressCallElevator"],"facilityAccessibilityMental":["ColoredOrPictorialGuidanceSystem","InformationInEasyLanguage","InformationWithPictogramsOrPictures"],"facilityAccessibilityVisual":["AssistanceDogsWelcome","GuidanceSystemWithFloorIndicators","InformationBrailleOrPrismaticFont","OffersInPictoralLanguage","SpecialOffersBlindPeople","SpecialOffersVisualImpairment","TactileOffers","VisuallyContrastingStepEdges"],"facilityAccessibilityWalking":["AllRoomsStepFreeAccess","EightyCMWidthPassageWays","EntryAidSwimmingPool","GrabRailInShower","HandrailsOnBothSidesOfAllStaircases","HingedGrabRailToilet","LateralAccessibleToilet","MinumumManoeuvringSpaceShower","NinetyCMWidthPassageWays","NursingBed","ParkingPeopleWithDisabilities","SeventyCMWidthPassageWays","ShowerSeat","SpecialOffersWalkingImpairment","SpecialOffersWheelchairUsers","StepFreeAccess","StepFreeShower","ToiletsPeopleWithDisabilities"]},"certificationAccessibilityDeaf":"Full","certificationAccessibilityMental":"None","certificationAccessibilityPartiallyDeaf":"None","certificationAccessibilityPartiallyVisual":"Info","certificationAccessibilityVisual":"None","certificationAccessibilityWalking":"Info","certificationAccessibilityWheelchair":"Info","shortDescriptionAccessibilityAllGenerations":"Deutsche Beschreibung von shortDescriptionAccessibilityAllGenerations","shortDescriptionAccessibilityAllergic":"Deutsche Beschreibung von shortDescriptionAccessibilityAllergic","shortDescriptionAccessibilityDeaf":"Deutsche Beschreibung von shortDescriptionAccessibilityDeaf","shortDescriptionAccessibilityMental":"Deutsche Beschreibung von shortDescriptionAccessibilityMental","shortDescriptionAccessibilityVisual":"Deutsche Beschreibung von shortDescriptionAccessibilityVisual","shortDescriptionAccessibilityWalking":"Deutsche Beschreibung von shortDescriptionAccessibilityWalking"}', + 'accessibility_specification' => (object)[ + 'accessibilityCertificationStatus' => 'AccessibilityChecked', + 'accessibilitySearchCriteria' => (object)[ + 'facilityAccessibilityDeaf' => [ + 0 => 'AudioInductionLoop', + 1 => 'FlashingSignalCallWaitingDoor', + 2 => 'SpecialOffersDeafPeople', + 3 => 'SpecialOffersHearingImpairment', + 4 => 'VisualConfirmationDistressCallElevator', + ], + 'facilityAccessibilityMental' => [ + 0 => 'ColoredOrPictorialGuidanceSystem', + 1 => 'InformationInEasyLanguage', + 2 => 'InformationWithPictogramsOrPictures', + ], + 'facilityAccessibilityVisual' => [ + 0 => 'AssistanceDogsWelcome', + 1 => 'GuidanceSystemWithFloorIndicators', + 2 => 'InformationBrailleOrPrismaticFont', + 3 => 'OffersInPictoralLanguage', + 4 => 'SpecialOffersBlindPeople', + 5 => 'SpecialOffersVisualImpairment', + 6 => 'TactileOffers', + 7 => 'VisuallyContrastingStepEdges', + ], + 'facilityAccessibilityWalking' => [ + 0 => 'AllRoomsStepFreeAccess', + 1 => 'EightyCMWidthPassageWays', + 2 => 'EntryAidSwimmingPool', + 3 => 'GrabRailInShower', + 4 => 'HandrailsOnBothSidesOfAllStaircases', + 5 => 'HingedGrabRailToilet', + 6 => 'LateralAccessibleToilet', + 7 => 'MinumumManoeuvringSpaceShower', + 8 => 'NinetyCMWidthPassageWays', + 9 => 'NursingBed', + 10 => 'ParkingPeopleWithDisabilities', + 11 => 'SeventyCMWidthPassageWays', + 12 => 'ShowerSeat', + 13 => 'SpecialOffersWalkingImpairment', + 14 => 'SpecialOffersWheelchairUsers', + 15 => 'StepFreeAccess', + 16 => 'StepFreeShower', + 17 => 'ToiletsPeopleWithDisabilities', + ], + ], + 'certificationAccessibilityDeaf' => 'Full', + 'certificationAccessibilityMental' => 'None', + 'certificationAccessibilityPartiallyDeaf' => 'None', + 'certificationAccessibilityPartiallyVisual' => 'Info', + 'certificationAccessibilityVisual' => 'None', + 'certificationAccessibilityWalking' => 'Info', + 'certificationAccessibilityWheelchair' => 'Info', + 'shortDescriptionAccessibilityAllGenerations' => 'Deutsche Beschreibung von shortDescriptionAccessibilityAllGenerations', + 'shortDescriptionAccessibilityAllergic' => 'Deutsche Beschreibung von shortDescriptionAccessibilityAllergic', + 'shortDescriptionAccessibilityDeaf' => 'Deutsche Beschreibung von shortDescriptionAccessibilityDeaf', + 'shortDescriptionAccessibilityMental' => 'Deutsche Beschreibung von shortDescriptionAccessibilityMental', + 'shortDescriptionAccessibilityVisual' => 'Deutsche Beschreibung von shortDescriptionAccessibilityVisual', + 'shortDescriptionAccessibilityWalking' => 'Deutsche Beschreibung von shortDescriptionAccessibilityWalking', + ], ], ], 'tx_thuecat_town' => [ @@ -45,13 +292,35 @@ return [ 'uid' => '1', 'pid' => '3', 'title' => 'Parkhaus Domplatz', - 'address' => '{"street":"Bechtheimer Str. 1","zip":"99084","city":"Erfurt","email":"info@stadtwerke-erfurt.de","phone":"+49 361 5640","fax":"","geo":{"latitude":50.977648905044,"longitude":11.022127985954299}}', + 'address' => (object)[ + 'street' => 'Bechtheimer Str. 1', + 'zip' => '99084', + 'city' => 'Erfurt', + 'email' => 'info@stadtwerke-erfurt.de', + 'phone' => '+49 361 5640', + 'fax' => '', + 'geo' => (object)[ + 'latitude' => 50.977648905044, + 'longitude' => 11.022127985954299, + ], + ], ], 1 => [ 'uid' => '2', 'pid' => '3', 'title' => 'Q-Park Anger 1 Parkhaus', - 'address' => '{"street":"Anger 1","zip":"99084","city":"Erfurt","email":"servicecenter@q-park.de","phone":"+49 218 18190290","fax":"","geo":{"latitude":50.977999330565794,"longitude":11.037503264052475}}', + 'address' => (object)[ + 'street' => 'Anger 1', + 'zip' => '99084', + 'city' => 'Erfurt', + 'email' => 'servicecenter@q-park.de', + 'phone' => '+49 218 18190290', + 'fax' => '', + 'geo' => (object)[ + 'latitude' => 50.977999330565794, + 'longitude' => 11.037503264052475, + ], + ], ], ], ]; diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.php b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.php index 4953f8b..70580f8 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.php +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.php @@ -10,10 +10,10 @@ return [ 'title' => 'Attraktion mit false', 'description' => '', 'town' => '0', - 'media' => '', - 'opening_hours' => '', - 'address' => '', - 'offers' => '', + 'media' => [], + 'opening_hours' => [], + 'address' => [], + 'offers' => [], 'slogan' => '', 'start_of_construction' => '', 'sanitation' => '', @@ -33,10 +33,10 @@ return [ 'title' => 'Attraktion mit true', 'description' => '', 'town' => '0', - 'media' => '', - 'opening_hours' => '', - 'address' => '', - 'offers' => '', + 'media' => [], + 'opening_hours' => [], + 'address' => [], + 'offers' => [], 'slogan' => '', 'start_of_construction' => '', 'sanitation' => '', diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.php b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.php index a76b5b9..c4b4e1c 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.php +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.php @@ -10,10 +10,10 @@ return [ 'title' => 'Attraktion mit pets_allowed = false', 'description' => '', 'town' => '0', - 'media' => '', - 'opening_hours' => '', - 'address' => '', - 'offers' => '', + 'media' => [], + 'opening_hours' => [], + 'address' => [], + 'offers' => [], 'slogan' => '', 'start_of_construction' => '', 'sanitation' => '', @@ -32,10 +32,10 @@ return [ 'title' => 'Attraktion mit pets_allowed = true', 'description' => '', 'town' => '0', - 'media' => '', - 'opening_hours' => '', - 'address' => '', - 'offers' => '', + 'media' => [], + 'opening_hours' => [], + 'address' => [], + 'offers' => [], 'slogan' => '', 'start_of_construction' => '', 'sanitation' => '', diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.php b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.php index 6857cd9..1a6f77f 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.php +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.php @@ -10,10 +10,10 @@ return [ 'title' => 'Attraktion mit public_access = false', 'description' => '', 'town' => '0', - 'media' => '', - 'opening_hours' => '', - 'address' => '', - 'offers' => '', + 'media' => [], + 'opening_hours' => [], + 'address' => [], + 'offers' => [], 'slogan' => '', 'start_of_construction' => '', 'sanitation' => '', @@ -32,10 +32,10 @@ return [ 'title' => 'Attraktion mit public_access = true', 'description' => '', 'town' => '0', - 'media' => '', - 'opening_hours' => '', - 'address' => '', - 'offers' => '', + 'media' => [], + 'opening_hours' => [], + 'address' => [], + 'offers' => [], 'slogan' => '', 'start_of_construction' => '', 'sanitation' => '', diff --git a/Tests/Functional/FrontendTest.php b/Tests/Functional/FrontendTest.php index 2d56d21..ed88269 100644 --- a/Tests/Functional/FrontendTest.php +++ b/Tests/Functional/FrontendTest.php @@ -449,39 +449,43 @@ class FrontendTest extends FunctionalTestCase ->getConnectionForTable('tx_thuecat_tourist_attraction') ->update( 'tx_thuecat_tourist_attraction', - ['opening_hours' => json_encode([ - [ - 'closes' => '14:00:00', - 'opens' => '13:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $hidden->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, + [ + 'opening_hours' => [ + [ + 'closes' => '14:00:00', + 'opens' => '13:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $hidden->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $hidden->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], ], - 'through' => [ - 'date' => $hidden->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, + [ + 'closes' => '16:00:00', + 'opens' => '15:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $available->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $available->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], ], ], - [ - 'closes' => '16:00:00', - 'opens' => '15:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $available->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - 'through' => [ - 'date' => $available->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - ], - ])], - ['uid' => 1] + ], + [ + 'uid' => 1, + ] ) ; @@ -516,54 +520,58 @@ class FrontendTest extends FunctionalTestCase ->getConnectionForTable('tx_thuecat_tourist_attraction') ->update( 'tx_thuecat_tourist_attraction', - ['opening_hours' => json_encode([ - [ - 'closes' => '17:00:00', - 'opens' => '13:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $fromThirdOpening->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, + [ + 'opening_hours' => [ + [ + 'closes' => '17:00:00', + 'opens' => '13:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $fromThirdOpening->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $fromThirdOpening->modify('+1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], ], - 'through' => [ - 'date' => $fromThirdOpening->modify('+1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, + [ + 'closes' => '17:00:00', + 'opens' => '13:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $fromFirstOpening->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $fromFirstOpening->modify('+1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + ], + [ + 'closes' => '17:00:00', + 'opens' => '13:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $fromSecondOpening->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $fromSecondOpening->modify('+1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], ], ], - [ - 'closes' => '17:00:00', - 'opens' => '13:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $fromFirstOpening->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - 'through' => [ - 'date' => $fromFirstOpening->modify('+1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - ], - [ - 'closes' => '17:00:00', - 'opens' => '13:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $fromSecondOpening->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - 'through' => [ - 'date' => $fromSecondOpening->modify('+1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - ], - ])], - ['uid' => 1] + ], + [ + 'uid' => 1, + ] ) ; @@ -593,54 +601,58 @@ class FrontendTest extends FunctionalTestCase ->getConnectionForTable('tx_thuecat_tourist_attraction') ->update( 'tx_thuecat_tourist_attraction', - ['special_opening_hours' => json_encode([ - [ - 'closes' => '12:00:00', - 'opens' => '11:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $hidden->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, + [ + 'special_opening_hours' => [ + [ + 'closes' => '12:00:00', + 'opens' => '11:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $hidden->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $hidden->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], ], - 'through' => [ - 'date' => $hidden->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, + [ + 'closes' => '14:00:00', + 'opens' => '13:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $available2->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $available2->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + ], + [ + 'closes' => '16:00:00', + 'opens' => '15:00:00', + 'daysOfWeek' => ['Sunday'], + 'from' => [ + 'date' => $available->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], + 'through' => [ + 'date' => $available->format('Y-m-d') . ' 00:00:00.000000', + 'timezone' => 'UTC', + 'timezone_type' => 3, + ], ], ], - [ - 'closes' => '14:00:00', - 'opens' => '13:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $available2->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - 'through' => [ - 'date' => $available2->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - ], - [ - 'closes' => '16:00:00', - 'opens' => '15:00:00', - 'daysOfWeek' => ['Sunday'], - 'from' => [ - 'date' => $available->modify('-1 day')->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - 'through' => [ - 'date' => $available->format('Y-m-d') . ' 00:00:00.000000', - 'timezone' => 'UTC', - 'timezone_type' => 3, - ], - ], - ])], - ['uid' => 1] + ], + [ + 'uid' => 1, + ] ) ; diff --git a/ext_tables.sql b/ext_tables.sql index bee11a6..652538b 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -17,7 +17,6 @@ CREATE TABLE tx_thuecat_import_log ( CREATE TABLE tx_thuecat_import_log_entry ( type varchar(255) DEFAULT 'savingEntity' NOT NULL, import_log int(11) unsigned DEFAULT '0' NOT NULL, - errors text, remote_id varchar(255) DEFAULT '' NOT NULL, record_uid int(11) unsigned DEFAULT '0' NOT NULL, table_name varchar(255) DEFAULT '' NOT NULL, @@ -56,12 +55,7 @@ CREATE TABLE tx_thuecat_tourist_attraction ( parking_facility_near_by varchar(255) DEFAULT '' NOT NULL, title varchar(255) DEFAULT '' NOT NULL, description text, - opening_hours text, - special_opening_hours text, - address text, url text, - media text, - offers text, slogan text, start_of_construction text, sanitation text, @@ -77,7 +71,6 @@ CREATE TABLE tx_thuecat_tourist_attraction ( public_access text, available_languages text, distance_to_public_transport text, - accessibility_specification text, editorial_images int(11) unsigned DEFAULT '0' NOT NULL, ); @@ -87,11 +80,6 @@ CREATE TABLE tx_thuecat_parking_facility ( town int(11) unsigned DEFAULT '0' NOT NULL, title varchar(255) DEFAULT '' NOT NULL, description text, - opening_hours text, - special_opening_hours text, - address text, - media text, - offers text, sanitation text, other_service text, traffic_infrastructure text,