‪TYPO3CMS  ‪main
IsDirtyTest.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;
24 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
28 
29 final class ‪IsDirtyTest extends FunctionalTestCase
30 {
31  protected array ‪$testExtensionsToLoad = [
32  'typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example',
33  ];
34 
35  protected function ‪setUp(): void
36  {
37  parent::setUp();
38  $this->importCSVDataSet(__DIR__ . '/Fixtures/IsDirtyTestImport.csv');
39  $request = (new ‪ServerRequest())->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
40  ‪$GLOBALS['TYPO3_REQUEST'] = $request;
41  }
42 
43  #[Test]
44  public function ‪objectFetchedFromDbIsNotDirty(): void
45  {
46  $blog = $this->get(BlogRepository::class)->findByUid(3);
47  self::assertFalse($blog->_isDirty());
48  }
49 
50  #[Test]
52  {
53  $blog = $this->get(BlogRepository::class)->findByUid(3);
54  self::assertInstanceOf(LazyLoadingProxy::class, $blog->getAdministrator()); // precondition
55  $admin = $this->get(AdministratorRepository::class)->findByUid(3);
56  self::assertInstanceOf(Administrator::class, $admin); // precondition
57  $blog->setAdministrator($admin);
58  self::assertFalse($blog->_isDirty());
59  }
60 
61  #[Test]
63  {
64  $blog = $this->get(BlogRepository::class)->findByUid(3);
65  self::assertInstanceOf(LazyLoadingProxy::class, $blog->getAdministrator()); //precondition
66  $blog->setAdministrator(new ‪Administrator());
67  self::assertTrue($blog->_isDirty());
68  }
69 
70  #[Test]
72  {
73  $blog = $this->get(BlogRepository::class)->findByUid(3);
74  $lazyLoadingProxy = $blog->getAdministrator();
75  self::assertInstanceOf(LazyLoadingProxy::class, $lazyLoadingProxy); //precondition
76  $admin = $this->get(AdministratorRepository::class)->findByUid(3);
77  self::assertInstanceOf(Administrator::class, $admin); // precondition
78  $blog->setAdministrator($admin);
79  $blog->_memorizeCleanState();
80  $blog->_setProperty('administrator', $lazyLoadingProxy);
81  self::assertFalse($blog->_isDirty());
82  }
83 
84  #[Test]
86  {
87  $blogRepository = $this->get(BlogRepository::class);
88  $blogOne = $blogRepository->findByUid(3);
89  self::assertInstanceOf(LazyLoadingProxy::class, $blogOne->getAdministrator()); //precondition
90  $blogTwo = $blogRepository->findByUid(2);
91  self::assertInstanceOf(LazyLoadingProxy::class, $blogTwo->getAdministrator()); //precondition
92  $blogOne->_setProperty('administrator', $blogTwo->getAdministrator());
93  self::assertTrue($blogOne->_isDirty());
94  $blogRepository->update($blogOne);
95  $updatedBlogOne = $blogRepository->findByUid(3);
96  self::assertSame($updatedBlogOne->getAdministrator()->getUid(), $blogTwo->getAdministrator()->getUid());
97  }
98 }
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest\realInstanceReplacedByLazyLoadingProxyIsNotDirty
‪realInstanceReplacedByLazyLoadingProxyIsNotDirty()
Definition: IsDirtyTest.php:71
‪TYPO3Tests\BlogExample\Domain\Model\Administrator
Definition: Administrator.php:28
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder
Definition: SystemEnvironmentBuilder.php:41
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest\lazyLoadingProxyByWrongLazyLoadingProxyIsDirtyAndUpdated
‪lazyLoadingProxyByWrongLazyLoadingProxyIsDirtyAndUpdated()
Definition: IsDirtyTest.php:85
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_BE
‪const REQUESTTYPE_BE
Definition: SystemEnvironmentBuilder.php:45
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest\lazyLoadingProxyReplacedByRealInstanceIsNotDirty
‪lazyLoadingProxyReplacedByRealInstanceIsNotDirty()
Definition: IsDirtyTest.php:51
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest
Definition: IsDirtyTest.php:30
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest\setUp
‪setUp()
Definition: IsDirtyTest.php:35
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest\lazyLoadingProxyReplacedByWrongInstanceIsDirty
‪lazyLoadingProxyReplacedByWrongInstanceIsDirty()
Definition: IsDirtyTest.php:62
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence
Definition: AddTest.php:18
‪TYPO3Tests\BlogExample\Domain\Repository\AdministratorRepository
Definition: AdministratorRepository.php:27
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest\objectFetchedFromDbIsNotDirty
‪objectFetchedFromDbIsNotDirty()
Definition: IsDirtyTest.php:44
‪TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy
Definition: LazyLoadingProxy.php:30
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3Tests\BlogExample\Domain\Repository\BlogRepository
Definition: BlogRepository.php:29
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\IsDirtyTest\$testExtensionsToLoad
‪array $testExtensionsToLoad
Definition: IsDirtyTest.php:31