‪TYPO3CMS  11.5
PersistentObjectConverterTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
26 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
27 
28 class ‪PersistentObjectConverterTest extends FunctionalTestCase
29 {
30  // @todo: Switch to a simple test extension that contains a test model, instead.
31  protected ‪$coreExtensionsToLoad = ['beuser'];
32 
33  protected function ‪setUp(): void
34  {
35  parent::setUp();
36  $this->importCSVDataSet(__DIR__ . '/../Fixtures/DatabaseImports/be_users.csv');
37  }
38 
43  {
44  $propertyMapper = $this->get(PropertyMapper::class);
45 
46  self::assertNull($propertyMapper->convert(0, BackendUser::class));
47  self::assertNull($propertyMapper->convert('', BackendUser::class));
48  }
49 
54  {
55  $this->expectException(Exception::class);
56  $this->expectExceptionCode(1297759968);
57  $this->expectExceptionMessage('Exception while property mapping at property path "": The identity property "foo" is no UID.');
58 
59  $this->get(PropertyMapper::class)->convert('foo', BackendUser::class);
60  }
61 
66  {
67  $this->expectException(TargetNotFoundException::class);
68  $this->expectExceptionCode(1297933823);
69  $this->expectExceptionMessage('Object of type TYPO3\CMS\Beuser\Domain\Model\BackendUser with identity "2" not found.');
70 
71  $this->get(PropertyMapper::class)->convert(2, BackendUser::class);
72  }
73 
78  {
79  $propertyMapper = $this->get(PropertyMapper::class);
80 
81  $backendUser = $propertyMapper->convert(1, BackendUser::class);
82 
83  self::assertInstanceOf(BackendUser::class, $backendUser);
84  self::assertSame(1, $backendUser->getUid());
85  }
86 
91  {
92  $propertyMapper = $this->get(PropertyMapper::class);
93 
94  $backendUser = $propertyMapper->convert('1', BackendUser::class);
95 
96  self::assertInstanceOf(BackendUser::class, $backendUser);
97  self::assertSame(1, $backendUser->getUid());
98  }
99 
104  {
105  $propertyMapper = $this->get(PropertyMapper::class);
106 
107  $backendUser = $propertyMapper->convert([], BackendUser::class);
108 
109  self::assertInstanceOf(BackendUser::class, $backendUser);
110  self::assertNull($backendUser->getUid());
111  }
112 
117  {
118  $propertyMapper = $this->get(PropertyMapper::class);
119 
120  $backendUser = $propertyMapper->convert(['__identity' => 1], BackendUser::class);
121 
122  self::assertInstanceOf(BackendUser::class, $backendUser);
123  self::assertSame(1, $backendUser->getUid());
124  }
125 
130  {
131  $this->expectException(Exception::class);
132  $this->expectExceptionCode(1297759968);
133  $this->expectExceptionMessage('Exception while property mapping at property path "": Creation of objects not allowed. To enable this, you need to set the PropertyMappingConfiguration Value "CONFIGURATION_CREATION_ALLOWED" to TRUE');
134 
135  $propertyMapperConfiguration = new ‪PropertyMappingConfiguration();
136  $propertyMapperConfiguration->setTypeConverterOption(
137  PersistentObjectConverter::class,
139  false
140  );
141 
142  $this->get(PropertyMapper::class)->convert(
143  [],
144  BackendUser::class,
145  $propertyMapperConfiguration
146  );
147  }
148 
153  {
154  $propertyMapper = $this->get(PropertyMapper::class);
155 
156  $backendUser = $propertyMapper->convert(['userName' => 'johndoe'], BackendUser::class);
157 
158  self::assertInstanceOf(BackendUser::class, $backendUser);
159  self::assertNull($backendUser->getUid());
160  self::assertSame('johndoe', $backendUser->getUserName());
161  }
162 
167  {
168  $this->expectException(Exception::class);
169  $this->expectExceptionCode(1297759968);
170  $this->expectExceptionMessage('Exception while property mapping at property path "": Property "nonExistant" was not found in target object of type "TYPO3\CMS\Beuser\Domain\Model\BackendUser".');
171 
172  $this->get(PropertyMapper::class)->convert(['nonExistant' => 'johndoe'], BackendUser::class);
173  }
174 
179  {
180  $this->expectException(Exception::class);
181  $this->expectExceptionCode(1297759968);
182  $this->expectExceptionMessage('Exception while property mapping at property path "": Property "uid" having a value of type "integer" could not be set in target object of type "TYPO3\CMS\Beuser\Domain\Model\BackendUser"');
183 
184  $this->get(PropertyMapper::class)->convert(['uid' => 7], BackendUser::class);
185  }
186 }
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterFetchesObjectFromPersistenceIfSourceIsAnArrayWithIdentityKey
‪converterFetchesObjectFromPersistenceIfSourceIsAnArrayWithIdentityKey()
Definition: PersistentObjectConverterTest.php:116
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest
Definition: PersistentObjectConverterTest.php:29
‪TYPO3\CMS\Extbase\Property\Exception
Definition: DuplicateObjectException.php:18
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterRespectsAndSetsProperties
‪converterRespectsAndSetsProperties()
Definition: PersistentObjectConverterTest.php:152
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterBuildsEmptyObjectIfSourceIsAnEmptyArray
‪converterBuildsEmptyObjectIfSourceIsAnEmptyArray()
Definition: PersistentObjectConverterTest.php:103
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterReturnsNullWithEmptyStringsOrIntegers
‪converterReturnsNullWithEmptyStringsOrIntegers()
Definition: PersistentObjectConverterTest.php:42
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\getTypeOfChildPropertyThrowsInvalidTargetExceptionIfPropertyIsNonExistant
‪getTypeOfChildPropertyThrowsInvalidTargetExceptionIfPropertyIsNonExistant()
Definition: PersistentObjectConverterTest.php:166
‪TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter\CONFIGURATION_CREATION_ALLOWED
‪const CONFIGURATION_CREATION_ALLOWED
Definition: PersistentObjectConverter.php:52
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\fetchObjectFromPersistenceThrowsInvalidSourceExceptionIfSourceIANonNumericString
‪fetchObjectFromPersistenceThrowsInvalidSourceExceptionIfSourceIANonNumericString()
Definition: PersistentObjectConverterTest.php:53
‪TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter
Definition: PersistentObjectConverter.php:43
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\fetchObjectFromPersistenceThrowsTargetNotFoundExceptionIfObjectIsNotToBeFoundInThePersistence
‪fetchObjectFromPersistenceThrowsTargetNotFoundExceptionIfObjectIsNotToBeFoundInThePersistence()
Definition: PersistentObjectConverterTest.php:65
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter
Definition: ArrayConverterTest.php:18
‪TYPO3\CMS\Extbase\Property\PropertyMappingConfiguration
Definition: PropertyMappingConfiguration.php:22
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\$coreExtensionsToLoad
‪$coreExtensionsToLoad
Definition: PersistentObjectConverterTest.php:31
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\handleArrayDataThrowsInvalidPropertyMappingConfigurationExceptionIfCreationOfObjectsIsNotAllowed
‪handleArrayDataThrowsInvalidPropertyMappingConfigurationExceptionIfCreationOfObjectsIsNotAllowed()
Definition: PersistentObjectConverterTest.php:129
‪TYPO3\CMS\Extbase\Property\PropertyMapper
Definition: PropertyMapper.php:39
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\setUp
‪setUp()
Definition: PersistentObjectConverterTest.php:33
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterFetchesObjectFromPersistenceIfSourceIsANumericString
‪converterFetchesObjectFromPersistenceIfSourceIsANumericString()
Definition: PersistentObjectConverterTest.php:90
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\convertFromThrowsInvalidTargetExceptionIfSourceContainsANonSettableProperty
‪convertFromThrowsInvalidTargetExceptionIfSourceContainsANonSettableProperty()
Definition: PersistentObjectConverterTest.php:178
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterFetchesObjectFromPersistenceIfSourceIsAnInteger
‪converterFetchesObjectFromPersistenceIfSourceIsAnInteger()
Definition: PersistentObjectConverterTest.php:77
‪TYPO3\CMS\Beuser\Domain\Model\BackendUser
Definition: BackendUser.php:30
‪TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException
Definition: TargetNotFoundException.php:25