‪TYPO3CMS  11.5
InTest.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 
24 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
25 
26 class ‪InTest extends FunctionalTestCase
27 {
31  protected ‪$blogRepository;
32 
36  protected ‪$postRepository;
37 
38  protected ‪$testExtensionsToLoad = ['typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example'];
39 
43  protected function ‪setUp(): void
44  {
45  parent::setUp();
46 
47  $this->importDataSet('PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/pages.xml');
48  $this->importCSVDataSet(__DIR__ . '/../Persistence/Fixtures/blogs.csv');
49  $this->importCSVDataSet(__DIR__ . '/../Persistence/Fixtures/posts.csv');
50  $this->importCSVDataSet(__DIR__ . '/../Persistence/Fixtures/tags.csv');
51  $this->importCSVDataSet(__DIR__ . '/../Persistence/Fixtures/post-tag-mm.csv');
52 
53  $this->blogRepository = $this->get(BlogRepository::class);
54  $this->postRepository = $this->get(PostRepository::class);
55  }
56 
60  public function ‪inConditionWorksWithArrayOfObjects(): void
61  {
62  $blog1 = $this->blogRepository->findByUid(1);
63  $blog2 = $this->blogRepository->findByUid(2);
64 
65  $inQuery = $this->postRepository->createQuery();
66 
67  $inQuery->matching(
68  $inQuery->in('blog', [$blog1, $blog2])
69  );
70 
71  self::assertSame(11, $inQuery->count());
72  }
73 
78  {
79  $blog1 = $this->blogRepository->findByUid(1);
80  $blog2 = $this->blogRepository->findByUid(2);
81 
82  $inQuery = $this->postRepository->createQuery();
83 
84  $inQuery->matching(
85  $inQuery->in('blog', [$blog1, $blog2])
86  );
87 
88  self::assertSame(11, $inQuery->count());
89 
90  $newInQuery = $this->postRepository->createQuery();
91 
92  $newInQuery->matching(
93  $newInQuery->in('blog', [$blog1])
94  );
95 
96  self::assertSame(10, $newInQuery->count());
97  }
98 
102  public function ‪inConditionWorksWithObjectStorage(): void
103  {
104  $blog1 = $this->blogRepository->findByUid(1);
105  $blog2 = $this->blogRepository->findByUid(2);
106 
107  $objectStorage = new ObjectStorage();
108  $objectStorage->attach($blog1);
109  $objectStorage->attach($blog2);
110 
111  $inQuery = $this->postRepository->createQuery();
112 
113  $inQuery->matching(
114  $inQuery->in('blog', $objectStorage)
115  );
116 
117  self::assertSame(11, $inQuery->count());
118  }
119 
124  {
125  $blog1 = $this->blogRepository->findByUid(1);
126  $blog2 = $this->blogRepository->findByUid(2);
127 
128  $objectStorage = new ObjectStorage();
129  $objectStorage->attach($blog1);
130  $objectStorage->attach($blog2);
131 
132  $inQuery = $this->postRepository->createQuery();
133 
134  $inQuery->matching(
135  $inQuery->in('blog', $objectStorage)
136  );
137 
138  self::assertSame(11, $inQuery->count());
139 
140  $newObjectStorage = new ObjectStorage();
141  $newObjectStorage->attach($blog1);
142 
143  $newInQuery = $this->postRepository->createQuery();
144 
145  $newInQuery->matching(
146  $newInQuery->in('blog', $newObjectStorage)
147  );
148 
149  self::assertSame(10, $newInQuery->count());
150  }
151 
155  public function ‪inConditionWorksWithQueryResult(): void
156  {
157  $query = $this->blogRepository->createQuery();
158  $query->matching($query->in('uid', [1, 2]));
159  $queryResult = $query->execute();
160 
161  $inQuery = $this->postRepository->createQuery();
162 
163  $inQuery->matching(
164  $inQuery->in('blog', $queryResult)
165  );
166 
167  self::assertSame(11, $inQuery->count());
168  }
169 
173  public function ‪inConditionWorksWithQueryResultOnSecondCall(): void
174  {
175  $query = $this->blogRepository->createQuery();
176  $query->matching($query->in('uid', [1, 2]));
177  $queryResult = $query->execute();
178 
179  $inQuery = $this->postRepository->createQuery();
180 
181  $inQuery->matching(
182  $inQuery->in('blog', $queryResult)
183  );
184 
185  self::assertSame(11, $inQuery->count());
186 
187  $newInQuery = $this->postRepository->createQuery();
188 
189  $newInQuery->matching(
190  $newInQuery->in('blog', $queryResult)
191  );
192 
193  self::assertSame(11, $newInQuery->count());
194  }
195 
199  public function ‪inConditionWorksWithLazyObjectStorage(): void
200  {
201  $blog = $this->blogRepository->findByUid(1);
202 
203  self::assertInstanceOf(
204  LazyObjectStorage::class,
205  $blog->getPosts()
206  );
207 
208  $inQuery = $this->postRepository->createQuery();
209 
210  $inQuery->matching(
211  $inQuery->in('uid', $blog->getPosts())
212  );
213 
214  self::assertSame(10, $inQuery->count());
215  }
216 
221  {
222  $blog = $this->blogRepository->findByUid(1);
223 
224  self::assertInstanceOf(
225  LazyObjectStorage::class,
226  $blog->getPosts()
227  );
228 
229  $inQuery = $this->postRepository->createQuery();
230 
231  $inQuery->matching(
232  $inQuery->in('uid', $blog->getPosts())
233  );
234 
235  self::assertSame(10, $inQuery->count());
236 
237  $newInQuery = $this->postRepository->createQuery();
238 
239  $newInQuery->matching(
240  $newInQuery->in('uid', $blog->getPosts())
241  );
242 
243  self::assertSame(10, $newInQuery->count());
244  }
245 }
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithQueryResult
‪inConditionWorksWithQueryResult()
Definition: InTest.php:153
‪ExtbaseTeam\BlogExample\Domain\Repository\BlogRepository
Definition: BlogRepository.php:27
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithObjectStorage
‪inConditionWorksWithObjectStorage()
Definition: InTest.php:100
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithArrayOfObjects
‪inConditionWorksWithArrayOfObjects()
Definition: InTest.php:58
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\setUp
‪setUp()
Definition: InTest.php:41
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithLazyObjectStorage
‪inConditionWorksWithLazyObjectStorage()
Definition: InTest.php:197
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest
Definition: InTest.php:27
‪TYPO3\CMS\Extbase\Persistence\ObjectStorage
Definition: ObjectStorage.php:32
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\$blogRepository
‪BlogRepository $blogRepository
Definition: InTest.php:30
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithArrayOfObjectsOnSecondCall
‪inConditionWorksWithArrayOfObjectsOnSecondCall()
Definition: InTest.php:75
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\$postRepository
‪PostRepository $postRepository
Definition: InTest.php:34
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence
Definition: AddTest.php:18
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithLazyObjectStorageOnSecondCall
‪inConditionWorksWithLazyObjectStorageOnSecondCall()
Definition: InTest.php:218
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\$testExtensionsToLoad
‪$testExtensionsToLoad
Definition: InTest.php:36
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithQueryResultOnSecondCall
‪inConditionWorksWithQueryResultOnSecondCall()
Definition: InTest.php:171
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithObjectStorageOnSecondCall
‪inConditionWorksWithObjectStorageOnSecondCall()
Definition: InTest.php:121
‪ExtbaseTeam\BlogExample\Domain\Repository\PostRepository
Definition: PostRepository.php:32
‪TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage
Definition: LazyObjectStorage.php:32