‪TYPO3CMS  ‪main
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 
20 use PHPUnit\Framework\Attributes\Test;
29 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
30 
31 final class ‪PersistentObjectConverterTest extends FunctionalTestCase
32 {
33  // @todo: Switch to a simple test extension that contains a test model, instead.
34  protected array ‪$coreExtensionsToLoad = ['beuser'];
35 
36  protected function ‪setUp(): void
37  {
38  parent::setUp();
39  $this->importCSVDataSet(__DIR__ . '/../Fixtures/DatabaseImports/be_users.csv');
40 
41  $request = (new ‪ServerRequest())->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
42  ‪$GLOBALS['TYPO3_REQUEST'] = $request;
43  }
44 
45  #[Test]
47  {
48  $propertyMapper = $this->get(PropertyMapper::class);
49 
50  self::assertNull($propertyMapper->convert(0, BackendUser::class));
51  self::assertNull($propertyMapper->convert('', BackendUser::class));
52  }
53 
54  #[Test]
56  {
57  $this->expectException(Exception::class);
58  $this->expectExceptionCode(1297759968);
59  $this->expectExceptionMessage('Exception while property mapping at property path "": The identity property "foo" is no UID.');
60 
61  $this->get(PropertyMapper::class)->convert('foo', BackendUser::class);
62  }
63 
64  #[Test]
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 
74  #[Test]
76  {
77  $propertyMapper = $this->get(PropertyMapper::class);
78 
79  $backendUser = $propertyMapper->convert(1, BackendUser::class);
80 
81  self::assertInstanceOf(BackendUser::class, $backendUser);
82  self::assertSame(1, $backendUser->getUid());
83  }
84 
85  #[Test]
87  {
88  $propertyMapper = $this->get(PropertyMapper::class);
89 
90  $backendUser = $propertyMapper->convert('1', BackendUser::class);
91 
92  self::assertInstanceOf(BackendUser::class, $backendUser);
93  self::assertSame(1, $backendUser->getUid());
94  }
95 
96  #[Test]
98  {
99  $propertyMapper = $this->get(PropertyMapper::class);
100 
101  $backendUser = $propertyMapper->convert([], BackendUser::class);
102 
103  self::assertInstanceOf(BackendUser::class, $backendUser);
104  self::assertNull($backendUser->getUid());
105  }
106 
107  #[Test]
109  {
110  $propertyMapper = $this->get(PropertyMapper::class);
111 
112  $backendUser = $propertyMapper->convert(['__identity' => 1], BackendUser::class);
113 
114  self::assertInstanceOf(BackendUser::class, $backendUser);
115  self::assertSame(1, $backendUser->getUid());
116  }
117 
118  #[Test]
120  {
121  $this->expectException(Exception::class);
122  $this->expectExceptionCode(1297759968);
123  $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');
124 
125  $propertyMapperConfiguration = new ‪PropertyMappingConfiguration();
126  $propertyMapperConfiguration->setTypeConverterOption(
127  PersistentObjectConverter::class,
129  false
130  );
131 
132  $this->get(PropertyMapper::class)->convert(
133  [],
134  BackendUser::class,
135  $propertyMapperConfiguration
136  );
137  }
138 
139  #[Test]
141  {
142  $propertyMapper = $this->get(PropertyMapper::class);
143 
144  $backendUser = $propertyMapper->convert(['userName' => 'johndoe'], BackendUser::class);
145 
146  self::assertInstanceOf(BackendUser::class, $backendUser);
147  self::assertNull($backendUser->getUid());
148  self::assertSame('johndoe', $backendUser->getUserName());
149  }
150 
151  #[Test]
153  {
154  $this->expectException(Exception::class);
155  $this->expectExceptionCode(1297759968);
156  $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".');
157 
158  $this->get(PropertyMapper::class)->convert(['nonExistant' => 'johndoe'], BackendUser::class);
159  }
160 
161  #[Test]
163  {
164  $this->expectException(Exception::class);
165  $this->expectExceptionCode(1297759968);
166  $this->expectExceptionMessage('Exception while property mapping at property path "": Property "uid" having a value of type "int" could not be set in target object of type "TYPO3\CMS\Beuser\Domain\Model\BackendUser"');
167 
168  $this->get(PropertyMapper::class)->convert(['uid' => 7], BackendUser::class);
169  }
170 }
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterFetchesObjectFromPersistenceIfSourceIsAnArrayWithIdentityKey
‪converterFetchesObjectFromPersistenceIfSourceIsAnArrayWithIdentityKey()
Definition: PersistentObjectConverterTest.php:108
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest
Definition: PersistentObjectConverterTest.php:32
‪TYPO3\CMS\Extbase\Property\Exception
Definition: DuplicateObjectException.php:18
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterRespectsAndSetsProperties
‪converterRespectsAndSetsProperties()
Definition: PersistentObjectConverterTest.php:140
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterBuildsEmptyObjectIfSourceIsAnEmptyArray
‪converterBuildsEmptyObjectIfSourceIsAnEmptyArray()
Definition: PersistentObjectConverterTest.php:97
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder
Definition: SystemEnvironmentBuilder.php:41
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_BE
‪const REQUESTTYPE_BE
Definition: SystemEnvironmentBuilder.php:45
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterReturnsNullWithEmptyStringsOrIntegers
‪converterReturnsNullWithEmptyStringsOrIntegers()
Definition: PersistentObjectConverterTest.php:46
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\getTypeOfChildPropertyThrowsInvalidTargetExceptionIfPropertyIsNonExistant
‪getTypeOfChildPropertyThrowsInvalidTargetExceptionIfPropertyIsNonExistant()
Definition: PersistentObjectConverterTest.php:152
‪TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter\CONFIGURATION_CREATION_ALLOWED
‪const CONFIGURATION_CREATION_ALLOWED
Definition: PersistentObjectConverter.php:53
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\fetchObjectFromPersistenceThrowsInvalidSourceExceptionIfSourceIANonNumericString
‪fetchObjectFromPersistenceThrowsInvalidSourceExceptionIfSourceIANonNumericString()
Definition: PersistentObjectConverterTest.php:55
‪TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter
Definition: PersistentObjectConverter.php:44
‪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\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\handleArrayDataThrowsInvalidPropertyMappingConfigurationExceptionIfCreationOfObjectsIsNotAllowed
‪handleArrayDataThrowsInvalidPropertyMappingConfigurationExceptionIfCreationOfObjectsIsNotAllowed()
Definition: PersistentObjectConverterTest.php:119
‪TYPO3\CMS\Extbase\Property\PropertyMapper
Definition: PropertyMapper.php:30
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\setUp
‪setUp()
Definition: PersistentObjectConverterTest.php:36
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterFetchesObjectFromPersistenceIfSourceIsANumericString
‪converterFetchesObjectFromPersistenceIfSourceIsANumericString()
Definition: PersistentObjectConverterTest.php:86
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\convertFromThrowsInvalidTargetExceptionIfSourceContainsANonSettableProperty
‪convertFromThrowsInvalidTargetExceptionIfSourceContainsANonSettableProperty()
Definition: PersistentObjectConverterTest.php:162
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\converterFetchesObjectFromPersistenceIfSourceIsAnInteger
‪converterFetchesObjectFromPersistenceIfSourceIsAnInteger()
Definition: PersistentObjectConverterTest.php:75
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Beuser\Domain\Model\BackendUser
Definition: BackendUser.php:32
‪TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException
Definition: TargetNotFoundException.php:25
‪TYPO3\CMS\Extbase\Tests\Functional\Property\TypeConverter\PersistentObjectConverterTest\$coreExtensionsToLoad
‪array $coreExtensionsToLoad
Definition: PersistentObjectConverterTest.php:34