From 5cfbe111671ec45355a340f76fa8a3a3f6d5b11a Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 9 Aug 2022 09:21:45 +0200 Subject: [PATCH] Add first functional tests covering location filter --- .gitlab-ci.yml | 16 +--- Tests/Functional/Frontend/FilterTest.php | 80 ++++++++++++++++ .../FilterByASingleLocationViaFlexform.xml | 83 ++++++++++++++++ .../FilterByTwoLocationsViaFlexform.xml | 95 +++++++++++++++++++ .../Fixtures/Database/SiteStructure.xml | 15 +++ .../Fixtures/Sites/default/config.yaml | 16 ++++ .../Fixtures/TypoScript/Rendering.typoscript | 15 +++ composer.json | 20 ++-- phpunit.xml.dist | 6 ++ 9 files changed, 322 insertions(+), 24 deletions(-) create mode 100644 Tests/Functional/Frontend/FilterTest.php create mode 100644 Tests/Functional/Frontend/Fixtures/Database/FilterByASingleLocationViaFlexform.xml create mode 100644 Tests/Functional/Frontend/Fixtures/Database/FilterByTwoLocationsViaFlexform.xml create mode 100644 Tests/Functional/Frontend/Fixtures/Database/SiteStructure.xml create mode 100644 Tests/Functional/Frontend/Fixtures/Sites/default/config.yaml create mode 100644 Tests/Functional/Frontend/Fixtures/TypoScript/Rendering.typoscript diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 53dce81..b69c683 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,7 +3,7 @@ stages: - test before_script: - - apk add zip + - apk add zip graphicsmagick - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - php composer-setup.php --filename composer --install-dir /bin - php -r "unlink('composer-setup.php');" @@ -47,7 +47,6 @@ validate:php:7.2: validate:xml: image: php:7.3-alpine stage: validate - before_script: script: - apk add libxml2-utils wget - composer install --prefer-dist --no-progress @@ -57,7 +56,6 @@ validate:xml: validate:cgl: image: php:7.3-alpine stage: validate - before_script: script: - composer install --prefer-dist --no-progress - ./vendor/bin/ecs check --no-progress-bar --clear-cache @@ -65,7 +63,6 @@ validate:cgl: validate:phpstan:8.1: image: php:8.1-alpine stage: validate - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress @@ -73,7 +70,6 @@ validate:phpstan:8.1: validate:phpstan:8.0: image: php:8.0-alpine stage: validate - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress @@ -81,7 +77,6 @@ validate:phpstan:8.0: validate:phpstan:7.4:11.5: image: php:7.4-alpine stage: validate - before_script: script: - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^11.5" - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress @@ -89,7 +84,6 @@ validate:phpstan:7.4:11.5: validate:phpstan:7.4:10.4: image: php:7.4-alpine stage: validate - before_script: script: - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^10.4" - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress @@ -97,7 +91,6 @@ validate:phpstan:7.4:10.4: validate:phpstan:7.3: image: php:7.3-alpine stage: validate - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress @@ -105,7 +98,6 @@ validate:phpstan:7.3: validate:phpstan:7.2: image: php:7.2-alpine stage: validate - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress @@ -113,7 +105,6 @@ validate:phpstan:7.2: test:phpunit:8.1: image: php:8.1-alpine stage: test - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox @@ -121,7 +112,6 @@ test:phpunit:8.1: test:phpunit:8.0: image: php:8.0-alpine stage: test - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox @@ -129,7 +119,6 @@ test:phpunit:8.0: test:phpunit:7.4:11.5: image: php:7.4-alpine stage: test - before_script: script: - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^11.5" - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox @@ -137,7 +126,6 @@ test:phpunit:7.4:11.5: test:phpunit:7.4:10.4: image: php:7.4-alpine stage: test - before_script: script: - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^10.4" - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox @@ -145,7 +133,6 @@ test:phpunit:7.4:10.4: test:phpunit:7.3: image: php:7.3-alpine stage: test - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox @@ -153,7 +140,6 @@ test:phpunit:7.3: test:phpunit:7.2: image: php:7.2-alpine stage: test - before_script: script: - composer install --prefer-dist --no-progress - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox diff --git a/Tests/Functional/Frontend/FilterTest.php b/Tests/Functional/Frontend/FilterTest.php new file mode 100644 index 0000000..397edf1 --- /dev/null +++ b/Tests/Functional/Frontend/FilterTest.php @@ -0,0 +1,80 @@ + 'typo3conf/sites', + ]; + + protected function setUp(): void + { + parent::setUp(); + + $this->importDataSet('EXT:events/Tests/Functional/Frontend/Fixtures/Database/SiteStructure.xml'); + $this->setUpFrontendRootPage(1, [ + 'constants' => [ + 'EXT:events/Configuration/TypoScript/constants.typoscript', + ], + 'setup' => [ + 'EXT:fluid_styled_content/Configuration/TypoScript/setup.typoscript', + 'EXT:events/Configuration/TypoScript/setup.typoscript', + 'EXT:events/Tests/Functional/Frontend/Fixtures/TypoScript/Rendering.typoscript' + ], + ]); + } + + /** + * @test + */ + public function canFilterByASingleLocationViaFlexform(): void + { + $this->importDataSet('EXT:events/Tests/Functional/Frontend/Fixtures/Database/FilterByASingleLocationViaFlexform.xml'); + + $request = new InternalRequest(); + $request = $request->withPageId(1); + $response = $this->executeFrontendRequest($request); + + self::assertSame(200, $response->getStatusCode()); + $html = (string) $response->getBody(); + + self::assertStringNotContainsString('Lotte in Weimar', $html); + self::assertStringContainsString('Was hat das Universum mit mir zu tun?', $html); + } + + /** + * @test + */ + public function canFilterByTwoLocationsViaFlexform(): void + { + $this->importDataSet('EXT:events/Tests/Functional/Frontend/Fixtures/Database/FilterByTwoLocationsViaFlexform.xml'); + + $request = new InternalRequest(); + $request = $request->withPageId(1); + $response = $this->executeFrontendRequest($request); + + self::assertSame(200, $response->getStatusCode()); + $html = (string) $response->getBody(); + + self::assertStringContainsString('Lotte in Weimar', $html); + self::assertStringContainsString('Was hat das Universum mit mir zu tun?', $html); + } +} diff --git a/Tests/Functional/Frontend/Fixtures/Database/FilterByASingleLocationViaFlexform.xml b/Tests/Functional/Frontend/Fixtures/Database/FilterByASingleLocationViaFlexform.xml new file mode 100644 index 0000000..0dad70a --- /dev/null +++ b/Tests/Functional/Frontend/Fixtures/Database/FilterByASingleLocationViaFlexform.xml @@ -0,0 +1,83 @@ + + + + 1 + 1 + list + events_datelist +
Kino Events
+ + + + + + + 1 + + + + + + ]]> +
+ + + 1 + 2 + Theater im Gewölbe + Cranach-Haus Markt 11/12 + Weimar + 99423 + Deutschland + 11.330248 + 50.979349 + + + + 1 + 2 + Was hat das Universum mit mir zu tun? + e_100478529 + „WAS HAT DAS UNIVERSUM MIT MIR ZU TUN?“ + Ein Abend mit Prof. Dr. Harald Lesch +
„WAS HAT DAS UNIVERSUM MIT MIR ZU TUN?“ + Ein Abend mit Prof. Dr. Harald Lesch + Auf den Spuren von Goethes Naturphilosophie ist der Astrophysiker und Wissenschaftsjournalist Prof. Dr. Harald Lesch in Weimar schon mehrmals präsent gewesen. Jetzt hält er einen Vortrag zu keiner geringeren Frage als „Was hat das Universum mit mir zu tun?“ Ob Goethe darauf eine pointierte Antwort eingefallen wäre? Sein Faust wollte die Spur seiner Erdentage nicht in Äonen untergehen sehen. Harald Lesch behauptet: Wir sind und bleiben stets Teil der Äonen - denn „wir sind alle Sternenstaub. Vor einer halben Ewigkeit ist ein Stern explodiert und hat alle Stoffe aus denen wir bestehen hervorgebracht. Und wenn das bei uns geklappt hat, könnte es auch noch woanders passiert sein.“ Erleben Sie einen faszinierenden Mix aus Rednerkunst und virtuoser musikalischer Begleitung. Neben Prof. Dr. Harald Lesch begibt sich der Musiker Hans Raths (Bayon) mit auf die Reise ins theatralische und philosophische Universum. Eine Veranstaltung nicht nur für Science-Fiction-Freaks, sondern für alle Kosmopoliten!
+ Preis inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl + 1 +
+ + 2 + 2 + Lotte in Weimar + e_100453137 + Ein „Goethe-Götter-Lustspiel“ nach dem gleichnamigen Roman von Thomas Mann +
LOTTE IN WEIMAR + Ein „Goethe-Götter-Lustspiel“ nach dem gleichnamigen Roman von Thomas Mann + „Welch buchenswertes Ereignis!“, ruft der Kellner Mager aus, als er erfährt, wer da in seinem Gasthaus „Zum Elephanten“ abgestiegen ist: Die berühmte Heldin aus Goethes „Die Leiden des jungen Werthers“, Charlotte Kestner, geborene Buff aus Wetzlar, – das „Urbild“ der Lotte sozusagen! Eine heiter-ironische Abrechnung mit dem Starkult anno 1816 fast am Originalschauplatz. Mit Regine Heintze, Heike Meyer und Detlef Heintze. Inszenierung: Michael Kliefert/ Detlef Heintze.
+ Preise inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl (ermäßigt alkoholfrei) + 0 +
+ + + 1 + 2 + 1 + 1661626800 + 1661632200 + + + 2 + 2 + 1 + 1660158000 + 1660163400 + + + 3 + 2 + 2 + 1661194800 + 1661200200 + +
diff --git a/Tests/Functional/Frontend/Fixtures/Database/FilterByTwoLocationsViaFlexform.xml b/Tests/Functional/Frontend/Fixtures/Database/FilterByTwoLocationsViaFlexform.xml new file mode 100644 index 0000000..df5e7ed --- /dev/null +++ b/Tests/Functional/Frontend/Fixtures/Database/FilterByTwoLocationsViaFlexform.xml @@ -0,0 +1,95 @@ + + + + 1 + 1 + list + events_datelist +
Kino Events
+ + + + + + + 1,2 + + + + + + ]]> +
+ + + 1 + 2 + Theater im Gewölbe + Cranach-Haus Markt 11/12 + Weimar + 99423 + Deutschland + 11.330248 + 50.979349 + + + 2 + 2 + Künstlergarten Weimar + Theaterplatz 4 + Weimar + 99423 + Deutschland + 11.3262489 + 50.9800023 + Zentrum + + + + 1 + 2 + Was hat das Universum mit mir zu tun? + e_100478529 + „WAS HAT DAS UNIVERSUM MIT MIR ZU TUN?“ + Ein Abend mit Prof. Dr. Harald Lesch +
„WAS HAT DAS UNIVERSUM MIT MIR ZU TUN?“ + Ein Abend mit Prof. Dr. Harald Lesch + Auf den Spuren von Goethes Naturphilosophie ist der Astrophysiker und Wissenschaftsjournalist Prof. Dr. Harald Lesch in Weimar schon mehrmals präsent gewesen. Jetzt hält er einen Vortrag zu keiner geringeren Frage als „Was hat das Universum mit mir zu tun?“ Ob Goethe darauf eine pointierte Antwort eingefallen wäre? Sein Faust wollte die Spur seiner Erdentage nicht in Äonen untergehen sehen. Harald Lesch behauptet: Wir sind und bleiben stets Teil der Äonen - denn „wir sind alle Sternenstaub. Vor einer halben Ewigkeit ist ein Stern explodiert und hat alle Stoffe aus denen wir bestehen hervorgebracht. Und wenn das bei uns geklappt hat, könnte es auch noch woanders passiert sein.“ Erleben Sie einen faszinierenden Mix aus Rednerkunst und virtuoser musikalischer Begleitung. Neben Prof. Dr. Harald Lesch begibt sich der Musiker Hans Raths (Bayon) mit auf die Reise ins theatralische und philosophische Universum. Eine Veranstaltung nicht nur für Science-Fiction-Freaks, sondern für alle Kosmopoliten!
+ Preis inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl + 1 +
+ + 2 + 2 + Lotte in Weimar + e_100453137 + Ein „Goethe-Götter-Lustspiel“ nach dem gleichnamigen Roman von Thomas Mann +
LOTTE IN WEIMAR + Ein „Goethe-Götter-Lustspiel“ nach dem gleichnamigen Roman von Thomas Mann + „Welch buchenswertes Ereignis!“, ruft der Kellner Mager aus, als er erfährt, wer da in seinem Gasthaus „Zum Elephanten“ abgestiegen ist: Die berühmte Heldin aus Goethes „Die Leiden des jungen Werthers“, Charlotte Kestner, geborene Buff aus Wetzlar, – das „Urbild“ der Lotte sozusagen! Eine heiter-ironische Abrechnung mit dem Starkult anno 1816 fast am Originalschauplatz. Mit Regine Heintze, Heike Meyer und Detlef Heintze. Inszenierung: Michael Kliefert/ Detlef Heintze.
+ Preise inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl (ermäßigt alkoholfrei) + 2 +
+ + + 1 + 2 + 1 + 1661626800 + 1661632200 + + + 2 + 2 + 1 + 1660158000 + 1660163400 + + + 3 + 2 + 2 + 1661194800 + 1661200200 + +
diff --git a/Tests/Functional/Frontend/Fixtures/Database/SiteStructure.xml b/Tests/Functional/Frontend/Fixtures/Database/SiteStructure.xml new file mode 100644 index 0000000..e395656 --- /dev/null +++ b/Tests/Functional/Frontend/Fixtures/Database/SiteStructure.xml @@ -0,0 +1,15 @@ + + + + 0 + 1 + Page 1 + / + + + 1 + 2 + Storage + /storage + + diff --git a/Tests/Functional/Frontend/Fixtures/Sites/default/config.yaml b/Tests/Functional/Frontend/Fixtures/Sites/default/config.yaml new file mode 100644 index 0000000..7eecb62 --- /dev/null +++ b/Tests/Functional/Frontend/Fixtures/Sites/default/config.yaml @@ -0,0 +1,16 @@ +base: '/' +languages: + - + title: English + enabled: true + languageId: '0' + base: / + typo3Language: default + locale: en_US.utf8 + iso-639-1: en + navigationTitle: English + hreflang: en-us + direction: ltr + flag: us + websiteTitle: '' +rootPageId: 1 diff --git a/Tests/Functional/Frontend/Fixtures/TypoScript/Rendering.typoscript b/Tests/Functional/Frontend/Fixtures/TypoScript/Rendering.typoscript new file mode 100644 index 0000000..6a3ecb3 --- /dev/null +++ b/Tests/Functional/Frontend/Fixtures/TypoScript/Rendering.typoscript @@ -0,0 +1,15 @@ +page = PAGE +page { + 10 < styles.content.get +} + +plugin.tx_events { + persistence { + storagePid = 2 + } + + settings { + sortByDate = start + sortOrder = ASC + } +} diff --git a/composer.json b/composer.json index d663ab6..c217aeb 100644 --- a/composer.json +++ b/composer.json @@ -46,19 +46,21 @@ } }, "require-dev": { - "typo3/cms-backend": "^10.4 || ^11.5", + "guzzlehttp/guzzle": "^6.3 || ^7.3", + "jangregor/phpstan-prophecy": "1.0.0", + "phpspec/prophecy-phpunit": "^1.0 || ^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "1.5.7", + "phpstan/phpstan-phpunit": "1.1.1", + "saschaegerer/phpstan-typo3": "1.1.2", "squizlabs/php_codesniffer": "^3.5", "symplify/easy-coding-standard": "^9.4", - "phpstan/phpstan": "1.5.7", - "phpstan/extension-installer": "^1.1", - "saschaegerer/phpstan-typo3": "1.1.2", - "typo3/testing-framework": "^6.14", - "jangregor/phpstan-prophecy": "1.0.0", - "phpstan/phpstan-phpunit": "1.1.1", - "guzzlehttp/guzzle": "^6.3 || ^7.3", - "phpspec/prophecy-phpunit": "^1.0 || ^2.0" + "typo3/cms-backend": "^10.4 || ^11.5", + "typo3/cms-fluid-styled-content": "^10.4 || ^11.5", + "typo3/testing-framework": "^6.14" }, "config": { + "sort-packages": true, "allow-plugins": { "typo3/class-alias-loader": true, "typo3/cms-composer-installers": true, diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 936d7de..5f25438 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -26,6 +26,12 @@ + + + Classes + + +