Browse Source
Add new configuration to support sync scope. This one requires the provided sync scope id and will always update all entries. Relates: #23pull/26/head
22 changed files with 927 additions and 27 deletions
@ -0,0 +1,26 @@
|
||||
<?php |
||||
|
||||
namespace WerkraumMedia\ThueCat\Domain\Import\Importer\FetchData; |
||||
|
||||
/* |
||||
* Copyright (C) 2021 Daniel Siepmann <coding@daniel-siepmann.de> |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License |
||||
* as published by the Free Software Foundation; either version 2 |
||||
* of the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
||||
* 02110-1301, USA. |
||||
*/ |
||||
|
||||
class InvalidResponseException extends \RuntimeException |
||||
{ |
||||
} |
@ -0,0 +1,74 @@
|
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
namespace WerkraumMedia\ThueCat\Domain\Import\UrlProvider; |
||||
|
||||
/* |
||||
* Copyright (C) 2021 Daniel Siepmann <coding@daniel-siepmann.de> |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License |
||||
* as published by the Free Software Foundation; either version 2 |
||||
* of the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
||||
* 02110-1301, USA. |
||||
*/ |
||||
|
||||
use WerkraumMedia\ThueCat\Domain\Import\Importer\FetchData; |
||||
use WerkraumMedia\ThueCat\Domain\Model\Backend\ImportConfiguration; |
||||
|
||||
class SyncScopeUrlProvider implements UrlProvider |
||||
{ |
||||
/** |
||||
* @var FetchData |
||||
*/ |
||||
private $fetchData; |
||||
|
||||
/** |
||||
* @var string |
||||
*/ |
||||
private $syncScopeId = ''; |
||||
|
||||
public function __construct( |
||||
FetchData $fetchData |
||||
) { |
||||
$this->fetchData = $fetchData; |
||||
} |
||||
|
||||
public function canProvideForConfiguration( |
||||
ImportConfiguration $configuration |
||||
): bool { |
||||
return $configuration->getType() === 'syncScope'; |
||||
} |
||||
|
||||
public function createWithConfiguration( |
||||
ImportConfiguration $configuration |
||||
): UrlProvider { |
||||
$instance = clone $this; |
||||
$instance->syncScopeId = $configuration->getSyncScopeId(); |
||||
|
||||
return $instance; |
||||
} |
||||
|
||||
public function getUrls(): array |
||||
{ |
||||
$response = $this->fetchData->updatedNodes($this->syncScopeId); |
||||
|
||||
$resourceIds = array_values($response['data']['createdOrUpdated'] ?? []); |
||||
|
||||
$urls = array_map(function (string $id) { |
||||
return $this->fetchData->getResourceEndpoint() . $id; |
||||
}, $resourceIds); |
||||
|
||||
return $urls; |
||||
} |
||||
} |
@ -0,0 +1,35 @@
|
||||
<T3DataStructure> |
||||
<meta> |
||||
<langDisable>1</langDisable> |
||||
</meta> |
||||
<sheets> |
||||
<sDEF> |
||||
<ROOT> |
||||
<TCEforms> |
||||
<sheetTitle>LLL:EXT:thuecat/Resources/Private/Language/locallang_flexform.xlf:importConfiguration.syncScope.sheetTitle</sheetTitle> |
||||
</TCEforms> |
||||
<type>array</type> |
||||
<el> |
||||
<storagePid> |
||||
<TCEforms> |
||||
<label>LLL:EXT:thuecat/Resources/Private/Language/locallang_flexform.xlf:importConfiguration.syncScope.storagePid</label> |
||||
<config> |
||||
<type>input</type> |
||||
<eval>int,required</eval> |
||||
</config> |
||||
</TCEforms> |
||||
</storagePid> |
||||
<syncScopeId> |
||||
<TCEforms> |
||||
<label>LLL:EXT:thuecat/Resources/Private/Language/locallang_flexform.xlf:importConfiguration.syncScope.syncScopeId</label> |
||||
<config> |
||||
<type>input</type> |
||||
<eval>trim,required</eval> |
||||
</config> |
||||
</TCEforms> |
||||
</syncScopeId> |
||||
</el> |
||||
</ROOT> |
||||
</sDEF> |
||||
</sheets> |
||||
</T3DataStructure> |
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> |
||||
<file source-language="en" datatype="plaintext" original="messages" date="2021-02-01T09:24:10Z" product-name="ThueCat TCA Labels"> |
||||
<header/> |
||||
<body> |
||||
<trans-unit id="apiKey" xml:space="preserve"> |
||||
<source>API-Key</source> |
||||
</trans-unit> |
||||
</body> |
||||
</file> |
||||
</xliff> |
@ -0,0 +1,19 @@
|
||||
HTTP/1.1 200 OK |
||||
Date: Mon, 31 May 2021 07:45:26 GMT |
||||
Content-Type: application/json; charset=utf-8 |
||||
Content-Length: 34 |
||||
Connection: keep-alive |
||||
access-control-allow-origin: https://cdb.thuecat.org |
||||
content-security-policy: default-src 'self'; script-src 'self' 'sha256-xfTbtWk8kVI65iLJs8LB3lWf2g0g10DS71pDdoutFHc='; style-src 'self' 'unsafe-inline' https://stackpath.bootstrapcdn.com; img-src 'self' data: blob: * |
||||
feature-policy: microphone 'none'; camera 'none'; payment 'none' |
||||
referrer-policy: same-origin |
||||
x-content-type-options: nosniff |
||||
x-xss-protection: 1; mode=block |
||||
x-frame-options: deny |
||||
access-control-allow-credentials: true |
||||
strict-transport-security: max-age=15724800; includeSubDomains |
||||
access-control-allow-headers: Authorization, Content-Type |
||||
access-control-allow-methods: HEAD, GET, POST, DELETE, OPTIONS |
||||
set-cookie: ahSession=3d594be0a8f63b6e5aa0683d86c33f0014462fff;path=/;expires=Thu, 01 Jul 2021 07:45:26 GMT;httpOnly=true; |
||||
|
||||
{"data":{"createdOrUpdated":["835224016581-dara","165868194223-zmqf","215230952334-yyno"],"removed":["319489049949-yzpe","440865870518-kcka","057564926026-ambc","502105041571-gtmz","956950809461-mkyx","505212346932-dgdj","304166137220-qegp","052993102595-yytg","008779699609-ettg","992865433390-jqcw","678174286034-dpza","473249269683-mxjj","r_20704386-oapoi","121412224073-roqx","067447662224-fhpb","103385129122-pypq","764328419582-bdhj","303605630412-cygb","891743863902-bkeb"]}} |
@ -0,0 +1,19 @@
|
||||
HTTP/1.1 200 OK |
||||
Date: Mon, 31 May 2021 07:45:26 GMT |
||||
Content-Type: application/json; charset=utf-8 |
||||
Content-Length: 34 |
||||
Connection: keep-alive |
||||
access-control-allow-origin: https://cdb.thuecat.org |
||||
content-security-policy: default-src 'self'; script-src 'self' 'sha256-xfTbtWk8kVI65iLJs8LB3lWf2g0g10DS71pDdoutFHc='; style-src 'self' 'unsafe-inline' https://stackpath.bootstrapcdn.com; img-src 'self' data: blob: * |
||||
feature-policy: microphone 'none'; camera 'none'; payment 'none' |
||||
referrer-policy: same-origin |
||||
x-content-type-options: nosniff |
||||
x-xss-protection: 1; mode=block |
||||
x-frame-options: deny |
||||
access-control-allow-credentials: true |
||||
strict-transport-security: max-age=15724800; includeSubDomains |
||||
access-control-allow-headers: Authorization, Content-Type |
||||
access-control-allow-methods: HEAD, GET, POST, DELETE, OPTIONS |
||||
set-cookie: ahSession=3d594be0a8f63b6e5aa0683d86c33f0014462fff;path=/;expires=Thu, 01 Jul 2021 07:45:26 GMT;httpOnly=true; |
||||
|
||||
{"data":{"createdOrUpdated":["835224016581-dara","165868194223-zmqf","215230952334-yyno"],"removed":["319489049949-yzpe","440865870518-kcka","057564926026-ambc","502105041571-gtmz","956950809461-mkyx","505212346932-dgdj","304166137220-qegp","052993102595-yytg","008779699609-ettg","992865433390-jqcw","678174286034-dpza","473249269683-mxjj","r_20704386-oapoi","121412224073-roqx","067447662224-fhpb","103385129122-pypq","764328419582-bdhj","303605630412-cygb","891743863902-bkeb"]}} |
@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<dataset> |
||||
<pages> |
||||
<uid>1</uid> |
||||
<pid>0</pid> |
||||
<tstamp>1613400587</tstamp> |
||||
<crdate>1613400558</crdate> |
||||
<cruser_id>1</cruser_id> |
||||
<doktype>4</doktype> |
||||
<title>Rootpage</title> |
||||
<is_siteroot>1</is_siteroot> |
||||
</pages> |
||||
<pages> |
||||
<uid>10</uid> |
||||
<pid>1</pid> |
||||
<tstamp>1613400587</tstamp> |
||||
<crdate>1613400558</crdate> |
||||
<cruser_id>1</cruser_id> |
||||
<doktype>254</doktype> |
||||
<title>Storage folder</title> |
||||
</pages> |
||||
|
||||
<sys_language> |
||||
<uid>1</uid> |
||||
<pid>0</pid> |
||||
<title>English</title> |
||||
<flag>en-us-gb</flag> |
||||
<language_isocode>en</language_isocode> |
||||
</sys_language> |
||||
|
||||
<sys_language> |
||||
<uid>2</uid> |
||||
<pid>0</pid> |
||||
<title>French</title> |
||||
<flag>fr</flag> |
||||
<language_isocode>fr</language_isocode> |
||||
</sys_language> |
||||
|
||||
<tx_thuecat_import_configuration> |
||||
<uid>1</uid> |
||||
<pid>0</pid> |
||||
<tstamp>1613400587</tstamp> |
||||
<crdate>1613400558</crdate> |
||||
<cruser_id>1</cruser_id> |
||||
<disable>0</disable> |
||||
<title>Sync Scope ID</title> |
||||
<type>syncScope</type> |
||||
<configuration><![CDATA[<?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="syncScopeId"> |
||||
<value index="vDEF">dd4615dc-58a6-4648-a7ce-4950293a06db</value> |
||||
</field> |
||||
</language> |
||||
</sheet> |
||||
</data> |
||||
</T3FlexForms>]]></configuration> |
||||
</tx_thuecat_import_configuration> |
||||
|
||||
<tx_thuecat_town> |
||||
<uid>1</uid> |
||||
<pid>10</pid> |
||||
<tstamp>1613401129</tstamp> |
||||
<crdate>1613401129</crdate> |
||||
<cruser_id>1</cruser_id> |
||||
<disable>0</disable> |
||||
<remote_id>https://thuecat.org/resources/043064193523-jcyt</remote_id> |
||||
<managed_by>1</managed_by> |
||||
<tourist_information>0</tourist_information> |
||||
<title>Erfurt</title> |
||||
</tx_thuecat_town> |
||||
|
||||
<tx_thuecat_organisation> |
||||
<uid>1</uid> |
||||
<pid>10</pid> |
||||
<tstamp>1613400969</tstamp> |
||||
<crdate>1613400969</crdate> |
||||
<cruser_id>1</cruser_id> |
||||
<disable>0</disable> |
||||
<remote_id>https://thuecat.org/resources/018132452787-ngbe</remote_id> |
||||
<title>Erfurt Tourismus und Marketing GmbH</title> |
||||
<description>Die Erfurt Tourismus & Marketing GmbH (ETMG) wurde 1997 als offizielle Organisation zur Tourismusförderung in der Landeshauptstadt Erfurt gegründet und nahm am 01.0 1.1998 die Geschäftstätigkeit auf.</description> |
||||
<manages_towns>0</manages_towns> |
||||
<manages_tourist_information>0</manages_tourist_information> |
||||
</tx_thuecat_organisation> |
||||
</dataset> |
Can't render this file because it has a wrong number of fields in line 2.
|
@ -0,0 +1,333 @@
|
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
namespace WerkraumMedia\ThueCat\Tests\Unit\Domain\Model\Backend; |
||||
|
||||
/* |
||||
* Copyright (C) 2021 Daniel Siepmann <coding@daniel-siepmann.de> |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License |
||||
* as published by the Free Software Foundation; either version 2 |
||||
* of the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
||||
* 02110-1301, USA. |
||||
*/ |
||||
|
||||
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase as TestCase; |
||||
use WerkraumMedia\ThueCat\Domain\Model\Backend\ImportConfiguration; |
||||
|
||||
/** |
||||
* @covers \WerkraumMedia\ThueCat\Domain\Model\Backend\ImportConfiguration |
||||
*/ |
||||
class ImportConfigurationTest extends TestCase |
||||
{ |
||||
/** |
||||
* @test |
||||
*/ |
||||
public function canBeCreated(): void |
||||
{ |
||||
$subject = new ImportConfiguration(); |
||||
|
||||
self::assertInstanceOf(ImportConfiguration::class, $subject); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsTitle(): void |
||||
{ |
||||
$subject = new ImportConfiguration(); |
||||
$subject->_setProperty('title', 'Example Title'); |
||||
|
||||
self::assertSame('Example Title', $subject->getTitle()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsType(): void |
||||
{ |
||||
$subject = new ImportConfiguration(); |
||||
$subject->_setProperty('type', 'static'); |
||||
|
||||
self::assertSame('static', $subject->getType()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsTableName(): void |
||||
{ |
||||
$subject = new ImportConfiguration(); |
||||
|
||||
self::assertSame('tx_thuecat_import_configuration', $subject->getTableName()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsLastChanged(): void |
||||
{ |
||||
$lastChanged = new \DateTimeImmutable(); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('tstamp', $lastChanged); |
||||
|
||||
self::assertSame($lastChanged, $subject->getLastChanged()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsStoragePidWhenSet(): void |
||||
{ |
||||
$flexForm = implode(PHP_EOL, [ |
||||
'<?xml version="1.0" encoding="utf-8" standalone="yes" ?>',
|
||||
'<T3FlexForms>', |
||||
'<data>', |
||||
'<sheet index="sDEF">', |
||||
'<language index="lDEF">', |
||||
'<field index="storagePid">', |
||||
'<value index="vDEF">20</value>', |
||||
'</field>', |
||||
'</language>', |
||||
'</sheet>', |
||||
'</data>', |
||||
'</T3FlexForms>', |
||||
]); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame(20, $subject->getStoragePid()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsZeroAsStoragePidWhenNoConfigurationExists(): void |
||||
{ |
||||
$flexForm = ''; |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame(0, $subject->getStoragePid()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsZeroAsStoragePidWhenNegativePidIsConfigured(): void |
||||
{ |
||||
$flexForm = implode(PHP_EOL, [ |
||||
'<?xml version="1.0" encoding="utf-8" standalone="yes" ?>',
|
||||
'<T3FlexForms>', |
||||
'<data>', |
||||
'<sheet index="sDEF">', |
||||
'<language index="lDEF">', |
||||
'<field index="storagePid">', |
||||
'<value index="vDEF">-1</value>', |
||||
'</field>', |
||||
'</language>', |
||||
'</sheet>', |
||||
'</data>', |
||||
'</T3FlexForms>', |
||||
]); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame(0, $subject->getStoragePid()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsZeroAsStoragePidWhenNoneNumericPidIsConfigured(): void |
||||
{ |
||||
$flexForm = implode(PHP_EOL, [ |
||||
'<?xml version="1.0" encoding="utf-8" standalone="yes" ?>',
|
||||
'<T3FlexForms>', |
||||
'<data>', |
||||
'<sheet index="sDEF">', |
||||
'<language index="lDEF">', |
||||
'<field index="storagePid">', |
||||
'<value index="vDEF">abc</value>', |
||||
'</field>', |
||||
'</language>', |
||||
'</sheet>', |
||||
'</data>', |
||||
'</T3FlexForms>', |
||||
]); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame(0, $subject->getStoragePid()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsUrlsWhenSet(): void |
||||
{ |
||||
$flexForm = implode(PHP_EOL, [ |
||||
'<?xml version="1.0" encoding="utf-8" standalone="yes" ?>',
|
||||
'<T3FlexForms>', |
||||
'<data>', |
||||
'<sheet index="sDEF">', |
||||
'<language index="lDEF">', |
||||
'<field index="urls">', |
||||
'<el index="el">', |
||||
'<field index="6098e0b6d3fff074555176">', |
||||
'<value index="url">', |
||||
'<el>', |
||||
'<field index="url">', |
||||
'<value index="vDEF">https://thuecat.org/resources/942302009360-jopp</value>', |
||||
'</field>', |
||||
'</el>', |
||||
'</value>', |
||||
'<value index="_TOGGLE">0</value>', |
||||
'</field>', |
||||
'</el>', |
||||
'</field>', |
||||
'</language>', |
||||
'</sheet>', |
||||
'</data>', |
||||
'</T3FlexForms>', |
||||
]); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame([ |
||||
'https://thuecat.org/resources/942302009360-jopp', |
||||
], $subject->getUrls()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsEmptyArrayAsUrlsWhenNoConfigurationExists(): void |
||||
{ |
||||
$flexForm = ''; |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame([], $subject->getUrls()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsEmptyArrayAsUrlsWhenNoUrlsAreConfigured(): void |
||||
{ |
||||
$flexForm = implode(PHP_EOL, [ |
||||
'<?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>', |
||||
'</language>', |
||||
'</sheet>', |
||||
'</data>', |
||||
'</T3FlexForms>', |
||||
]); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame([], $subject->getUrls()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsSyncScopeIdWhenSet(): void |
||||
{ |
||||
$flexForm = implode(PHP_EOL, [ |
||||
'<?xml version="1.0" encoding="utf-8" standalone="yes" ?>',
|
||||
'<T3FlexForms>', |
||||
'<data>', |
||||
'<sheet index="sDEF">', |
||||
'<language index="lDEF">', |
||||
'<field index="syncScopeId">', |
||||
'<value index="vDEF">dd4639dc-58a7-4648-a6ce-4950293a06db</value>', |
||||
'</field>', |
||||
'</language>', |
||||
'</sheet>', |
||||
'</data>', |
||||
'</T3FlexForms>', |
||||
]); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame('dd4639dc-58a7-4648-a6ce-4950293a06db', $subject->getSyncScopeId()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsEmptyStringAsSyncScopeIdWhenNoConfigurationExists(): void |
||||
{ |
||||
$flexForm = ''; |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame('', $subject->getSyncScopeId()); |
||||
} |
||||
|
||||
/** |
||||
* @test |
||||
*/ |
||||
public function returnsEmptyStringAsSyncScopeIdWhenNoSyncScopeIdAreConfigured(): void |
||||
{ |
||||
$flexForm = implode(PHP_EOL, [ |
||||
'<?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>', |
||||
'</language>', |
||||
'</sheet>', |
||||
'</data>', |
||||
'</T3FlexForms>', |
||||
]); |
||||
|
||||
$subject = new ImportConfiguration(); |
||||
|
||||
$subject->_setProperty('configuration', $flexForm); |
||||
|
||||
self::assertSame('', $subject->getSyncScopeId()); |
||||
} |
||||
} |
Loading…
Reference in new issue