mirror of
https://github.com/werkraum-media/thuecat.git
synced 2024-12-05 03:26:13 +01:00
parent
f69db97990
commit
8c4e33a8d0
15 changed files with 470 additions and 36 deletions
|
@ -28,9 +28,9 @@ use WerkraumMedia\ThueCat\Domain\Import\EntityMapper\PropertyValues;
|
|||
class TouristAttraction extends Place implements MapsToType
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
* @var string[]
|
||||
*/
|
||||
protected $slogan = '';
|
||||
protected $slogan = [];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
@ -77,7 +77,7 @@ class TouristAttraction extends Place implements MapsToType
|
|||
*/
|
||||
protected $availableLanguages = [];
|
||||
|
||||
public function getSlogan(): string
|
||||
public function getSlogan(): array
|
||||
{
|
||||
return $this->slogan;
|
||||
}
|
||||
|
@ -144,10 +144,15 @@ class TouristAttraction extends Place implements MapsToType
|
|||
|
||||
/**
|
||||
* @internal for mapping via Symfony component.
|
||||
*
|
||||
* @param string|array $slogan
|
||||
*/
|
||||
public function setSlogan(string $slogan): void
|
||||
public function setSlogan($slogan): void
|
||||
{
|
||||
$this->slogan = PropertyValues::removePrefixFromEntry($slogan);
|
||||
if (is_string($slogan)) {
|
||||
$slogan = [$slogan];
|
||||
}
|
||||
$this->slogan = PropertyValues::removePrefixFromEntries($slogan);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -244,7 +244,7 @@ class GeneralConverter implements Converter
|
|||
'payment_accepted' => method_exists($entity, 'getPaymentsAccepted') ? implode(',', $entity->getPaymentsAccepted()) : '',
|
||||
'distance_to_public_transport' => method_exists($entity, 'getDistanceToPublicTransport') ? $entity->getDistanceToPublicTransport() : '',
|
||||
|
||||
'slogan' => method_exists($entity, 'getSlogan') ? $entity->getSlogan() : '',
|
||||
'slogan' => method_exists($entity, 'getSlogan') ? implode(',', $entity->getSlogan()) : '',
|
||||
'start_of_construction' => method_exists($entity, 'getStartOfConstruction') ? $entity->getStartOfConstruction() : '',
|
||||
'museum_service' => method_exists($entity, 'getMuseumServices') ? implode(',', $entity->getMuseumServices()) : '',
|
||||
'architectural_style' => method_exists($entity, 'getArchitecturalStyles') ? implode(',', $entity->getArchitecturalStyles()) : '',
|
||||
|
|
|
@ -84,7 +84,15 @@ class TouristAttraction extends Place
|
|||
|
||||
public function getSlogan(): string
|
||||
{
|
||||
return $this->slogan;
|
||||
return explode(',', $this->slogan)[0] ?? '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getSlogans(): array
|
||||
{
|
||||
return explode(',', $this->slogan);
|
||||
}
|
||||
|
||||
public function getOffers(): ?Offers
|
||||
|
|
31
Documentation/Changelog/2.2.0.rst
Normal file
31
Documentation/Changelog/2.2.0.rst
Normal file
|
@ -0,0 +1,31 @@
|
|||
2.2.0
|
||||
=====
|
||||
|
||||
Breaking
|
||||
--------
|
||||
|
||||
Nothing
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
* Add support for multiple slogans (array within slogan).
|
||||
The existing API will return the first slogan.
|
||||
A new method `getSlogans` is added which will return the array of slogans.
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
Nothing
|
||||
|
||||
Tasks
|
||||
-----
|
||||
|
||||
* Add PHP data for testing framework to ease backports.
|
||||
As we have migrated on current main already.
|
||||
|
||||
Deprecation
|
||||
-----------
|
||||
|
||||
Nothing
|
||||
|
|
@ -23,11 +23,14 @@ declare(strict_types=1);
|
|||
|
||||
namespace WerkraumMedia\ThueCat\Tests\Functional;
|
||||
|
||||
use Codappix\Typo3PhpDatasets\TestingFramework;
|
||||
use TYPO3\CMS\Core\Localization\LanguageService;
|
||||
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
|
||||
|
||||
abstract class AbstractImportTest extends FunctionalTestCase
|
||||
{
|
||||
use TestingFramework;
|
||||
|
||||
/**
|
||||
* Whether to expect errors to be logged.
|
||||
* Will check for no errors if set to false.
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'tx_thuecat_tourist_attraction' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'pid' => '10',
|
||||
'sys_language_uid' => '0',
|
||||
'l18n_parent' => '0',
|
||||
'l10n_source' => '0',
|
||||
'remote_id' => 'https://thuecat.org/resources/attraction-with-single-slogan',
|
||||
'title' => 'Attraktion mit single slogan',
|
||||
'slogan' => 'InsiderTip',
|
||||
],
|
||||
1 => [
|
||||
'uid' => '2',
|
||||
'pid' => '10',
|
||||
'sys_language_uid' => '1',
|
||||
'l18n_parent' => '1',
|
||||
'l10n_source' => '1',
|
||||
'remote_id' => 'https://thuecat.org/resources/attraction-with-single-slogan',
|
||||
'title' => 'Attraction with single slogan',
|
||||
'slogan' => 'InsiderTip',
|
||||
],
|
||||
],
|
||||
];
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'tx_thuecat_tourist_attraction' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'pid' => '10',
|
||||
'sys_language_uid' => '0',
|
||||
'l18n_parent' => '0',
|
||||
'l10n_source' => '0',
|
||||
'remote_id' => 'https://thuecat.org/resources/attraction-with-slogan-array',
|
||||
'title' => 'Attraktion mit slogan array',
|
||||
'slogan' => 'Highlight,InsiderTip,Unique',
|
||||
],
|
||||
1 => [
|
||||
'uid' => '2',
|
||||
'pid' => '10',
|
||||
'sys_language_uid' => '1',
|
||||
'l18n_parent' => '1',
|
||||
'l10n_source' => '1',
|
||||
'remote_id' => 'https://thuecat.org/resources/attraction-with-slogan-array',
|
||||
'title' => 'Attraction with slogan array',
|
||||
'slogan' => 'Highlight,InsiderTip,Unique',
|
||||
],
|
||||
],
|
||||
];
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
"@context": {
|
||||
"cdb": "https://thuecat.org/ontology/cdb/1.0/",
|
||||
"dachkg": "https://thuecat.org/ontology/dachkg/1.0/",
|
||||
"dbo": "http://dbpedia.org/ontology/",
|
||||
"dsv": "http://ontologies.sti-innsbruck.at/dsv/",
|
||||
"foaf": "http://xmlns.com/foaf/0.1/",
|
||||
"owl": "http://www.w3.org/2002/07/owl#",
|
||||
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
|
||||
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
|
||||
"schema": "http://schema.org/",
|
||||
"sh": "http://www.w3.org/ns/shacl#",
|
||||
"thuecat": "https://thuecat.org/ontology/thuecat/1.0/",
|
||||
"ttgds": "https://thuecat.org/ontology/ttgds/1.0/",
|
||||
"xsd": "http://www.w3.org/2001/XMLSchema#"
|
||||
},
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "https://thuecat.org/resources/attraction-with-single-slogan",
|
||||
"@type": [
|
||||
"schema:Place",
|
||||
"schema:Thing",
|
||||
"schema:TouristAttraction",
|
||||
"ttgds:PointOfInterest"
|
||||
],
|
||||
"schema:availableLanguage": [
|
||||
{
|
||||
"@type": "thuecat:Language",
|
||||
"@value": "thuecat:German"
|
||||
},
|
||||
{
|
||||
"@type": "thuecat:Language",
|
||||
"@value": "thuecat:English"
|
||||
}
|
||||
],
|
||||
"schema:name": [
|
||||
{
|
||||
"@language": "de",
|
||||
"@value": "Attraktion mit single slogan"
|
||||
},
|
||||
{
|
||||
"@language": "en",
|
||||
"@value": "Attraction with single slogan"
|
||||
}
|
||||
],
|
||||
"schema:slogan": {
|
||||
"@type": "thuecat:ThuSlogan",
|
||||
"@value": "thuecat:InsiderTip"
|
||||
},
|
||||
"thuecat:contentResponsible": {
|
||||
"@id": "https://thuecat.org/resources/018132452787-ngbe"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"@context": {
|
||||
"cdb": "https://thuecat.org/ontology/cdb/1.0/",
|
||||
"dachkg": "https://thuecat.org/ontology/dachkg/1.0/",
|
||||
"dbo": "http://dbpedia.org/ontology/",
|
||||
"dsv": "http://ontologies.sti-innsbruck.at/dsv/",
|
||||
"foaf": "http://xmlns.com/foaf/0.1/",
|
||||
"owl": "http://www.w3.org/2002/07/owl#",
|
||||
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
|
||||
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
|
||||
"schema": "http://schema.org/",
|
||||
"sh": "http://www.w3.org/ns/shacl#",
|
||||
"thuecat": "https://thuecat.org/ontology/thuecat/1.0/",
|
||||
"ttgds": "https://thuecat.org/ontology/ttgds/1.0/",
|
||||
"xsd": "http://www.w3.org/2001/XMLSchema#"
|
||||
},
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "https://thuecat.org/resources/attraction-with-slogan-array",
|
||||
"@type": [
|
||||
"schema:Place",
|
||||
"schema:Thing",
|
||||
"schema:TouristAttraction",
|
||||
"ttgds:PointOfInterest"
|
||||
],
|
||||
"schema:availableLanguage": [
|
||||
{
|
||||
"@type": "thuecat:Language",
|
||||
"@value": "thuecat:German"
|
||||
},
|
||||
{
|
||||
"@type": "thuecat:Language",
|
||||
"@value": "thuecat:English"
|
||||
}
|
||||
],
|
||||
"schema:name": [
|
||||
{
|
||||
"@language": "de",
|
||||
"@value": "Attraktion mit slogan array"
|
||||
},
|
||||
{
|
||||
"@language": "en",
|
||||
"@value": "Attraction with slogan array"
|
||||
}
|
||||
],
|
||||
"schema:slogan": [
|
||||
{
|
||||
"@type": "thuecat:ThuSlogan",
|
||||
"@value": "thuecat:Highlight"
|
||||
},
|
||||
{
|
||||
"@type": "thuecat:ThuSlogan",
|
||||
"@value": "thuecat:InsiderTip"
|
||||
},
|
||||
{
|
||||
"@type": "thuecat:ThuSlogan",
|
||||
"@value": "thuecat:Unique"
|
||||
}
|
||||
],
|
||||
"thuecat:contentResponsible": {
|
||||
"@id": "https://thuecat.org/resources/018132452787-ngbe"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Domain\Repository\PageRepository;
|
||||
|
||||
return [
|
||||
'pages' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'pid' => '0',
|
||||
'tstamp' => '1613400587',
|
||||
'crdate' => '1613400558',
|
||||
'doktype' => PageRepository::DOKTYPE_DEFAULT,
|
||||
'title' => 'Rootpage',
|
||||
'is_siteroot' => '1',
|
||||
],
|
||||
1 => [
|
||||
'uid' => '10',
|
||||
'pid' => '1',
|
||||
'tstamp' => '1613400587',
|
||||
'crdate' => '1613400558',
|
||||
'doktype' => PageRepository::DOKTYPE_SYSFOLDER,
|
||||
'title' => 'Storage folder',
|
||||
],
|
||||
],
|
||||
'sys_language' => [
|
||||
0 => [
|
||||
'uid' => 1,
|
||||
'pid' => 0,
|
||||
'title' => 'English',
|
||||
'flag' => 'en-us-gb',
|
||||
'language_isocode' => 'en',
|
||||
],
|
||||
1 => [
|
||||
'uid' => 2,
|
||||
'pid' => 0,
|
||||
'title' => 'French',
|
||||
'flag' => 'fr',
|
||||
'language_isocode' => 'fr',
|
||||
],
|
||||
],
|
||||
'tx_thuecat_import_configuration' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'pid' => '0',
|
||||
'tstamp' => '1613400587',
|
||||
'crdate' => '1613400558',
|
||||
'disable' => '0',
|
||||
'title' => 'Tourist Attraction',
|
||||
'type' => 'static',
|
||||
'configuration' => '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<T3FlexForms>
|
||||
<data>
|
||||
<sheet index="sDEF">
|
||||
<language index="lDEF">
|
||||
<field index="storagePid">
|
||||
<value index="vDEF">10</value>
|
||||
</field>
|
||||
<field index="urls">
|
||||
<el index="el">
|
||||
<field index="602a89f54d694654233086">
|
||||
<value index="url">
|
||||
<el>
|
||||
<field index="url">
|
||||
<value index="vDEF">https://thuecat.org/resources/attraction-with-single-slogan</value>
|
||||
</field>
|
||||
</el>
|
||||
</value>
|
||||
<value index="_TOGGLE">0</value>
|
||||
</field>
|
||||
</el>
|
||||
</field>
|
||||
</language>
|
||||
</sheet>
|
||||
</data>
|
||||
</T3FlexForms>
|
||||
',
|
||||
],
|
||||
],
|
||||
];
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Domain\Repository\PageRepository;
|
||||
|
||||
return [
|
||||
'pages' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'pid' => '0',
|
||||
'tstamp' => '1613400587',
|
||||
'crdate' => '1613400558',
|
||||
'doktype' => PageRepository::DOKTYPE_DEFAULT,
|
||||
'title' => 'Rootpage',
|
||||
'is_siteroot' => '1',
|
||||
],
|
||||
1 => [
|
||||
'uid' => '10',
|
||||
'pid' => '1',
|
||||
'tstamp' => '1613400587',
|
||||
'crdate' => '1613400558',
|
||||
'doktype' => PageRepository::DOKTYPE_SYSFOLDER,
|
||||
'title' => 'Storage folder',
|
||||
],
|
||||
],
|
||||
'sys_language' => [
|
||||
0 => [
|
||||
'uid' => 1,
|
||||
'pid' => 0,
|
||||
'title' => 'English',
|
||||
'flag' => 'en-us-gb',
|
||||
'language_isocode' => 'en',
|
||||
],
|
||||
1 => [
|
||||
'uid' => 2,
|
||||
'pid' => 0,
|
||||
'title' => 'French',
|
||||
'flag' => 'fr',
|
||||
'language_isocode' => 'fr',
|
||||
],
|
||||
],
|
||||
'tx_thuecat_import_configuration' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'pid' => '0',
|
||||
'tstamp' => '1613400587',
|
||||
'crdate' => '1613400558',
|
||||
'disable' => '0',
|
||||
'title' => 'Tourist Attraction',
|
||||
'type' => 'static',
|
||||
'configuration' => '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<T3FlexForms>
|
||||
<data>
|
||||
<sheet index="sDEF">
|
||||
<language index="lDEF">
|
||||
<field index="storagePid">
|
||||
<value index="vDEF">10</value>
|
||||
</field>
|
||||
<field index="urls">
|
||||
<el index="el">
|
||||
<field index="602a89f54d694654233086">
|
||||
<value index="url">
|
||||
<el>
|
||||
<field index="url">
|
||||
<value index="vDEF">https://thuecat.org/resources/attraction-with-slogan-array</value>
|
||||
</field>
|
||||
</el>
|
||||
</value>
|
||||
<value index="_TOGGLE">0</value>
|
||||
</field>
|
||||
</el>
|
||||
</field>
|
||||
</language>
|
||||
</sheet>
|
||||
</data>
|
||||
</T3FlexForms>
|
||||
',
|
||||
],
|
||||
],
|
||||
];
|
|
@ -24,6 +24,7 @@ namespace WerkraumMedia\ThueCat\Tests\Functional;
|
|||
*/
|
||||
|
||||
use WerkraumMedia\ThueCat\Domain\Import\Importer;
|
||||
use WerkraumMedia\ThueCat\Domain\Model\Backend\ImportConfiguration;
|
||||
use WerkraumMedia\ThueCat\Domain\Repository\Backend\ImportConfigurationRepository;
|
||||
|
||||
/**
|
||||
|
@ -67,8 +68,7 @@ class ImportTest extends AbstractImportTest
|
|||
$this->importDataSet(__DIR__ . '/Fixtures/Import/ImportsFreshOrganization.xml');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsFreshOrganization.csv');
|
||||
}
|
||||
|
@ -81,8 +81,7 @@ class ImportTest extends AbstractImportTest
|
|||
$this->importDataSet(__DIR__ . '/Fixtures/Import/UpdatesExistingOrganization.xml');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$organisations = $this->getAllRecords('tx_thuecat_organisation');
|
||||
self::assertCount(1, $organisations);
|
||||
|
@ -116,8 +115,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/043064193523-jcyt.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTown.csv');
|
||||
}
|
||||
|
@ -131,8 +129,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/043064193523-jcyt.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTownWithRelation.csv');
|
||||
}
|
||||
|
@ -166,8 +163,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/440055527204-ocar.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/dms_5197164.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTouristAttractionsWithRelations.csv');
|
||||
}
|
||||
|
@ -181,8 +177,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/opening-hours-to-filter.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTouristAttractionsWithFilteredOpeningHours.csv');
|
||||
}
|
||||
|
@ -196,8 +191,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/special-opening-hours.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTouristAttractionsWithSpecialOpeningHours.csv');
|
||||
}
|
||||
|
@ -214,8 +208,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/573211638937-gmqb.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/356133173991-cryw.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTouristInformationWithRelation.csv');
|
||||
}
|
||||
|
@ -250,8 +243,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/440055527204-ocar.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/dms_5197164.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsSyncScope.csv');
|
||||
}
|
||||
|
@ -294,8 +286,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendNotFoundResponse();
|
||||
}
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsContainsPlace.csv');
|
||||
}
|
||||
|
@ -317,8 +308,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendNotFoundResponse();
|
||||
}
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
if (version_compare(PHP_VERSION, '8.1.0', '<')) {
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsFollowingRecordsInCaseOfAnMappingExceptionOldPhp.csv');
|
||||
|
@ -358,8 +348,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/440055527204-ocar.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/dms_5197164.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportWithMultipleReferencesToSameObject.csv');
|
||||
}
|
||||
|
@ -379,8 +368,7 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/image-with-license-author.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/image-with-author-and-license-author.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTouristAttractionWithMedia.csv');
|
||||
}
|
||||
|
@ -396,12 +384,48 @@ class ImportTest extends AbstractImportTest
|
|||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/e_331baf4eeda4453db920dde62f7e6edc-rfa-accessibility-specification.json');
|
||||
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertCSVDataSet('EXT:thuecat/Tests/Functional/Fixtures/Import/ImportsTouristAttractionWithAccessibilitySpecification.csv');
|
||||
$records = $this->getAllRecords('tx_thuecat_tourist_attraction');
|
||||
self::assertStringEqualsFile(__DIR__ . '/Fixtures/Import/ImportsTouristAttractionWithAccessibilitySpecificationGerman.txt', $records[0]['accessibility_specification'] . PHP_EOL);
|
||||
self::assertStringEqualsFile(__DIR__ . '/Fixtures/Import/ImportsTouristAttractionWithAccessibilitySpecificationEnglish.txt', $records[1]['accessibility_specification'] . PHP_EOL);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function importsTouristAttractionWithSloganArray(): void
|
||||
{
|
||||
$this->importPHPDataSet(__DIR__ . '/Fixtures/Import/ImportsTouristAttractionWithSloganArray.php');
|
||||
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/attraction-with-slogan-array.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertPHPDataSet(__DIR__ . '/Assertions/Import/ImportsTouristAttractionWithSloganArray.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function importsTouristAttractionWithSingleSlogan(): void
|
||||
{
|
||||
$this->importPHPDataSet(__DIR__ . '/Fixtures/Import/ImportsTouristAttractionWithSingleSlogan.php');
|
||||
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/attraction-with-single-slogan.json');
|
||||
GuzzleClientFaker::appendResponseFromFile(__DIR__ . '/Fixtures/Import/Guzzle/thuecat.org/resources/018132452787-ngbe.json');
|
||||
|
||||
$this->importConfiguration();
|
||||
|
||||
$this->assertPHPDataSet(__DIR__ . '/Assertions/Import/ImportsTouristAttractionWithSingleSlogan.php');
|
||||
}
|
||||
|
||||
private function importConfiguration(): void
|
||||
{
|
||||
$configuration = $this->get(ImportConfigurationRepository::class)->findByUid(1);
|
||||
self::assertInstanceOf(ImportConfiguration::class, $configuration);
|
||||
$this->get(Importer::class)->importConfiguration($configuration);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -291,4 +291,28 @@ class TouristAttractionTest extends TestCase
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function returnsSingleSlogan(): void
|
||||
{
|
||||
$subject = new TouristAttraction();
|
||||
$subject->_setProperty('slogan', 'Some text');
|
||||
|
||||
self::assertSame('Some text', $subject->getSlogan());
|
||||
self::assertSame(['Some text'], $subject->getSlogans());
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function returnsMultipleSlogans(): void
|
||||
{
|
||||
$subject = new TouristAttraction();
|
||||
$subject->_setProperty('slogan', 'Some text,Highlight');
|
||||
|
||||
self::assertSame('Some text', $subject->getSlogan());
|
||||
self::assertSame(['Some text', 'Highlight'], $subject->getSlogans());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
"typo3/cms-frontend": "^10.4 || ^11.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"codappix/typo3-php-datasets": "^1.4",
|
||||
"codeception/codeception": "^4.2",
|
||||
"codeception/module-webdriver": "^2.0",
|
||||
"jangregor/phpstan-prophecy": "^1.0",
|
||||
|
|
|
@ -11,7 +11,7 @@ $EM_CONF[$_EXTKEY] = [
|
|||
'author' => 'Daniel Siepmann',
|
||||
'author_email' => 'coding@daniel-siepmann.de',
|
||||
'author_company' => '',
|
||||
'version' => '2.1.0',
|
||||
'version' => '2.2.0',
|
||||
'constraints' => [
|
||||
'depends' => [
|
||||
'core' => '',
|
||||
|
|
Loading…
Reference in a new issue