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
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+
+ 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
+
+
+