Add first functional tests covering location filter

This commit is contained in:
Daniel Siepmann 2022-08-09 09:21:45 +02:00
parent d128af94d3
commit 5cfbe11167
9 changed files with 322 additions and 24 deletions

View file

@ -3,7 +3,7 @@ stages:
- test - test
before_script: before_script:
- apk add zip - apk add zip graphicsmagick
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- php composer-setup.php --filename composer --install-dir /bin - php composer-setup.php --filename composer --install-dir /bin
- php -r "unlink('composer-setup.php');" - php -r "unlink('composer-setup.php');"
@ -47,7 +47,6 @@ validate:php:7.2:
validate:xml: validate:xml:
image: php:7.3-alpine image: php:7.3-alpine
stage: validate stage: validate
before_script:
script: script:
- apk add libxml2-utils wget - apk add libxml2-utils wget
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
@ -57,7 +56,6 @@ validate:xml:
validate:cgl: validate:cgl:
image: php:7.3-alpine image: php:7.3-alpine
stage: validate stage: validate
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- ./vendor/bin/ecs check --no-progress-bar --clear-cache - ./vendor/bin/ecs check --no-progress-bar --clear-cache
@ -65,7 +63,6 @@ validate:cgl:
validate:phpstan:8.1: validate:phpstan:8.1:
image: php:8.1-alpine image: php:8.1-alpine
stage: validate stage: validate
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress
@ -73,7 +70,6 @@ validate:phpstan:8.1:
validate:phpstan:8.0: validate:phpstan:8.0:
image: php:8.0-alpine image: php:8.0-alpine
stage: validate stage: validate
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpstan --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: validate:phpstan:7.4:11.5:
image: php:7.4-alpine image: php:7.4-alpine
stage: validate stage: validate
before_script:
script: script:
- composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^11.5" - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^11.5"
- php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress - 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: validate:phpstan:7.4:10.4:
image: php:7.4-alpine image: php:7.4-alpine
stage: validate stage: validate
before_script:
script: script:
- composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^10.4" - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^10.4"
- php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress
@ -97,7 +91,6 @@ validate:phpstan:7.4:10.4:
validate:phpstan:7.3: validate:phpstan:7.3:
image: php:7.3-alpine image: php:7.3-alpine
stage: validate stage: validate
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress
@ -105,7 +98,6 @@ validate:phpstan:7.3:
validate:phpstan:7.2: validate:phpstan:7.2:
image: php:7.2-alpine image: php:7.2-alpine
stage: validate stage: validate
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress - php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress
@ -113,7 +105,6 @@ validate:phpstan:7.2:
test:phpunit:8.1: test:phpunit:8.1:
image: php:8.1-alpine image: php:8.1-alpine
stage: test stage: test
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpunit --testdox - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox
@ -121,7 +112,6 @@ test:phpunit:8.1:
test:phpunit:8.0: test:phpunit:8.0:
image: php:8.0-alpine image: php:8.0-alpine
stage: test stage: test
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpunit --testdox - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox
@ -129,7 +119,6 @@ test:phpunit:8.0:
test:phpunit:7.4:11.5: test:phpunit:7.4:11.5:
image: php:7.4-alpine image: php:7.4-alpine
stage: test stage: test
before_script:
script: script:
- composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^11.5" - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^11.5"
- php -d memory_limit=-1 ./vendor/bin/phpunit --testdox - 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: test:phpunit:7.4:10.4:
image: php:7.4-alpine image: php:7.4-alpine
stage: test stage: test
before_script:
script: script:
- composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^10.4" - composer require --no-ansi --no-interaction --no-progress typo3/cms-core:"^10.4"
- php -d memory_limit=-1 ./vendor/bin/phpunit --testdox - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox
@ -145,7 +133,6 @@ test:phpunit:7.4:10.4:
test:phpunit:7.3: test:phpunit:7.3:
image: php:7.3-alpine image: php:7.3-alpine
stage: test stage: test
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpunit --testdox - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox
@ -153,7 +140,6 @@ test:phpunit:7.3:
test:phpunit:7.2: test:phpunit:7.2:
image: php:7.2-alpine image: php:7.2-alpine
stage: test stage: test
before_script:
script: script:
- composer install --prefer-dist --no-progress - composer install --prefer-dist --no-progress
- php -d memory_limit=-1 ./vendor/bin/phpunit --testdox - php -d memory_limit=-1 ./vendor/bin/phpunit --testdox

View file

@ -0,0 +1,80 @@
<?php
declare(strict_types=1);
namespace Wrm\Events\Tests\Functional\Frontend;
use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @covers \Wrm\Events\Controller\DateController
* @covers \Wrm\Events\Domain\Repository\DateRepository
*/
class FilterTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/events',
];
protected $coreExtensionsToLoad = [
'fluid_styled_content',
];
protected $pathsToProvideInTestInstance = [
'typo3conf/ext/events/Tests/Functional/Frontend/Fixtures/Sites/' => '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);
}
}

View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<tt_content>
<pid>1</pid>
<uid>1</uid>
<CType>list</CType>
<list_type>events_datelist</list_type>
<header>Kino Events</header>
<pi_flexform><![CDATA[<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
<data>
<sheet index="sDEF">
<language index="lDEF">
<field index="settings.locations">
<value index="vDEF">1</value>
</field>
</language>
</sheet>
</data>
</T3FlexForms>
]]></pi_flexform>
</tt_content>
<tx_events_domain_model_location>
<uid>1</uid>
<pid>2</pid>
<name>Theater im Gewölbe</name>
<street>Cranach-Haus Markt 11/12</street>
<city>Weimar</city>
<zip>99423</zip>
<country>Deutschland</country>
<longitude>11.330248</longitude>
<latitude>50.979349</latitude>
</tx_events_domain_model_location>
<tx_events_domain_model_event>
<uid>1</uid>
<pid>2</pid>
<title>Was hat das Universum mit mir zu tun?</title>
<global_id>e_100478529</global_id>
<teaser>„WAS HAT DAS UNIVERSUM MIT MIR ZU TUN?“
Ein Abend mit Prof. Dr. Harald Lesch</teaser>
<details>„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!</details>
<price_info>Preis inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl</price_info>
<location>1</location>
</tx_events_domain_model_event>
<tx_events_domain_model_event>
<uid>2</uid>
<pid>2</pid>
<title>Lotte in Weimar</title>
<global_id>e_100453137</global_id>
<teaser>Ein „Goethe-Götter-Lustspiel“ nach dem gleichnamigen Roman von Thomas Mann</teaser>
<details>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.</details>
<price_info>Preise inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl (ermäßigt alkoholfrei)</price_info>
<location>0</location>
</tx_events_domain_model_event>
<tx_events_domain_model_date>
<uid>1</uid>
<pid>2</pid>
<event>1</event>
<start>1661626800</start>
<end>1661632200</end>
</tx_events_domain_model_date>
<tx_events_domain_model_date>
<uid>2</uid>
<pid>2</pid>
<event>1</event>
<start>1660158000</start>
<end>1660163400</end>
</tx_events_domain_model_date>
<tx_events_domain_model_date>
<uid>3</uid>
<pid>2</pid>
<event>2</event>
<start>1661194800</start>
<end>1661200200</end>
</tx_events_domain_model_date>
</dataset>

View file

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<tt_content>
<pid>1</pid>
<uid>1</uid>
<CType>list</CType>
<list_type>events_datelist</list_type>
<header>Kino Events</header>
<pi_flexform><![CDATA[<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
<data>
<sheet index="sDEF">
<language index="lDEF">
<field index="settings.locations">
<value index="vDEF">1,2</value>
</field>
</language>
</sheet>
</data>
</T3FlexForms>
]]></pi_flexform>
</tt_content>
<tx_events_domain_model_location>
<uid>1</uid>
<pid>2</pid>
<name>Theater im Gewölbe</name>
<street>Cranach-Haus Markt 11/12</street>
<city>Weimar</city>
<zip>99423</zip>
<country>Deutschland</country>
<longitude>11.330248</longitude>
<latitude>50.979349</latitude>
</tx_events_domain_model_location>
<tx_events_domain_model_location>
<uid>2</uid>
<pid>2</pid>
<name>Künstlergarten Weimar</name>
<street>Theaterplatz 4</street>
<city>Weimar</city>
<zip>99423</zip>
<country>Deutschland</country>
<longitude>11.3262489</longitude>
<latitude>50.9800023</latitude>
<district>Zentrum</district>
</tx_events_domain_model_location>
<tx_events_domain_model_event>
<uid>1</uid>
<pid>2</pid>
<title>Was hat das Universum mit mir zu tun?</title>
<global_id>e_100478529</global_id>
<teaser>„WAS HAT DAS UNIVERSUM MIT MIR ZU TUN?“
Ein Abend mit Prof. Dr. Harald Lesch</teaser>
<details>„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!</details>
<price_info>Preis inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl</price_info>
<location>1</location>
</tx_events_domain_model_event>
<tx_events_domain_model_event>
<uid>2</uid>
<pid>2</pid>
<title>Lotte in Weimar</title>
<global_id>e_100453137</global_id>
<teaser>Ein „Goethe-Götter-Lustspiel“ nach dem gleichnamigen Roman von Thomas Mann</teaser>
<details>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.</details>
<price_info>Preise inklusive Platzierung mit Namensschild und einem Pausengetränk Ihrer Wahl (ermäßigt alkoholfrei)</price_info>
<location>2</location>
</tx_events_domain_model_event>
<tx_events_domain_model_date>
<uid>1</uid>
<pid>2</pid>
<event>1</event>
<start>1661626800</start>
<end>1661632200</end>
</tx_events_domain_model_date>
<tx_events_domain_model_date>
<uid>2</uid>
<pid>2</pid>
<event>1</event>
<start>1660158000</start>
<end>1660163400</end>
</tx_events_domain_model_date>
<tx_events_domain_model_date>
<uid>3</uid>
<pid>2</pid>
<event>2</event>
<start>1661194800</start>
<end>1661200200</end>
</tx_events_domain_model_date>
</dataset>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<pages>
<pid>0</pid>
<uid>1</uid>
<title>Page 1</title>
<slug>/</slug>
</pages>
<pages>
<pid>1</pid>
<uid>2</uid>
<title>Storage</title>
<slug>/storage</slug>
</pages>
</dataset>

View file

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

View file

@ -0,0 +1,15 @@
page = PAGE
page {
10 < styles.content.get
}
plugin.tx_events {
persistence {
storagePid = 2
}
settings {
sortByDate = start
sortOrder = ASC
}
}

View file

@ -46,19 +46,21 @@
} }
}, },
"require-dev": { "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", "squizlabs/php_codesniffer": "^3.5",
"symplify/easy-coding-standard": "^9.4", "symplify/easy-coding-standard": "^9.4",
"phpstan/phpstan": "1.5.7", "typo3/cms-backend": "^10.4 || ^11.5",
"phpstan/extension-installer": "^1.1", "typo3/cms-fluid-styled-content": "^10.4 || ^11.5",
"saschaegerer/phpstan-typo3": "1.1.2", "typo3/testing-framework": "^6.14"
"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"
}, },
"config": { "config": {
"sort-packages": true,
"allow-plugins": { "allow-plugins": {
"typo3/class-alias-loader": true, "typo3/class-alias-loader": true,
"typo3/cms-composer-installers": true, "typo3/cms-composer-installers": true,

View file

@ -26,6 +26,12 @@
</testsuite> </testsuite>
</testsuites> </testsuites>
<coverage>
<include>
<directory suffix=".php">Classes</directory>
</include>
</coverage>
<php> <php>
<env name="typo3DatabaseDriver" value="pdo_sqlite"/> <env name="typo3DatabaseDriver" value="pdo_sqlite"/>
<ini name="date.timezone" value="Europe/Berlin"/> <ini name="date.timezone" value="Europe/Berlin"/>