‪TYPO3CMS  ‪main
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 
20 use PHPUnit\Framework\Attributes\Test;
25 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
28 
29 final class ‪InTest extends FunctionalTestCase
30 {
31  protected array ‪$testExtensionsToLoad = [
32  'typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example',
33  ];
34 
37 
38  protected function ‪setUp(): void
39  {
40  parent::setUp();
41  $this->importCSVDataSet(__DIR__ . '/Fixtures/InTestImport.csv');
42  $this->blogRepository = $this->get(BlogRepository::class);
43  $this->postRepository = $this->get(PostRepository::class);
44  $request = (new ‪ServerRequest())->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
45  ‪$GLOBALS['TYPO3_REQUEST'] = $request;
46  }
47 
48  #[Test]
49  public function ‪inConditionWorksWithArrayOfObjects(): void
50  {
51  $blog1 = $this->blogRepository->findByUid(1);
52  $blog2 = $this->blogRepository->findByUid(2);
53  $inQuery = $this->postRepository->createQuery();
54  $inQuery->matching(
55  $inQuery->in('blog', [$blog1, $blog2])
56  );
57  self::assertSame(11, $inQuery->count());
58  }
59 
60  #[Test]
62  {
63  $blog1 = $this->blogRepository->findByUid(1);
64  $blog2 = $this->blogRepository->findByUid(2);
65  $inQuery = $this->postRepository->createQuery();
66  $inQuery->matching(
67  $inQuery->in('blog', [$blog1, $blog2])
68  );
69  self::assertSame(11, $inQuery->count());
70  $newInQuery = $this->postRepository->createQuery();
71  $newInQuery->matching(
72  $newInQuery->in('blog', [$blog1])
73  );
74  self::assertSame(10, $newInQuery->count());
75  }
76 
77  #[Test]
78  public function ‪inConditionWorksWithObjectStorage(): void
79  {
80  $blog1 = $this->blogRepository->findByUid(1);
81  $blog2 = $this->blogRepository->findByUid(2);
82  $objectStorage = new ‪ObjectStorage();
83  $objectStorage->attach($blog1);
84  $objectStorage->attach($blog2);
85  $inQuery = $this->postRepository->createQuery();
86  $inQuery->matching(
87  $inQuery->in('blog', $objectStorage)
88  );
89  self::assertSame(11, $inQuery->count());
90  }
91 
92  #[Test]
94  {
95  $blog1 = $this->blogRepository->findByUid(1);
96  $blog2 = $this->blogRepository->findByUid(2);
97  $objectStorage = new ‪ObjectStorage();
98  $objectStorage->attach($blog1);
99  $objectStorage->attach($blog2);
100  $inQuery = $this->postRepository->createQuery();
101  $inQuery->matching(
102  $inQuery->in('blog', $objectStorage)
103  );
104  self::assertSame(11, $inQuery->count());
105  $newObjectStorage = new ‪ObjectStorage();
106  $newObjectStorage->attach($blog1);
107  $newInQuery = $this->postRepository->createQuery();
108  $newInQuery->matching(
109  $newInQuery->in('blog', $newObjectStorage)
110  );
111  self::assertSame(10, $newInQuery->count());
112  }
113 
114  #[Test]
115  public function ‪inConditionWorksWithQueryResult(): void
116  {
117  $query = $this->blogRepository->createQuery();
118  $query->matching($query->in('uid', [1, 2]));
119  $queryResult = $query->execute();
120  $inQuery = $this->postRepository->createQuery();
121  $inQuery->matching(
122  $inQuery->in('blog', $queryResult)
123  );
124  self::assertSame(11, $inQuery->count());
125  }
126 
127  #[Test]
129  {
130  $query = $this->blogRepository->createQuery();
131  $query->matching($query->in('uid', [1, 2]));
132  $queryResult = $query->execute();
133  $inQuery = $this->postRepository->createQuery();
134  $inQuery->matching(
135  $inQuery->in('blog', $queryResult)
136  );
137  self::assertSame(11, $inQuery->count());
138  $newInQuery = $this->postRepository->createQuery();
139  $newInQuery->matching(
140  $newInQuery->in('blog', $queryResult)
141  );
142  self::assertSame(11, $newInQuery->count());
143  }
144 
145  #[Test]
147  {
148  $blog = $this->blogRepository->findByUid(1);
149  self::assertInstanceOf(LazyObjectStorage::class, $blog->getPosts());
150  $inQuery = $this->postRepository->createQuery();
151  $inQuery->matching(
152  $inQuery->in('uid', $blog->getPosts())
153  );
154  self::assertSame(10, $inQuery->count());
155  }
156 
157  #[Test]
159  {
160  $blog = $this->blogRepository->findByUid(1);
161  self::assertInstanceOf(LazyObjectStorage::class, $blog->getPosts());
162  $inQuery = $this->postRepository->createQuery();
163  $inQuery->matching(
164  $inQuery->in('uid', $blog->getPosts())
165  );
166  self::assertSame(10, $inQuery->count());
167  $newInQuery = $this->postRepository->createQuery();
168  $newInQuery->matching(
169  $newInQuery->in('uid', $blog->getPosts())
170  );
171  self::assertSame(10, $newInQuery->count());
172  }
173 }
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithQueryResult
‪inConditionWorksWithQueryResult()
Definition: InTest.php:115
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithObjectStorage
‪inConditionWorksWithObjectStorage()
Definition: InTest.php:78
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithArrayOfObjects
‪inConditionWorksWithArrayOfObjects()
Definition: InTest.php:49
‪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\Persistence\InTest\$testExtensionsToLoad
‪array $testExtensionsToLoad
Definition: InTest.php:31
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\setUp
‪setUp()
Definition: InTest.php:38
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithLazyObjectStorage
‪inConditionWorksWithLazyObjectStorage()
Definition: InTest.php:146
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest
Definition: InTest.php:30
‪TYPO3\CMS\Extbase\Persistence\ObjectStorage
Definition: ObjectStorage.php:34
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\$blogRepository
‪BlogRepository $blogRepository
Definition: InTest.php:35
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithArrayOfObjectsOnSecondCall
‪inConditionWorksWithArrayOfObjectsOnSecondCall()
Definition: InTest.php:61
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\$postRepository
‪PostRepository $postRepository
Definition: InTest.php:36
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence
Definition: AddTest.php:18
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithLazyObjectStorageOnSecondCall
‪inConditionWorksWithLazyObjectStorageOnSecondCall()
Definition: InTest.php:158
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithQueryResultOnSecondCall
‪inConditionWorksWithQueryResultOnSecondCall()
Definition: InTest.php:128
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\InTest\inConditionWorksWithObjectStorageOnSecondCall
‪inConditionWorksWithObjectStorageOnSecondCall()
Definition: InTest.php:93
‪TYPO3Tests\BlogExample\Domain\Repository\BlogRepository
Definition: BlogRepository.php:29
‪TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage
Definition: LazyObjectStorage.php:36
‪TYPO3Tests\BlogExample\Domain\Repository\PostRepository
Definition: PostRepository.php:32