‪TYPO3CMS  11.5
AddTest.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 ‪AddTest extends FunctionalTestCase
29 {
33  protected ‪$persistentManager;
34 
35  protected ‪$testExtensionsToLoad = ['typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example'];
36 
40  protected ‪$blogRepository;
41 
45  protected function ‪setUp(): void
46  {
47  parent::setUp();
48 
49  $this->persistentManager = $this->get(PersistenceManager::class);
50  $this->blogRepository = $this->get(BlogRepository::class);
51  ‪$GLOBALS['BE_USER'] = new ‪BackendUserAuthentication();
52  }
53 
57  public function ‪addSimpleObjectTest(): void
58  {
59  $newBlogTitle = 'aDi1oogh';
60  $newBlog = new ‪Blog();
61  $newBlog->setTitle($newBlogTitle);
62 
63  $this->blogRepository->add($newBlog);
64  $this->persistentManager->persistAll();
65 
66  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
67  $queryBuilder->getRestrictions()
68  ->removeAll();
69  $newBlogCount = $queryBuilder
70  ->count('*')
71  ->from('tx_blogexample_domain_model_blog')
72  ->where(
73  $queryBuilder->expr()->eq(
74  'title',
75  $queryBuilder->createNamedParameter($newBlogTitle, ‪Connection::PARAM_STR)
76  )
77  )
78  ->executeQuery()
79  ->fetchOne();
80  self::assertEquals(1, $newBlogCount);
81  }
82 
86  public function ‪addObjectSetsDefaultLanguageTest(): void
87  {
88  $newBlogTitle = 'aDi1oogh';
89  $newBlog = new Blog();
90  $newBlog->setTitle($newBlogTitle);
91 
92  $this->blogRepository->add($newBlog);
93  $this->persistentManager->persistAll();
94 
95  $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
96  $queryBuilder->getRestrictions()
97  ->removeAll();
98  $newBlogRecord = $queryBuilder
99  ->select('*')
100  ->from('tx_blogexample_domain_model_blog')
101  ->where(
102  $queryBuilder->expr()->eq(
103  'title',
104  $queryBuilder->createNamedParameter($newBlogTitle, ‪Connection::PARAM_STR)
105  )
106  )
107  ->executeQuery()
108  ->fetchAssociative();
109  self::assertEquals(0, $newBlogRecord['sys_language_uid']);
110  }
111 
115  public function ‪addObjectSetsDefinedLanguageTest(): void
116  {
117  $newBlogTitle = 'aDi1oogh';
118  $newBlog = new Blog();
119  $newBlog->setTitle($newBlogTitle);
120  $newBlog->_setProperty('_languageUid', -1);
121 
122  $this->blogRepository->add($newBlog);
123  $this->persistentManager->persistAll();
124 
125  $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
126  $queryBuilder->getRestrictions()
127  ->removeAll();
128  $newBlogRecord = $queryBuilder
129  ->select('*')
130  ->from('tx_blogexample_domain_model_blog')
131  ->where(
132  $queryBuilder->expr()->eq(
133  'title',
134  $queryBuilder->createNamedParameter($newBlogTitle, ‪Connection::PARAM_STR)
135  )
136  )
137  ->executeQuery()
138  ->fetchAssociative();
139  self::assertEquals(-1, $newBlogRecord['sys_language_uid']);
140  }
141 
145  public function ‪addObjectSetsNullAsNullForSimpleTypes(): void
146  {
147  $newBlogTitle = 'aDi1oogh';
148  $newBlog = new Blog();
149  $newBlog->setTitle($newBlogTitle);
150  $newBlog->setSubtitle('subtitle');
151 
152  $this->blogRepository->add($newBlog);
153  $this->persistentManager->persistAll();
154 
155  // make sure null can be set explicitly
156  $insertedBlog = $this->blogRepository->findByUid(1);
157  $insertedBlog->setSubtitle(null);
158  $this->blogRepository->update($insertedBlog);
159  $this->persistentManager->persistAll();
160 
161  $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
162  $queryBuilder->getRestrictions()
163  ->removeAll();
164  $newBlogRecord = $queryBuilder
165  ->select('*')
166  ->from('tx_blogexample_domain_model_blog')
167  ->where(
168  $queryBuilder->expr()->eq(
169  'subtitle',
170  $queryBuilder->createNamedParameter($newBlogTitle, ‪Connection::PARAM_STR)
171  )
172  )
173  ->executeQuery()
174  ->fetchAssociative();
175  self::assertNull($newBlogRecord['subtitle'] ?? null);
176  }
177 }
‪ExtbaseTeam\BlogExample\Domain\Repository\BlogRepository
Definition: BlogRepository.php:27
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\$blogRepository
‪BlogRepository $blogRepository
Definition: AddTest.php:38
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\addObjectSetsDefaultLanguageTest
‪addObjectSetsDefaultLanguageTest()
Definition: AddTest.php:84
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\$testExtensionsToLoad
‪$testExtensionsToLoad
Definition: AddTest.php:34
‪TYPO3\CMS\Core\Database\Connection\PARAM_STR
‪const PARAM_STR
Definition: Connection.php:54
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\setUp
‪setUp()
Definition: AddTest.php:43
‪TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager
Definition: PersistenceManager.php:28
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\addObjectSetsDefinedLanguageTest
‪addObjectSetsDefinedLanguageTest()
Definition: AddTest.php:113
‪ExtbaseTeam\BlogExample\Domain\Model\Blog
Definition: Blog.php:29
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence
Definition: AddTest.php:18
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\addSimpleObjectTest
‪addSimpleObjectTest()
Definition: AddTest.php:55
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\$persistentManager
‪PersistenceManager $persistentManager
Definition: AddTest.php:32
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:38
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest
Definition: AddTest.php:29
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\AddTest\addObjectSetsNullAsNullForSimpleTypes
‪addObjectSetsNullAsNullForSimpleTypes()
Definition: AddTest.php:143