mirror of
https://github.com/werkraum-media/events.git
synced 2024-12-22 18:26:10 +01:00
Add first basic functional test for import
The test ensures import runs with a small example set of events. We needed to alter fetching of images, in order to properly mock responses.
This commit is contained in:
parent
73161fa24e
commit
0e5cd38176
17 changed files with 1102 additions and 37 deletions
|
@ -1,4 +1,5 @@
|
|||
stages:
|
||||
- validate
|
||||
- test
|
||||
|
||||
before_script:
|
||||
|
@ -7,39 +8,39 @@ before_script:
|
|||
- php composer-setup.php --filename composer --install-dir /bin
|
||||
- php -r "unlink('composer-setup.php');"
|
||||
|
||||
test:composer:
|
||||
validate:composer:
|
||||
image: php:8.0-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
script:
|
||||
- composer validate --no-check-publish --strict
|
||||
|
||||
test:php:8.0:
|
||||
validate:php:8.0:
|
||||
image: php:8.0-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
script:
|
||||
- find *.php Classes Configuration -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l
|
||||
|
||||
test:php:7.4:
|
||||
validate:php:7.4:
|
||||
image: php:7.4-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
script:
|
||||
- find *.php Classes Configuration -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l
|
||||
|
||||
test:php:7.3:
|
||||
validate:php:7.3:
|
||||
image: php:7.3-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
script:
|
||||
- find *.php Classes Configuration -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l
|
||||
|
||||
test:php:7.2:
|
||||
validate:php:7.2:
|
||||
image: php:7.2-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
script:
|
||||
- find *.php Classes Configuration -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l
|
||||
|
||||
test:xml:
|
||||
validate:xml:
|
||||
image: php:7.3-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
before_script:
|
||||
script:
|
||||
- apk add libxml2-utils wget
|
||||
|
@ -47,50 +48,90 @@ test:xml:
|
|||
- wget https://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd --output-document=.Build/xliff-core-1.2-strict.xsd
|
||||
- xmllint --schema .Build/xliff-core-1.2-strict.xsd --noout $(find Resources -name '*.xlf')
|
||||
|
||||
test:cgl:
|
||||
validate:cgl:
|
||||
image: php:7.3-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
before_script:
|
||||
script:
|
||||
- composer install --prefer-dist --no-progress
|
||||
- ./vendor/bin/ecs check --no-progress-bar --clear-cache --fix
|
||||
|
||||
test:phpstan:8.0:
|
||||
validate:phpstan:8.0:
|
||||
image: php:8.0-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
before_script:
|
||||
script:
|
||||
- composer install --prefer-dist --no-progress
|
||||
- php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress
|
||||
|
||||
test:phpstan:7.4:11.5:
|
||||
validate:phpstan:7.4:11.5:
|
||||
image: php:7.4-alpine
|
||||
stage: test
|
||||
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
|
||||
|
||||
test:phpstan:7.4:10.4:
|
||||
validate:phpstan:7.4:10.4:
|
||||
image: php:7.4-alpine
|
||||
stage: test
|
||||
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
|
||||
|
||||
test:phpstan:7.3:
|
||||
validate:phpstan:7.3:
|
||||
image: php:7.3-alpine
|
||||
stage: test
|
||||
stage: validate
|
||||
before_script:
|
||||
script:
|
||||
- composer install --prefer-dist --no-progress
|
||||
- php -d memory_limit=-1 ./vendor/bin/phpstan --no-progress
|
||||
|
||||
test:phpstan:7.2:
|
||||
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/phpunit --testdox
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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/phpstan --no-progress
|
||||
- php -d memory_limit=-1 ./vendor/bin/phpunit --testdox
|
||||
|
|
|
@ -33,11 +33,6 @@ class DestinationDataImportCommand extends Command
|
|||
InputArgument::REQUIRED,
|
||||
'What is the storage pid?'
|
||||
);
|
||||
$this->addArgument(
|
||||
'region-uid',
|
||||
InputArgument::OPTIONAL,
|
||||
'What is the region uid?'
|
||||
);
|
||||
$this->addArgument(
|
||||
'rest-experience',
|
||||
InputArgument::REQUIRED,
|
||||
|
@ -48,6 +43,11 @@ class DestinationDataImportCommand extends Command
|
|||
InputArgument::REQUIRED,
|
||||
'Where to save the image files?'
|
||||
);
|
||||
$this->addArgument(
|
||||
'region-uid',
|
||||
InputArgument::OPTIONAL,
|
||||
'What is the region uid?'
|
||||
);
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
|
|
|
@ -29,6 +29,7 @@ use Wrm\Events\Domain\Repository\DateRepository;
|
|||
use Wrm\Events\Domain\Repository\EventRepository;
|
||||
use Wrm\Events\Domain\Repository\OrganizerRepository;
|
||||
use Wrm\Events\Domain\Repository\RegionRepository;
|
||||
use Wrm\Events\Service\DestinationDataImportService\DataFetcher;
|
||||
|
||||
class DestinationDataImportService
|
||||
{
|
||||
|
@ -162,6 +163,11 @@ class DestinationDataImportService
|
|||
*/
|
||||
private $resourceFactory;
|
||||
|
||||
/**
|
||||
* @var DataFetcher
|
||||
*/
|
||||
private $dataFetcher;
|
||||
|
||||
/**
|
||||
* ImportService constructor.
|
||||
* @param EventRepository $eventRepository
|
||||
|
@ -175,6 +181,7 @@ class DestinationDataImportService
|
|||
* @param ResourceFactory $resourceFactory
|
||||
* @param ObjectManager $objectManager
|
||||
* @param Environment $environment
|
||||
* @param DataFetcher $dataFetcher
|
||||
*/
|
||||
public function __construct(
|
||||
EventRepository $eventRepository,
|
||||
|
@ -187,7 +194,8 @@ class DestinationDataImportService
|
|||
PersistenceManager $persistenceManager,
|
||||
ResourceFactory $resourceFactory,
|
||||
ObjectManager $objectManager,
|
||||
Environment $environment
|
||||
Environment $environment,
|
||||
DataFetcher $dataFetcher
|
||||
) {
|
||||
$this->eventRepository = $eventRepository;
|
||||
$this->regionRepository = $regionRepository;
|
||||
|
@ -200,6 +208,7 @@ class DestinationDataImportService
|
|||
$this->resourceFactory = $resourceFactory;
|
||||
$this->objectManager = $objectManager;
|
||||
$this->environment = $environment;
|
||||
$this->dataFetcher = $dataFetcher;
|
||||
|
||||
// Get Typoscript Settings
|
||||
$this->settings = $this->configurationManager->getConfiguration(
|
||||
|
@ -708,17 +717,20 @@ class DestinationDataImportService
|
|||
}
|
||||
}
|
||||
|
||||
private function loadFile(string $file): string
|
||||
private function loadFile(string $fileUrl): string
|
||||
{
|
||||
$directory = $this->environment->getPublicPath() . "/uploads/tx_events/";
|
||||
$filename = basename($file);
|
||||
$this->logger->info('Getting file ' . $file . ' as ' . $filename);
|
||||
$asset = GeneralUtility::getUrl($file);
|
||||
if ($asset) {
|
||||
$filename = basename($fileUrl);
|
||||
$this->logger->info('Getting file ' . $fileUrl . ' as ' . $filename);
|
||||
|
||||
$response = $this->dataFetcher->fetchImage($fileUrl);
|
||||
$asset = $response->getBody()->__toString();
|
||||
if ($response->getStatusCode() === 200 && $asset !== '') {
|
||||
file_put_contents($directory . $filename, $asset);
|
||||
return $filename;
|
||||
}
|
||||
$this->logger->error('Cannot load file ' . $file);
|
||||
|
||||
$this->logger->error('Cannot load file ' . $fileUrl);
|
||||
return '';
|
||||
}
|
||||
|
||||
|
|
55
Classes/Service/DestinationDataImportService/DataFetcher.php
Normal file
55
Classes/Service/DestinationDataImportService/DataFetcher.php
Normal file
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
namespace Wrm\Events\Service\DestinationDataImportService;
|
||||
|
||||
use GuzzleHttp\ClientInterface as GuzzleClientInterface;
|
||||
use Psr\Http\Client\ClientInterface;
|
||||
use Psr\Http\Message\RequestFactoryInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
/**
|
||||
* Provides API to fetch data from remote.
|
||||
*
|
||||
* Only partially migrated from service to here.
|
||||
* Further calls need to be migrated.
|
||||
*/
|
||||
class DataFetcher
|
||||
{
|
||||
/**
|
||||
* @var RequestFactoryInterface
|
||||
*/
|
||||
private $requestFactory;
|
||||
|
||||
/**
|
||||
* @var GuzzleClientInterface
|
||||
*/
|
||||
private $client;
|
||||
|
||||
public function __construct(
|
||||
RequestFactoryInterface $requestFactory,
|
||||
GuzzleClientInterface $client
|
||||
) {
|
||||
$this->requestFactory = $requestFactory;
|
||||
$this->client = $client;
|
||||
}
|
||||
|
||||
public function fetchImage(string $url): ResponseInterface
|
||||
{
|
||||
// Keep after TYPO3 10 was dropped
|
||||
if ($this->client instanceof ClientInterface) {
|
||||
return $this->client->sendRequest(
|
||||
$this->requestFactory->createRequest(
|
||||
'GET',
|
||||
$url
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// Drop once TYPO3 10 support was dropped
|
||||
return $this->client->request(
|
||||
'GET',
|
||||
$url,
|
||||
[]
|
||||
);
|
||||
}
|
||||
}
|
10
Classes/Service/DestinationDataImportService/Import.php
Normal file
10
Classes/Service/DestinationDataImportService/Import.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Wrm\Events\Service\DestinationDataImportService;
|
||||
|
||||
/**
|
||||
* Hold info regarding current import.
|
||||
*/
|
||||
class Import
|
||||
{
|
||||
}
|
38
Tests/ClientFactory.php
Normal file
38
Tests/ClientFactory.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace Wrm\Events\Tests;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\HandlerStack;
|
||||
use GuzzleHttp\Handler\MockHandler;
|
||||
use GuzzleHttp\Middleware;
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
|
||||
/**
|
||||
* Must only be used within tests.
|
||||
*/
|
||||
class ClientFactory
|
||||
{
|
||||
/**
|
||||
* Use this to create a new client which will return provided responses.
|
||||
*
|
||||
* You can use the $historyContainer to assert actual requests afterwards,
|
||||
* e.g. assert that urls or headers match.
|
||||
*
|
||||
* @see https://susi.dev/mock-http-api-responses-with-guzzle-psr-18-psr-7/
|
||||
*
|
||||
* @param Response[] $responses
|
||||
* @param array{'request': Request, 'response': Response, 'error': null}[] $historyContainer
|
||||
*/
|
||||
public static function createClientWithHistory(
|
||||
array $responses,
|
||||
array &$historyContainer
|
||||
): Client {
|
||||
$history = Middleware::history($historyContainer);
|
||||
|
||||
$handlerStack = HandlerStack::create(new MockHandler($responses));
|
||||
$handlerStack->push($history);
|
||||
|
||||
return new Client(['handler' => $handlerStack]);
|
||||
}
|
||||
}
|
38
Tests/Functional/Import/DestinationDataTest/AbstractTest.php
Normal file
38
Tests/Functional/Import/DestinationDataTest/AbstractTest.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace Wrm\Events\Tests\Functional\Import\DestinationDataTest;
|
||||
|
||||
use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
|
||||
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
|
||||
|
||||
abstract class AbstractTest extends FunctionalTestCase
|
||||
{
|
||||
protected $testExtensionsToLoad = [
|
||||
'typo3conf/ext/events',
|
||||
];
|
||||
|
||||
protected $additionalFoldersToCreate = [
|
||||
'uploads/tx_events/'
|
||||
];
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->importDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Fixtures/Structure.xml');
|
||||
$this->setUpBackendUserFromFixture(1);
|
||||
|
||||
$languageServiceFactory = $this->getContainer()->get(LanguageServiceFactory::class);
|
||||
if (!$languageServiceFactory instanceof LanguageServiceFactory) {
|
||||
throw new \UnexpectedValueException('Did not retrieve LanguageServiceFactory.', 1637847250);
|
||||
}
|
||||
$GLOBALS['LANG'] = $languageServiceFactory->create('default');
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
unset($GLOBALS['LANG']);
|
||||
|
||||
parent::tearDown();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,,
|
||||
,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,,
|
||||
,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,,
|
||||
,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events"
|
||||
,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.
|
||||
Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)
|
||||
Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.
|
||||
Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","0",,"1","1",,"1",
|
||||
,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein.
|
||||
Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420
|
||||
|
||||
Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","http://www.stadtbibliothek-rudolstadt.de/","0 36 72 - 48 64 20",,,,,"50.720835175056","11.342568397522","1","0",,"3","2",,"1",
|
||||
,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss.
|
||||
|
||||
Es gilt die 2G-PLUS-Regel.",,"Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland",,"03672 - 48 96 13",,,,,"50.718688721183","11.327333450317","1","0",,"4","3",,"1",
|
||||
"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"2","2","0","0","0","0",-1,0,"0","0","0","2","4101112800","4101118200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"3","2","0","0","0","0",-1,0,"0","0","0","2","1642687200","1642694400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"4","2","0","0","0","0",-1,0,"0","0","0","2","1645106400","1645113600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"5","2","0","0","0","0",-1,0,"0","0","0","3","4099831200","4099834800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"6","2","0","0","0","0",-1,0,"0","0","0","3","4100436000","4100439600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"7","2","0","0","0","0",-1,0,"0","0","0","3","4101040800","4101044400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"8","2","0","0","0","0",-1,0,"0","0","0","3","4101645600","4101649200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
|
@ -0,0 +1,28 @@
|
|||
"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,,
|
||||
,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,,
|
||||
,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,,
|
||||
,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events"
|
||||
,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.
|
||||
Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)
|
||||
Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.
|
||||
Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","0",,"1","1",,"0",
|
||||
,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein.
|
||||
Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420
|
||||
|
||||
Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","http://www.stadtbibliothek-rudolstadt.de/","0 36 72 - 48 64 20",,,,,"50.720835175056","11.342568397522","1","0",,"3","2",,"0",
|
||||
,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss.
|
||||
|
||||
Es gilt die 2G-PLUS-Regel.",,"Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland",,"03672 - 48 96 13",,,,,"50.718688721183","11.327333450317","1","0",,"4","3",,"0",
|
||||
"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"2","2","0","0","0","0",-1,0,"0","0","0","2","4101112800","4101118200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"3","2","0","0","0","0",-1,0,"0","0","0","2","1642687200","1642694400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"4","2","0","0","0","0",-1,0,"0","0","0","2","1645106400","1645113600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"5","2","0","0","0","0",-1,0,"0","0","0","3","4099831200","4099834800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"6","2","0","0","0","0",-1,0,"0","0","0","3","4100436000","4100439600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"7","2","0","0","0","0",-1,0,"0","0","0","3","4101040800","4101044400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,"8","2","0","0","0","0",-1,0,"0","0","0","3","4101645600","4101649200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
|
@ -0,0 +1,541 @@
|
|||
{
|
||||
"status": "OK",
|
||||
"count": 3,
|
||||
"overallcount": 50,
|
||||
"channels": [],
|
||||
"facetGroups": [],
|
||||
"items": [
|
||||
{
|
||||
"global_id": "e_100347853",
|
||||
"id": "100347853",
|
||||
"title": "Allerlei Weihnachtliches (Heute mit Johannes Geißer)",
|
||||
"type": "Event",
|
||||
"categories": [
|
||||
"Weihnachten"
|
||||
],
|
||||
"texts": [
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/html",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder <a data-cke-saved-href=\"mailto:schillerhaus@rudolstadt.de\" href=\"mailto:schillerhaus@rudolstadt.de\">schillerhaus@rudolstadt.de</a> wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong> <br>"
|
||||
},
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/plain",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.\nEintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)\nUm Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.\nEs gilt die 2G-PLUS-Regel."
|
||||
},
|
||||
{
|
||||
"rel": "teaser",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"rel": "teaser",
|
||||
"type": "text/plain"
|
||||
}
|
||||
],
|
||||
"country": "Deutschland",
|
||||
"areas": [
|
||||
"Rudolstadt und Umgebung"
|
||||
],
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schillerstraße 25",
|
||||
"phone": "+ 49 3672 / 486470",
|
||||
"fax": "+ 49 3672 / 486475",
|
||||
"web": "http://www.schillerhaus.rudolstadt.de/",
|
||||
"email": "schillerhaus@rudolstadt.de",
|
||||
"author": "support@hubermedia.de",
|
||||
"geo": {
|
||||
"main": {
|
||||
"latitude": 50.720971023258805,
|
||||
"longitude": 11.335229873657227
|
||||
},
|
||||
"entry": [],
|
||||
"attributes": []
|
||||
},
|
||||
"ratings": [
|
||||
{
|
||||
"type": "eT4",
|
||||
"value": 40.0
|
||||
},
|
||||
{
|
||||
"type": "order",
|
||||
"value": 99.0001
|
||||
}
|
||||
],
|
||||
"cuisine_types": [],
|
||||
"payment": [],
|
||||
"media_objects": [
|
||||
{
|
||||
"rel": "venuewebsite",
|
||||
"url": "http://schillerhaus.rudolstadt.de/",
|
||||
"latitude": null,
|
||||
"longitude": null,
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"rel": "default",
|
||||
"url": "https://dam.destination.one/849917/279ac45b3fc701a7197131f627164fffd9f8cc77bc75165e2fc2b864ed606920/theater-rudolstadt_johannes-gei-er_photo-by-lisa-stern_web_-jpg.jpg",
|
||||
"type": "image/jpeg",
|
||||
"latitude": null,
|
||||
"longitude": null,
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"value": "Theater-Rudolstadt_Johannes-Geißer_photo-by-Lisa-Stern_web_.jpg"
|
||||
}
|
||||
],
|
||||
"keywords": [],
|
||||
"timeIntervals": [
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2099-12-19T15:00:00+01:00",
|
||||
"end": "2099-12-19T16:30:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
}
|
||||
],
|
||||
"kitchenTimeIntervals": [],
|
||||
"deliveryTimeIntervals": [],
|
||||
"numbers": [],
|
||||
"name": "Schillerhaus Rudolstadt",
|
||||
"attributes": [
|
||||
{
|
||||
"key": "VO_Id",
|
||||
"value": "100050775"
|
||||
},
|
||||
{
|
||||
"key": "VO_CategoryName",
|
||||
"value": "POI"
|
||||
},
|
||||
{
|
||||
"key": "VA_Id",
|
||||
"value": "100050775"
|
||||
},
|
||||
{
|
||||
"key": "VA_CategoryName",
|
||||
"value": "POI"
|
||||
},
|
||||
{
|
||||
"key": "interval_first_match_start",
|
||||
"value": "2099-12-19T15:00:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_first_match_end",
|
||||
"value": "2099-12-19T16:30:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_match_count",
|
||||
"value": "1"
|
||||
}
|
||||
],
|
||||
"features": [],
|
||||
"addresses": [
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen e.V.",
|
||||
"city": "Weimar",
|
||||
"zip": "99423",
|
||||
"street": "UNESCO-Platz 1",
|
||||
"phone": "+49 (3643) 745 314",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "author"
|
||||
},
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen\" e.V.",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "organisation"
|
||||
},
|
||||
{
|
||||
"name": "Schillerhaus Rudolstadt",
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schillerstraße 25",
|
||||
"phone": "+ 49 3672 / 486470",
|
||||
"fax": "+ 49 3672 / 486475",
|
||||
"web": "http://schillerhaus.rudolstadt.de",
|
||||
"email": "schillerhaus@rudolstadt.de",
|
||||
"rel": "organizer"
|
||||
}
|
||||
],
|
||||
"created": "2099-10-31T12:29:00+00:00",
|
||||
"changed": "2099-12-14T08:29:00+00:00",
|
||||
"source": {
|
||||
"url": "http://destination.one/",
|
||||
"value": "destination.one"
|
||||
},
|
||||
"company": "",
|
||||
"district": "",
|
||||
"postoffice": "",
|
||||
"phone2": "",
|
||||
"seasons": [],
|
||||
"subitems": [],
|
||||
"hyperObjects": []
|
||||
},
|
||||
{
|
||||
"global_id": "e_100354481",
|
||||
"id": "100354481",
|
||||
"title": "Tüftlerzeit",
|
||||
"type": "Event",
|
||||
"categories": [
|
||||
"Kinder"
|
||||
],
|
||||
"texts": [
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/html",
|
||||
"value": "Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein.<br>Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420<br><br>Bitte beachten Sie die derzeit geltenden Zugangsregeln."
|
||||
},
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/plain",
|
||||
"value": "Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein.\nVoranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420\n\nBitte beachten Sie die derzeit geltenden Zugangsregeln."
|
||||
},
|
||||
{
|
||||
"rel": "teaser",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"rel": "teaser",
|
||||
"type": "text/plain"
|
||||
}
|
||||
],
|
||||
"country": "Deutschland",
|
||||
"areas": [
|
||||
"Rudolstadt und Umgebung"
|
||||
],
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schulplatz 13",
|
||||
"phone": "0 36 72 - 48 64 20",
|
||||
"fax": "0 36 72 - 48 64 30",
|
||||
"web": "http://www.stadtbibliothek-rudolstadt.de/",
|
||||
"email": "stadtbibliothek@rudolstadt.de",
|
||||
"author": "support@hubermedia.de",
|
||||
"geo": {
|
||||
"main": {
|
||||
"latitude": 50.720835175055917,
|
||||
"longitude": 11.342568397521973
|
||||
},
|
||||
"entry": [],
|
||||
"attributes": []
|
||||
},
|
||||
"ratings": [
|
||||
{
|
||||
"type": "eT4",
|
||||
"value": 40.0
|
||||
},
|
||||
{
|
||||
"type": "order",
|
||||
"value": 99.0001
|
||||
}
|
||||
],
|
||||
"cuisine_types": [],
|
||||
"payment": [],
|
||||
"media_objects": [
|
||||
{
|
||||
"rel": "venuewebsite",
|
||||
"url": "http://www.stadtbibliothek-rudolstadt.de/",
|
||||
"latitude": null,
|
||||
"longitude": null,
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"rel": "default",
|
||||
"url": "https://dam.destination.one/828118/f13bbf5602ffc406ebae2faa3527654dea84194666bce4925a1ca8bd3f50c5e9/tueftlerzeit-sfz-rudolstadt-jpg.jpg",
|
||||
"type": "image/jpeg",
|
||||
"latitude": null,
|
||||
"longitude": null,
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"value": "Tueftlerzeit©SFZ-Rudolstadt.jpg"
|
||||
}
|
||||
],
|
||||
"keywords": [],
|
||||
"timeIntervals": [
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2099-12-16T15:00:00+01:00",
|
||||
"end": "2099-12-16T16:30:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
},
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2022-01-20T15:00:00+01:00",
|
||||
"end": "2022-01-20T17:00:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
},
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2022-02-17T15:00:00+01:00",
|
||||
"end": "2022-02-17T17:00:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
}
|
||||
],
|
||||
"kitchenTimeIntervals": [],
|
||||
"deliveryTimeIntervals": [],
|
||||
"numbers": [],
|
||||
"name": "Stadtbibliothek Rudolstadt",
|
||||
"attributes": [
|
||||
{
|
||||
"key": "VO_Id",
|
||||
"value": "100042570"
|
||||
},
|
||||
{
|
||||
"key": "VO_CategoryName",
|
||||
"value": "POI"
|
||||
},
|
||||
{
|
||||
"key": "VA_Id",
|
||||
"value": "100042570"
|
||||
},
|
||||
{
|
||||
"key": "VA_CategoryName",
|
||||
"value": "POI"
|
||||
},
|
||||
{
|
||||
"key": "interval_first_match_start",
|
||||
"value": "2099-12-16T15:00:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_first_match_end",
|
||||
"value": "2099-12-16T16:30:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_match_count",
|
||||
"value": "3"
|
||||
},
|
||||
{
|
||||
"key": "interval_last_match_start",
|
||||
"value": "2022-02-17T15:00:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_last_match_end",
|
||||
"value": "2022-02-17T17:00:00+01"
|
||||
}
|
||||
],
|
||||
"features": [],
|
||||
"addresses": [
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen e.V.",
|
||||
"city": "Weimar",
|
||||
"zip": "99423",
|
||||
"street": "UNESCO-Platz 1",
|
||||
"phone": "+49 (3643) 745 314",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "author"
|
||||
},
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen\" e.V.",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "organisation"
|
||||
},
|
||||
{
|
||||
"name": "Stadtbibliothek Rudolstadt",
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schulplatz 13",
|
||||
"phone": "0 36 72 - 48 64 20",
|
||||
"fax": "0 36 72 - 48 64 30",
|
||||
"web": "http://www.stadtbibliothek-rudolstadt.de ",
|
||||
"email": "stadtbibliothek@rudolstadt.de",
|
||||
"rel": "organizer"
|
||||
}
|
||||
],
|
||||
"created": "2099-11-10T23:02:00+00:00",
|
||||
"changed": "2099-12-14T08:28:00+00:00",
|
||||
"source": {
|
||||
"url": "http://destination.one/",
|
||||
"value": "destination.one"
|
||||
},
|
||||
"company": "",
|
||||
"district": "",
|
||||
"postoffice": "",
|
||||
"phone2": "",
|
||||
"seasons": [],
|
||||
"subitems": [],
|
||||
"hyperObjects": []
|
||||
},
|
||||
{
|
||||
"global_id": "e_100350503",
|
||||
"id": "100350503",
|
||||
"title": "Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",
|
||||
"type": "Event",
|
||||
"categories": [
|
||||
"Konzerte, Festivals, Show & Tanz",
|
||||
"Weihnachten"
|
||||
],
|
||||
"texts": [
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/html",
|
||||
"value": "Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss.<br><br><strong>Es gilt die 2G-PLUS-Regel.</strong><br>"
|
||||
},
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/plain",
|
||||
"value": "Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss.\n\nEs gilt die 2G-PLUS-Regel."
|
||||
},
|
||||
{
|
||||
"rel": "teaser",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"rel": "teaser",
|
||||
"type": "text/plain"
|
||||
}
|
||||
],
|
||||
"country": "Deutschland",
|
||||
"areas": [
|
||||
"Rudolstadt und Umgebung"
|
||||
],
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Caspar-Schulte-Straße",
|
||||
"phone": "03672 - 48 96 13",
|
||||
"author": "support@hubermedia.de",
|
||||
"geo": {
|
||||
"main": {
|
||||
"latitude": 50.718688721182531,
|
||||
"longitude": 11.327333450317383
|
||||
},
|
||||
"entry": [],
|
||||
"attributes": []
|
||||
},
|
||||
"ratings": [
|
||||
{
|
||||
"type": "eT4",
|
||||
"value": 40.0
|
||||
},
|
||||
{
|
||||
"type": "order",
|
||||
"value": 99.0001
|
||||
}
|
||||
],
|
||||
"cuisine_types": [],
|
||||
"payment": [],
|
||||
"media_objects": [
|
||||
{
|
||||
"rel": "default",
|
||||
"url": "https://dam.destination.one/853436/109ac1cf87913e21b5e2b0ef0cc63d223a14374364952a855746a8e7c3fcfc36/lutherkirche-jpg.jpg",
|
||||
"type": "image/jpeg",
|
||||
"latitude": null,
|
||||
"longitude": null,
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"value": "Lutherkirche.jpg"
|
||||
}
|
||||
],
|
||||
"keywords": [],
|
||||
"timeIntervals": [
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2099-12-01T19:00:00+01:00",
|
||||
"end": "2099-12-01T20:00:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
},
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2099-12-08T19:00:00+01:00",
|
||||
"end": "2099-12-08T20:00:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
},
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2099-12-15T19:00:00+01:00",
|
||||
"end": "2099-12-15T20:00:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
},
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2099-12-22T19:00:00+01:00",
|
||||
"end": "2099-12-22T20:00:00+01:00",
|
||||
"tz": "Europe/Berlin"
|
||||
}
|
||||
],
|
||||
"kitchenTimeIntervals": [],
|
||||
"deliveryTimeIntervals": [],
|
||||
"numbers": [],
|
||||
"name": "Lutherkirche",
|
||||
"attributes": [
|
||||
{
|
||||
"key": "VO_Id",
|
||||
"value": "100118350"
|
||||
},
|
||||
{
|
||||
"key": "VO_CategoryName",
|
||||
"value": "POI"
|
||||
},
|
||||
{
|
||||
"key": "VA_Id",
|
||||
"value": "100118350"
|
||||
},
|
||||
{
|
||||
"key": "VA_CategoryName",
|
||||
"value": "POI"
|
||||
},
|
||||
{
|
||||
"key": "interval_first_match_start",
|
||||
"value": "2099-12-15T19:00:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_first_match_end",
|
||||
"value": "2099-12-15T20:00:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_match_count",
|
||||
"value": "2"
|
||||
},
|
||||
{
|
||||
"key": "interval_last_match_start",
|
||||
"value": "2099-12-22T19:00:00+01"
|
||||
},
|
||||
{
|
||||
"key": "interval_last_match_end",
|
||||
"value": "2099-12-22T20:00:00+01"
|
||||
}
|
||||
],
|
||||
"features": [],
|
||||
"addresses": [
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen e.V.",
|
||||
"city": "Weimar",
|
||||
"zip": "99423",
|
||||
"street": "UNESCO-Platz 1",
|
||||
"phone": "+49 (3643) 745 314",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "author"
|
||||
},
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen\" e.V.",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "organisation"
|
||||
},
|
||||
{
|
||||
"name": "Lutherkirche",
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Caspar-Schulte-Straße",
|
||||
"phone": "03672 - 48 96 13",
|
||||
"rel": "organizer"
|
||||
}
|
||||
],
|
||||
"created": "2099-11-08T22:15:00+00:00",
|
||||
"changed": "2099-12-14T08:38:00+00:00",
|
||||
"source": {
|
||||
"url": "http://destination.one/",
|
||||
"value": "destination.one"
|
||||
},
|
||||
"company": "",
|
||||
"district": "",
|
||||
"postoffice": "",
|
||||
"phone2": "",
|
||||
"seasons": [],
|
||||
"subitems": [],
|
||||
"hyperObjects": []
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dataset>
|
||||
<tx_events_domain_model_region>
|
||||
<uid>1</uid>
|
||||
<pid>2</pid>
|
||||
<title>Example Region</title>
|
||||
</tx_events_domain_model_region>
|
||||
</dataset>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dataset>
|
||||
<pages>
|
||||
<pid>0</pid>
|
||||
<uid>1</uid>
|
||||
<title>Root page</title>
|
||||
<slug>1</slug>
|
||||
</pages>
|
||||
<pages>
|
||||
<pid>1</pid>
|
||||
<uid>2</uid>
|
||||
<title>Storage</title>
|
||||
<doktype>254</doktype>
|
||||
</pages>
|
||||
</dataset>
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
<?php
|
||||
|
||||
namespace Wrm\Events\Tests\Functional\Import\DestinationDataTest;
|
||||
|
||||
use GuzzleHttp\ClientInterface as GuzzleClientInterface;
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
use Psr\Http\Client\ClientInterface;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use Symfony\Component\DependencyInjection\Container;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use Wrm\Events\Command\DestinationDataImportCommand;
|
||||
use Wrm\Events\Tests\ClientFactory;
|
||||
|
||||
/**
|
||||
* @testdox DestinationData import
|
||||
*/
|
||||
class ImportsExampleAsExpectedTest extends AbstractTest
|
||||
{
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function importsExampleAsExpected(): void
|
||||
{
|
||||
$fileImportPath = 'staedte/beispielstadt/events/';
|
||||
|
||||
$this->importDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Fixtures/SingleRegion.xml');
|
||||
$this->setUpFrontendRootPage(1, [], [
|
||||
'config' => implode(PHP_EOL, [
|
||||
'module.tx_events_pi1.settings.destinationData {',
|
||||
'restUrl = ' . $this->getInstancePath() . '/typo3conf/ext/events/Tests/Functional/Import/DestinationDataTest/Fixtures/Response.json',
|
||||
'license = example-license',
|
||||
'restType = Event',
|
||||
'restLimit = 3',
|
||||
'restMode = next_months,12',
|
||||
'restTemplate = ET2014A.json',
|
||||
'categoriesPid = ',
|
||||
'categoryParentUid = ',
|
||||
'}',
|
||||
]),
|
||||
]);
|
||||
|
||||
$requests = [];
|
||||
$client = ClientFactory::createClientWithHistory([
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ExampleImage.jpg') ?: ''),
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ExampleImage.jpg') ?: ''),
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ExampleImage.jpg') ?: ''),
|
||||
], $requests);
|
||||
$container = $this->getContainer();
|
||||
if ($container instanceof Container) {
|
||||
$container->set(ClientInterface::class, $client);
|
||||
// For TYPO3 10 support
|
||||
$container->set(GuzzleClientInterface::class, $client);
|
||||
}
|
||||
|
||||
$subject = $this->getContainer()->get(DestinationDataImportCommand::class);
|
||||
self::assertInstanceOf(Command::class, $subject);
|
||||
|
||||
$tester = new CommandTester($subject);
|
||||
$tester->execute(
|
||||
[
|
||||
'storage-pid' => 2,
|
||||
'rest-experience' => 'beispielstadt',
|
||||
'files-folder' => $fileImportPath,
|
||||
'region-uid' => 1,
|
||||
],
|
||||
[
|
||||
'capture_stderr_separately' => true,
|
||||
]
|
||||
);
|
||||
|
||||
self::assertSame(0, $tester->getStatusCode());
|
||||
|
||||
self::assertCount(3, $requests, 'Unexpected number of requests were made.');
|
||||
self::assertSame('https://dam.destination.one/849917/279ac45b3fc701a7197131f627164fffd9f8cc77bc75165e2fc2b864ed606920/theater-rudolstadt_johannes-gei-er_photo-by-lisa-stern_web_-jpg.jpg', (string)$requests[0]['request']->getUri());
|
||||
self::assertSame('https://dam.destination.one/828118/f13bbf5602ffc406ebae2faa3527654dea84194666bce4925a1ca8bd3f50c5e9/tueftlerzeit-sfz-rudolstadt-jpg.jpg', (string)$requests[1]['request']->getUri());
|
||||
self::assertSame('https://dam.destination.one/853436/109ac1cf87913e21b5e2b0ef0cc63d223a14374364952a855746a8e7c3fcfc36/lutherkirche-jpg.jpg', (string)$requests[2]['request']->getUri());
|
||||
|
||||
self::assertCount(
|
||||
0,
|
||||
$this->getAllRecords('tx_events_domain_model_partner'),
|
||||
'Added unexpected partners.'
|
||||
);
|
||||
self::assertCount(
|
||||
1,
|
||||
$this->getAllRecords('tx_events_domain_model_region'),
|
||||
'Added or removed unexpected region.'
|
||||
);
|
||||
$this->assertCSVDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsExampleAsExpected.csv');
|
||||
|
||||
|
||||
$importedFiles = GeneralUtility::getFilesInDir($this->getInstancePath() . '/fileadmin/' . $fileImportPath);
|
||||
self::assertIsArray($importedFiles, 'Failed to retrieve imported files from filesystem.');
|
||||
self::assertSame(
|
||||
[
|
||||
'lutherkirche-jpg.jpg',
|
||||
'theater-rudolstadt_johannes-gei-er_photo-by-lisa-stern_web_-jpg.jpg',
|
||||
'tueftlerzeit-sfz-rudolstadt-jpg.jpg',
|
||||
],
|
||||
array_values($importedFiles),
|
||||
'Got unexpected number of files'
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
|
||||
namespace Wrm\Events\Tests\Functional\Import\DestinationDataTest;
|
||||
|
||||
use GuzzleHttp\ClientInterface as GuzzleClientInterface;
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
use Psr\Http\Client\ClientInterface;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use Symfony\Component\DependencyInjection\Container;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use Wrm\Events\Command\DestinationDataImportCommand;
|
||||
use Wrm\Events\Tests\ClientFactory;
|
||||
|
||||
/**
|
||||
* @testdox DestinationData import
|
||||
*/
|
||||
class ImportsWithoutRegionIfNotProvided extends AbstractTest
|
||||
{
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function importsWithoutRegionIfNotProvided(): void
|
||||
{
|
||||
$fileImportPath = 'staedte/beispielstadt/events/';
|
||||
$this->setUpFrontendRootPage(1, [], [
|
||||
'config' => implode(PHP_EOL, [
|
||||
'module.tx_events_pi1.settings.destinationData {',
|
||||
'restUrl = ' . $this->getInstancePath() . '/typo3conf/ext/events/Tests/Functional/Import/DestinationDataTest/Fixtures/Response.json',
|
||||
'license = example-license',
|
||||
'restType = Event',
|
||||
'restLimit = 3',
|
||||
'restMode = next_months,12',
|
||||
'restTemplate = ET2014A.json',
|
||||
'categoriesPid = ',
|
||||
'categoryParentUid = ',
|
||||
'}',
|
||||
]),
|
||||
]);
|
||||
|
||||
$requests = [];
|
||||
$client = ClientFactory::createClientWithHistory([
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ExampleImage.jpg') ?: ''),
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ExampleImage.jpg') ?: ''),
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ExampleImage.jpg') ?: ''),
|
||||
], $requests);
|
||||
$container = $this->getContainer();
|
||||
if ($container instanceof Container) {
|
||||
$container->set(ClientInterface::class, $client);
|
||||
// For TYPO3 10 support
|
||||
$container->set(GuzzleClientInterface::class, $client);
|
||||
}
|
||||
|
||||
$subject = $this->getContainer()->get(DestinationDataImportCommand::class);
|
||||
self::assertInstanceOf(Command::class, $subject);
|
||||
|
||||
$tester = new CommandTester($subject);
|
||||
$tester->execute(
|
||||
[
|
||||
'storage-pid' => 2,
|
||||
'rest-experience' => 'beispielstadt',
|
||||
'files-folder' => $fileImportPath,
|
||||
],
|
||||
[
|
||||
'capture_stderr_separately' => true,
|
||||
]
|
||||
);
|
||||
|
||||
self::assertSame(0, $tester->getStatusCode());
|
||||
|
||||
self::assertCount(3, $requests, 'Unexpected number of requests were made.');
|
||||
self::assertSame('https://dam.destination.one/849917/279ac45b3fc701a7197131f627164fffd9f8cc77bc75165e2fc2b864ed606920/theater-rudolstadt_johannes-gei-er_photo-by-lisa-stern_web_-jpg.jpg', (string)$requests[0]['request']->getUri());
|
||||
self::assertSame('https://dam.destination.one/828118/f13bbf5602ffc406ebae2faa3527654dea84194666bce4925a1ca8bd3f50c5e9/tueftlerzeit-sfz-rudolstadt-jpg.jpg', (string)$requests[1]['request']->getUri());
|
||||
self::assertSame('https://dam.destination.one/853436/109ac1cf87913e21b5e2b0ef0cc63d223a14374364952a855746a8e7c3fcfc36/lutherkirche-jpg.jpg', (string)$requests[2]['request']->getUri());
|
||||
|
||||
self::assertCount(
|
||||
0,
|
||||
$this->getAllRecords('tx_events_domain_model_partner'),
|
||||
'Added unexpected partners.'
|
||||
);
|
||||
self::assertCount(
|
||||
0,
|
||||
$this->getAllRecords('tx_events_domain_model_region'),
|
||||
'Added unexpected region.'
|
||||
);
|
||||
$this->assertCSVDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutRegionIfNotProvided.csv');
|
||||
|
||||
|
||||
$importedFiles = GeneralUtility::getFilesInDir($this->getInstancePath() . '/fileadmin/' . $fileImportPath);
|
||||
self::assertIsArray($importedFiles, 'Failed to retrieve imported files from filesystem.');
|
||||
self::assertSame(
|
||||
[
|
||||
'lutherkirche-jpg.jpg',
|
||||
'theater-rudolstadt_johannes-gei-er_photo-by-lisa-stern_web_-jpg.jpg',
|
||||
'tueftlerzeit-sfz-rudolstadt-jpg.jpg',
|
||||
],
|
||||
array_values($importedFiles),
|
||||
'Got unexpected number of files'
|
||||
);
|
||||
}
|
||||
}
|
|
@ -7,6 +7,11 @@
|
|||
{
|
||||
"name": "Dirk Koritnik",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Daniel Siepmann",
|
||||
"email": "coding@daniel-siepmann.de",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
|
@ -26,6 +31,12 @@
|
|||
"Wrm\\Events\\Tests\\": "Tests"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"post-autoload-dump": [
|
||||
"mkdir -p .Build/web/typo3conf/ext/",
|
||||
"[ -L .Build/web/typo3conf/ext/events ] || ln -snvf ../../../../. .Build/web/typo3conf/ext/events"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"typo3/cms": {
|
||||
"cms-package-dir": "{$vendor-dir}/typo3/cms",
|
||||
|
@ -39,6 +50,10 @@
|
|||
"symplify/easy-coding-standard": "^9.4",
|
||||
"phpstan/phpstan": "^1.0",
|
||||
"phpstan/extension-installer": "^1.1",
|
||||
"saschaegerer/phpstan-typo3": "^1.0"
|
||||
"saschaegerer/phpstan-typo3": "^1.0",
|
||||
"typo3/testing-framework": "^6.14",
|
||||
"jangregor/phpstan-prophecy": "^1.0",
|
||||
"phpstan/phpstan-phpunit": "^1.0",
|
||||
"guzzlehttp/guzzle": "^6.3 || ^7.3"
|
||||
}
|
||||
}
|
||||
|
|
29
phpunit.xml.dist
Normal file
29
phpunit.xml.dist
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0"?>
|
||||
<phpunit
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
|
||||
backupGlobals="false"
|
||||
backupStaticAttributes="false"
|
||||
bootstrap="vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTestsBootstrap.php"
|
||||
colors="true"
|
||||
convertErrorsToExceptions="true"
|
||||
convertWarningsToExceptions="true"
|
||||
forceCoversAnnotation="false"
|
||||
processIsolation="false"
|
||||
stopOnError="false"
|
||||
stopOnFailure="false"
|
||||
stopOnIncomplete="false"
|
||||
stopOnSkipped="false"
|
||||
verbose="false"
|
||||
>
|
||||
|
||||
<testsuites>
|
||||
<testsuite name="functional">
|
||||
<directory>Tests/Functional/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
|
||||
<php>
|
||||
<env name="typo3DatabaseDriver" value="pdo_sqlite"/>
|
||||
</php>
|
||||
</phpunit>
|
Loading…
Reference in a new issue