‪TYPO3CMS  ‪main
PageRepositoryTest.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\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
22 use Symfony\Component\DependencyInjection\Container;
36 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
37 
38 final class ‪PageRepositoryTest extends FunctionalTestCase
39 {
40  protected function ‪setUp(): void
41  {
42  parent::setUp();
43  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/pages.csv');
44  }
45 
46  #[Test]
47  public function ‪getMenuSingleUidRoot(): void
48  {
49  $subject = new ‪PageRepository();
50  $rows = $subject->getMenu(1);
51  self::assertArrayHasKey(2, $rows);
52  self::assertArrayHasKey(3, $rows);
53  self::assertArrayHasKey(4, $rows);
54  self::assertCount(3, $rows);
55  }
56 
57  #[Test]
58  public function ‪getMenuSingleUidSubpage(): void
59  {
60  $subject = new ‪PageRepository();
61  $rows = $subject->getMenu(2);
62  self::assertArrayHasKey(5, $rows);
63  self::assertArrayHasKey(7, $rows);
64  self::assertCount(2, $rows);
65  }
66 
67  #[Test]
68  public function ‪getMenuMultipleUid(): void
69  {
70  $subject = new ‪PageRepository();
71  $rows = $subject->getMenu([2, 3]);
72  self::assertArrayHasKey(5, $rows);
73  self::assertArrayHasKey(7, $rows);
74  self::assertArrayHasKey(8, $rows);
75  self::assertArrayHasKey(9, $rows);
76  self::assertCount(4, $rows);
77  }
78 
79  #[Test]
80  public function ‪getMenuPageOverlay(): void
81  {
82  $context = new ‪Context();
83  $context->setAspect('language', new ‪LanguageAspect(1));
84  $subject = new ‪PageRepository($context);
85  $rows = $subject->getMenu([2, 3]);
86  self::assertEquals('Attrappe 1-2-5', $rows[5]['title']);
87  self::assertEquals('Dummy 1-2-7', $rows[7]['title']);
88  self::assertEquals('Dummy 1-3-8', $rows[8]['title']);
89  self::assertEquals('Attrappe 1-3-9', $rows[9]['title']);
90  self::assertCount(4, $rows);
91  }
92 
93  #[Test]
94  public function ‪getMenuWithMountPoint(): void
95  {
96  $subject = new ‪PageRepository();
97  $rows = $subject->getMenu([1000]);
98  self::assertEquals('root default language', $rows[1003]['title']);
99  self::assertEquals('1001', $rows[1003]['uid']);
100  self::assertEquals('1001-1003', $rows[1003]['_MP_PARAM']);
101  self::assertCount(2, $rows);
102  }
103 
104  #[Test]
105  public function ‪getMenuPageOverlayWithMountPoint(): void
106  {
107  $context = new ‪Context();
108  $context->setAspect('language', new ‪LanguageAspect(1));
109  $subject = new ‪PageRepository($context);
110  $rows = $subject->getMenu([1000]);
111  self::assertEquals('root translation', $rows[1003]['title']);
112  self::assertEquals('1001', $rows[1003]['uid']);
113  self::assertEquals('1002', $rows[1003]['_LOCALIZED_UID']);
114  self::assertEquals('1001-1003', $rows[1003]['_MP_PARAM']);
115  self::assertCount(2, $rows);
116  }
117 
118  #[Test]
119  public function ‪getPageOverlayById(): void
120  {
121  $subject = new ‪PageRepository();
122  $row = $subject->getPageOverlay(1, 1);
123  $this->‪assertOverlayRow($row);
124  self::assertEquals('Wurzel 1', $row['title']);
125  self::assertEquals('901', $row['_LOCALIZED_UID']);
126  self::assertEquals(1, $row['sys_language_uid']);
127  }
128 
129  #[Test]
131  {
132  $subject = new ‪PageRepository();
133  $row = $subject->getPageOverlay(4, 1);
134  self::assertIsArray($row);
135  self::assertCount(0, $row);
136  }
137 
138  #[Test]
139  public function ‪getPageOverlayByRow(): void
140  {
141  $subject = new ‪PageRepository();
142  $orig = $subject->getPage(1);
143  $row = $subject->getPageOverlay($orig, 1);
144  $this->‪assertOverlayRow($row);
145  self::assertEquals(1, $row['uid']);
146  self::assertEquals('Wurzel 1', $row['title']);
147  self::assertEquals('901', $row['_LOCALIZED_UID']);
148  self::assertEquals(1, $row['sys_language_uid']);
149  }
150 
151  #[Test]
153  {
154  $subject = new ‪PageRepository();
155  $orig = $subject->getPage(4);
156  $row = $subject->getPageOverlay($orig, 1);
157  self::assertIsArray($row);
158  self::assertEquals(4, $row['uid']);
159  self::assertEquals('Dummy 1-4', $row['title']);//original title
160  }
161 
162  #[Test]
163  public function ‪getPagesOverlayByIdSingle(): void
164  {
165  $context = new ‪Context();
166  $context->setAspect('language', new ‪LanguageAspect(1));
167  $subject = new ‪PageRepository($context);
168  $rows = $subject->getPagesOverlay([1]);
169  self::assertIsArray($rows);
170  self::assertCount(1, $rows);
171  self::assertArrayHasKey(0, $rows);
172 
173  $row = $rows[0];
174  $this->‪assertOverlayRow($row);
175  self::assertEquals('Wurzel 1', $row['title']);
176  self::assertEquals('901', $row['_LOCALIZED_UID']);
177  self::assertEquals(1, $row['sys_language_uid']);
178  }
179 
180  #[Test]
181  public function ‪getPagesOverlayByIdMultiple(): void
182  {
183  $context = new ‪Context();
184  $context->setAspect('language', new ‪LanguageAspect(1));
185  $subject = new ‪PageRepository($context);
186  $rows = $subject->getPagesOverlay([1, 5, 15]);
187  self::assertIsArray($rows);
188  self::assertCount(2, $rows);
189  self::assertArrayHasKey(0, $rows);
190  self::assertArrayHasKey(1, $rows);
191 
192  $row = $rows[0];
193  $this->‪assertOverlayRow($row);
194  self::assertEquals('Wurzel 1', $row['title']);
195  self::assertEquals('901', $row['_LOCALIZED_UID']);
196  self::assertEquals(1, $row['sys_language_uid']);
197 
198  $row = $rows[1];
199  $this->‪assertOverlayRow($row);
200  self::assertEquals('Attrappe 1-2-5', $row['title']);
201  self::assertEquals('904', $row['_LOCALIZED_UID']);
202  self::assertEquals(1, $row['sys_language_uid']);
203  }
204 
205  #[Test]
207  {
208  $context = new ‪Context();
209  $context->setAspect('language', new ‪LanguageAspect(1));
210  $subject = new ‪PageRepository($context);
211  $rows = $subject->getPagesOverlay([1, 4, 5, 8]);
212  self::assertIsArray($rows);
213  self::assertCount(2, $rows);
214  self::assertArrayHasKey(0, $rows);
215  self::assertArrayHasKey(2, $rows);
216 
217  $row = $rows[0];
218  $this->‪assertOverlayRow($row);
219  self::assertEquals('Wurzel 1', $row['title']);
220 
221  $row = $rows[2];
222  $this->‪assertOverlayRow($row);
223  self::assertEquals('Attrappe 1-2-5', $row['title']);
224  }
225 
226  #[Test]
227  public function ‪getPagesOverlayByRowSingle(): void
228  {
229  $subject = new ‪PageRepository();
230  $origRow = $subject->getPage(1);
231 
232  $context = new ‪Context();
233  $context->setAspect('language', new ‪LanguageAspect(1));
234  $subject = new ‪PageRepository($context);
235  $rows = $subject->getPagesOverlay([$origRow]);
236  self::assertIsArray($rows);
237  self::assertCount(1, $rows);
238  self::assertArrayHasKey(0, $rows);
239 
240  $row = $rows[0];
241  $this->‪assertOverlayRow($row);
242  self::assertEquals('Wurzel 1', $row['title']);
243  self::assertEquals('901', $row['_LOCALIZED_UID']);
244  self::assertEquals(1, $row['sys_language_uid']);
245  self::assertEquals(new ‪Page($origRow), $row['_TRANSLATION_SOURCE']);
246  }
247 
248  #[Test]
249  public function ‪groupRestrictedPageCanBeOverlaid(): void
250  {
251  $subject = new ‪PageRepository();
252  $origRow = $subject->getPage(6, true);
253 
254  $context = new ‪Context();
255  $context->setAspect('language', new ‪LanguageAspect(1));
256  $subject = new ‪PageRepository($context);
257  $rows = $subject->getPagesOverlay([$origRow]);
258  self::assertIsArray($rows);
259  self::assertCount(1, $rows);
260  self::assertArrayHasKey(0, $rows);
261 
262  $row = $rows[0];
263  $this->‪assertOverlayRow($row);
264  self::assertEquals('Attrappe 1-2-6', $row['title']);
265  self::assertEquals('905', $row['_LOCALIZED_UID']);
266  self::assertEquals(1, $row['sys_language_uid']);
267  }
268 
269  #[Test]
270  public function ‪getPagesOverlayByRowMultiple(): void
271  {
272  $subject = new ‪PageRepository();
273  $orig1 = $subject->getPage(1);
274  $orig2 = $subject->getPage(5);
275 
276  $context = new ‪Context();
277  $context->setAspect('language', new ‪LanguageAspect(1));
278  $subject = new ‪PageRepository($context);
279  $rows = $subject->getPagesOverlay([1 => $orig1, 5 => $orig2]);
280  self::assertIsArray($rows);
281  self::assertCount(2, $rows);
282  self::assertArrayHasKey(1, $rows);
283  self::assertArrayHasKey(5, $rows);
284 
285  $row = $rows[1];
286  $this->‪assertOverlayRow($row);
287  self::assertEquals('Wurzel 1', $row['title']);
288  self::assertEquals('901', $row['_LOCALIZED_UID']);
289  self::assertEquals(1, $row['sys_language_uid']);
290  self::assertEquals(new ‪Page($orig1), $row['_TRANSLATION_SOURCE']);
291 
292  $row = $rows[5];
293  $this->‪assertOverlayRow($row);
294  self::assertEquals('Attrappe 1-2-5', $row['title']);
295  self::assertEquals('904', $row['_LOCALIZED_UID']);
296  self::assertEquals(1, $row['sys_language_uid']);
297  self::assertEquals(new ‪Page($orig2), $row['_TRANSLATION_SOURCE']);
298  }
299 
300  #[Test]
302  {
303  $subject = new ‪PageRepository();
304  $orig1 = $subject->getPage(1);
305  $orig2 = $subject->getPage(7);
306  $orig3 = $subject->getPage(9);
307 
308  $context = new ‪Context();
309  $context->setAspect('language', new ‪LanguageAspect(1));
310  $subject = new ‪PageRepository($context);
311  $rows = $subject->getPagesOverlay([$orig1, $orig2, $orig3]);
312  self::assertIsArray($rows);
313  self::assertCount(3, $rows);
314  self::assertArrayHasKey(0, $rows);
315  self::assertArrayHasKey(1, $rows);
316  self::assertArrayHasKey(2, $rows);
317 
318  $row = $rows[0];
319  $this->‪assertOverlayRow($row);
320  self::assertEquals('Wurzel 1', $row['title']);
321  self::assertEquals(new ‪Page($orig1), $row['_TRANSLATION_SOURCE']);
322 
323  $row = $rows[1];
324  $this->‪assertNotOverlayRow($row);
325  self::assertEquals('Dummy 1-2-7', $row['title']);
326  self::assertFalse(isset($row['_TRANSLATION_SOURCE']));
327 
328  $row = $rows[2];
329  $this->‪assertOverlayRow($row);
330  self::assertEquals('Attrappe 1-3-9', $row['title']);
331  self::assertEquals(new ‪Page($orig3), $row['_TRANSLATION_SOURCE']);
332  }
333 
335  // Tests concerning mountpoints
338  #[Test]
340  {
341  $subject = new ‪PageRepository();
342  $mountPointInfo = $subject->getMountPointInfo(1003);
343  self::assertEquals('1001-1003', $mountPointInfo['MPvar']);
344  }
345 
346  #[Test]
347  public function ‪getMountPointInfoForTranslation(): void
348  {
349  $mpVar = '1001-1003';
350  $context = new ‪Context();
351  $context->setAspect('language', new ‪LanguageAspect(1));
352  $subject = new ‪PageRepository($context);
353  $mountPointInfo = $subject->getMountPointInfo(1003);
354  self::assertEquals($mpVar, $mountPointInfo['MPvar']);
355 
356  $mountPointInfo = $subject->getMountPointInfo(1004);
357  self::assertEquals($mpVar, $mountPointInfo['MPvar']);
358  }
359 
361  // Tests concerning workspaces
363  #[Test]
365  {
366  $wsid = 987654321;
367  $context = new ‪Context();
368  $context->setAspect('workspace', new ‪WorkspaceAspect($wsid));
369  $subject = new ‪PageRepository($context);
370  $pageRec = $subject->getPage(11);
371 
372  self::assertEquals(11, $pageRec['uid']);
373  self::assertEquals(0, $pageRec['t3ver_oid']);
374  self::assertEquals(987654321, $pageRec['t3ver_wsid']);
375  self::assertEquals(VersionState::NEW_PLACEHOLDER->value, $pageRec['t3ver_state']);
376  }
377 
378  #[Test]
380  {
381  $wsid = 987654321;
382  $context = new ‪Context();
383  $context->setAspect('workspace', new ‪WorkspaceAspect($wsid));
384  $subject = new ‪PageRepository($context);
385 
386  $pageRec = $subject->getWorkspaceVersionOfRecord('pages', 11);
387 
388  self::assertEquals(11, $pageRec['uid']);
389  self::assertEquals(0, $pageRec['t3ver_oid']);
390  self::assertEquals($wsid, $pageRec['t3ver_wsid']);
391  self::assertEquals(VersionState::NEW_PLACEHOLDER->value, $pageRec['t3ver_state']);
392  }
393 
395  // Tests concerning versioning
397  #[Test]
399  {
400  $table = ‪StringUtility::getUniqueId('aTable');
401  ‪$GLOBALS['TCA'][$table] = [
402  'ctrl' => [
403  'versioningWS' => true,
404  ],
405  ];
406 
407  $subject = new ‪PageRepository(new ‪Context());
408 
409  $conditions = $subject->getDefaultConstraints($table);
410  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
411  $expr = $connection->getExpressionBuilder();
412 
413  self::assertThat(
414  (string)$expr->and(...$conditions),
415  self::stringContains('((((' . $connection->quoteIdentifier($table . '.t3ver_state') . ' <= 0)'),
416  'Versioning placeholders'
417  );
418  self::assertThat(
419  (string)$expr->and(...$conditions),
420  self::stringContains('(((' . $connection->quoteIdentifier($table . '.t3ver_oid') . ' = 0) OR (' . $connection->quoteIdentifier($table . '.t3ver_state') . ' = 4)))'),
421  'Records with online version'
422  );
423  }
424 
425  #[Test]
427  {
428  $table = ‪StringUtility::getUniqueId('aTable');
429  ‪$GLOBALS['TCA'][$table] = [
430  'ctrl' => [
431  'versioningWS' => true,
432  ],
433  ];
434 
435  $context = new ‪Context();
436  $context->setAspect('workspace', new ‪WorkspaceAspect(13));
437  $subject = new ‪PageRepository($context);
438 
439  $conditions = $subject->getDefaultConstraints($table);
440  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
441  $expr = $connection->getExpressionBuilder();
442 
443  self::assertThat(
444  (string)$expr->and(...$conditions),
445  self::logicalNot(self::stringContains('(' . $connection->quoteIdentifier($table . '.t3ver_state') . ' <= 0)')),
446  'No versioning placeholders'
447  );
448  self::assertThat(
449  (string)$expr->and(...$conditions),
450  self::stringContains(' AND (((' . $connection->quoteIdentifier($table . '.t3ver_oid') . ' = 0) OR (' . $connection->quoteIdentifier($table . '.t3ver_state') . ' = 4)))'),
451  'Records from online versions'
452  );
453  }
454 
455  #[Test]
457  {
458  $table = ‪StringUtility::getUniqueId('aTable');
459  ‪$GLOBALS['TCA'][$table] = [
460  'ctrl' => [
461  'versioningWS' => true,
462  ],
463  ];
464 
465  $context = new ‪Context();
466  $context->setAspect('workspace', new ‪WorkspaceAspect(2));
467  $subject = new ‪PageRepository($context);
468 
469  $conditions = $subject->getDefaultConstraints($table);
470  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
471  $expr = $connection->getExpressionBuilder();
472 
473  self::assertThat(
474  (string)$expr->and(...$conditions),
475  self::stringContains('((' . $connection->quoteIdentifier($table . '.t3ver_wsid') . ' = 0) OR (' . $connection->quoteIdentifier($table . '.t3ver_wsid') . ' = 2)'),
476  'No versioning placeholders'
477  );
478  }
479 
480  protected function ‪assertOverlayRow($row): void
481  {
482  self::assertIsArray($row);
483  self::assertArrayHasKey('_LOCALIZED_UID', $row);
484  }
485 
486  protected function ‪assertNotOverlayRow($row): void
487  {
488  self::assertIsArray($row);
489  self::assertFalse(isset($row['_LOCALIZED_UID']));
490  }
491 
492  #[Test]
493  public function ‪getPageIdsRecursiveTest(): void
494  {
495  $subject = new ‪PageRepository();
496  // empty array does not do anything
497  $result = $subject->getPageIdsRecursive([], 1);
498  self::assertEquals([], $result);
499  // pid=0 does not do anything
500  $result = $subject->getPageIdsRecursive([0], 1);
501  self::assertEquals([0], $result);
502  // depth=0 does return given ids int-casted
503  $result = $subject->getPageIdsRecursive(['1'], 0);
504  self::assertEquals([1], $result);
505  $result = $subject->getPageIdsRecursive([1], 1);
506  self::assertEquals([1, 2, 3, 4], $result);
507  $result = $subject->getPageIdsRecursive([1], 2);
508  self::assertEquals([1, 2, 5, 7, 3, 8, 9, 4, 10], $result);
509  $result = $subject->getPageIdsRecursive([1000], 99);
510  self::assertEquals([1000, 1001], $result);
511  }
512 
513  #[Test]
514  public function ‪getDescendantPageIdsRecursiveTest(): void
515  {
516  $subject = new ‪PageRepository();
517  // Negative numbers or "0" do not return anything
518  $result = $subject->getDescendantPageIdsRecursive(-1, 1);
519  self::assertEquals([], $result);
520  $result = $subject->getDescendantPageIdsRecursive(0, 1);
521  self::assertEquals([], $result);
522  $result = $subject->getDescendantPageIdsRecursive(1, 1);
523  self::assertEquals([2, 3, 4], $result);
524  $result = $subject->getDescendantPageIdsRecursive(1, 2);
525  self::assertEquals([2, 5, 7, 3, 8, 9, 4, 10], $result);
526  // "Begin" leaves out a level
527  $result = $subject->getDescendantPageIdsRecursive(1, 2, 1);
528  self::assertEquals([5, 7, 8, 9, 10], $result);
529  // Exclude a branch (3)
530  $result = $subject->getDescendantPageIdsRecursive(1, 2, excludePageIds: [3]);
531  self::assertEquals([2, 5, 7, 4, 10], $result);
532  // Include Page ID 6
533  $result = $subject->getDescendantPageIdsRecursive(1, 2, bypassEnableFieldsCheck: true);
534  self::assertEquals([2, 5, 6, 7, 3, 8, 9, 4, 10], $result);
535  }
536 
537  #[Test]
539  {
540  $context = new ‪Context();
541  $context->setAspect('language', new ‪LanguageAspect(1, 1, ‪LanguageAspect::OVERLAYS_ON_WITH_FLOATING, [0]));
542  $subject = new ‪PageRepository($context);
543  ‪$record = $subject->getRawRecord('tt_content', 1);
544  self::assertSame('Default Content #1', ‪$record['header']);
545  $overlaidRecord = $subject->getLanguageOverlay('tt_content', ‪$record);
546  self::assertSame(2, $overlaidRecord['_LOCALIZED_UID']);
547  self::assertSame('Translated Content #1', $overlaidRecord['header']);
548 
549  // Check if "bodytext" is actually overlaid with a NULL value
550  ‪$record = $subject->getRawRecord('tt_content', 3);
551  $overlaidRecord = $subject->getLanguageOverlay('tt_content', ‪$record);
552  self::assertSame('Translated #2', $overlaidRecord['header']);
553  self::assertNull($overlaidRecord['bodytext']);
554  }
555 
559  public static function invalidRowForVersionOLDataProvider(): array
560  {
561  return [
562  'no uid and no t3ver_oid' => [[]],
563  'zero uid and no t3ver_oid' => [['uid' => 0]],
564  'positive uid and no t3ver_oid' => [['uid' => 1]],
565  'no uid but t3ver_oid' => [['t3ver_oid' => 1]],
566  ];
567  }
568 
572  #[DataProvider('invalidRowForVersionOLDataProvider')]
573  #[Test]
574  public function ‪versionOLForAnInvalidRowUnchangedRowData(array $input): void
575  {
576  $context = new ‪Context();
577  $context->setAspect('workspace', new ‪WorkspaceAspect(4));
578  $subject = new ‪PageRepository($context);
579  $originalInput = $input;
580 
581  $subject->versionOL('pages', $input);
582 
583  self::assertSame($originalInput, $input);
584  }
585 
586  #[Test]
588  {
589  $modifyDefaultConstraintsForDatabaseQueryEvent = null;
590  $defaultConstraint = new ‪CompositeExpression('foo');
591 
593  $container = $this->get('service_container');
594  $container->set(
595  'modify-default-constraints-for-database-query-listener',
596  static function (‪ModifyDefaultConstraintsForDatabaseQueryEvent $event) use (&$modifyDefaultConstraintsForDatabaseQueryEvent, $defaultConstraint) {
597  $modifyDefaultConstraintsForDatabaseQueryEvent = $event;
598  $event->‪setConstraints([$defaultConstraint]);
599  }
600  );
601 
602  $eventListener = $container->get(ListenerProvider::class);
603  $eventListener->addListener(ModifyDefaultConstraintsForDatabaseQueryEvent::class, 'modify-default-constraints-for-database-query-listener');
604 
605  $table = ‪StringUtility::getUniqueId('aTable');
606  ‪$GLOBALS['TCA'][$table] = ['ctrl' => []];
607 
608  $defaultConstraints = (new ‪PageRepository(new ‪Context()))->getDefaultConstraints($table);
609 
610  self::assertEquals([$defaultConstraint], $defaultConstraints);
611  self::assertInstanceOf(ModifyDefaultConstraintsForDatabaseQueryEvent::class, $modifyDefaultConstraintsForDatabaseQueryEvent);
612  self::assertEquals($table, $modifyDefaultConstraintsForDatabaseQueryEvent->getTable());
613  self::assertEquals([$defaultConstraint], $modifyDefaultConstraintsForDatabaseQueryEvent->getConstraints());
614  }
615 
616  #[Test]
618  {
619  $pageId = 2004;
620  $page = new ‪Page(['uid' => $pageId]);
621  $beforePageIsRetrievedEvent = null;
622 
624  $container = $this->get('service_container');
625  $container->set(
626  'before-page-is-retrieved-listener',
627  static function (‪BeforePageIsRetrievedEvent $event) use (&$beforePageIsRetrievedEvent, $page, $pageId) {
628  $beforePageIsRetrievedEvent = $event;
629  $beforePageIsRetrievedEvent->‪setPageId($pageId);
630  $beforePageIsRetrievedEvent->setPage($page);
631  }
632  );
633 
634  $eventListener = $container->get(ListenerProvider::class);
635  $eventListener->addListener(BeforePageIsRetrievedEvent::class, 'before-page-is-retrieved-listener');
636 
637  $result = (new ‪PageRepository(new ‪Context()))->getPage(1234);
638 
639  self::assertEquals($page->getPageId(), $result['uid']);
640  self::assertInstanceOf(BeforePageIsRetrievedEvent::class, $beforePageIsRetrievedEvent);
641  self::assertEquals($page, $beforePageIsRetrievedEvent->getPage());
642  self::assertEquals($pageId, $beforePageIsRetrievedEvent->getPageId());
643  self::assertTrue($beforePageIsRetrievedEvent->hasPage());
644  }
645 }
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository
Definition: PageRepositoryTest.php:18
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPagesOverlayByIdSingle
‪getPagesOverlayByIdSingle()
Definition: PageRepositoryTest.php:163
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPageOverlayByRow
‪getPageOverlayByRow()
Definition: PageRepositoryTest.php:139
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPagesOverlayByRowSingle
‪getPagesOverlayByRowSingle()
Definition: PageRepositoryTest.php:227
‪TYPO3\CMS\Core\Domain\Page
Definition: Page.php:24
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPageOverlayByIdWithoutTranslation
‪getPageOverlayByIdWithoutTranslation()
Definition: PageRepositoryTest.php:130
‪TYPO3\CMS\Core\Context\WorkspaceAspect
Definition: WorkspaceAspect.php:31
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\previewShowsPagesFromLiveAndCurrentWorkspace
‪previewShowsPagesFromLiveAndCurrentWorkspace()
Definition: PageRepositoryTest.php:364
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getWorkspaceVersionReturnsTheCorrectMethod
‪getWorkspaceVersionReturnsTheCorrectMethod()
Definition: PageRepositoryTest.php:379
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPageOverlayByRowWithoutTranslation
‪getPageOverlayByRowWithoutTranslation()
Definition: PageRepositoryTest.php:152
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getLanguageOverlayResolvesContentWithNullInValues
‪getLanguageOverlayResolvesContentWithNullInValues()
Definition: PageRepositoryTest.php:538
‪TYPO3\CMS\Core\Versioning\VersionState
‪VersionState
Definition: VersionState.php:22
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\beforePageIsRetrievedEventIsCalled
‪beforePageIsRetrievedEventIsCalled()
Definition: PageRepositoryTest.php:617
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\modifyDefaultConstraintsForDatabaseQueryEventIsCalled
‪modifyDefaultConstraintsForDatabaseQueryEventIsCalled()
Definition: PageRepositoryTest.php:587
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPagesOverlayByIdMultiple
‪getPagesOverlayByIdMultiple()
Definition: PageRepositoryTest.php:181
‪TYPO3\CMS\Core\Domain\Event\BeforePageIsRetrievedEvent\setPageId
‪setPageId(int $pageId)
Definition: BeforePageIsRetrievedEvent.php:59
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getDescendantPageIdsRecursiveTest
‪getDescendantPageIdsRecursiveTest()
Definition: PageRepositoryTest.php:514
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMenuSingleUidRoot
‪getMenuSingleUidRoot()
Definition: PageRepositoryTest.php:47
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMenuPageOverlay
‪getMenuPageOverlay()
Definition: PageRepositoryTest.php:80
‪TYPO3\CMS\Core\Context\Context
Definition: Context.php:54
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPageIdsRecursiveTest
‪getPageIdsRecursiveTest()
Definition: PageRepositoryTest.php:493
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest
Definition: PageRepositoryTest.php:39
‪TYPO3\CMS\Core\Database\Query\Expression\CompositeExpression
Definition: CompositeExpression.php:27
‪TYPO3\CMS\Core\Domain\Event\ModifyDefaultConstraintsForDatabaseQueryEvent\setConstraints
‪setConstraints(array $constraints)
Definition: ModifyDefaultConstraintsForDatabaseQueryEvent.php:66
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPagesOverlayByIdMultipleSomeNotOverlaid
‪getPagesOverlayByIdMultipleSomeNotOverlaid()
Definition: PageRepositoryTest.php:206
‪TYPO3\CMS\Webhooks\Message\$record
‪identifier readonly int readonly array $record
Definition: PageModificationMessage.php:36
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPagesOverlayByRowMultiple
‪getPagesOverlayByRowMultiple()
Definition: PageRepositoryTest.php:270
‪TYPO3\CMS\Core\Domain\Event\BeforePageIsRetrievedEvent
Definition: BeforePageIsRetrievedEvent.php:30
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getDefaultConstraintsHidesVersionedRecordsAndPlaceholders
‪getDefaultConstraintsHidesVersionedRecordsAndPlaceholders()
Definition: PageRepositoryTest.php:398
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\assertOverlayRow
‪assertOverlayRow($row)
Definition: PageRepositoryTest.php:480
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMountPointInfoForDefaultLanguage
‪getMountPointInfoForDefaultLanguage()
Definition: PageRepositoryTest.php:339
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\assertNotOverlayRow
‪assertNotOverlayRow($row)
Definition: PageRepositoryTest.php:486
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMountPointInfoForTranslation
‪getMountPointInfoForTranslation()
Definition: PageRepositoryTest.php:347
‪TYPO3\CMS\Core\Context\LanguageAspect
Definition: LanguageAspect.php:57
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\setUp
‪setUp()
Definition: PageRepositoryTest.php:40
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\groupRestrictedPageCanBeOverlaid
‪groupRestrictedPageCanBeOverlaid()
Definition: PageRepositoryTest.php:249
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPageOverlayById
‪getPageOverlayById()
Definition: PageRepositoryTest.php:119
‪TYPO3\CMS\Core\Domain\Event\ModifyDefaultConstraintsForDatabaseQueryEvent
Definition: ModifyDefaultConstraintsForDatabaseQueryEvent.php:34
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMenuSingleUidSubpage
‪getMenuSingleUidSubpage()
Definition: PageRepositoryTest.php:58
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMenuMultipleUid
‪getMenuMultipleUid()
Definition: PageRepositoryTest.php:68
‪TYPO3\CMS\Core\Domain\Repository\PageRepository
Definition: PageRepository.php:69
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getDefaultConstraintsDoesFilterToCurrentAndLiveWorkspaceForRecordsInPreview
‪getDefaultConstraintsDoesFilterToCurrentAndLiveWorkspaceForRecordsInPreview()
Definition: PageRepositoryTest.php:456
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMenuWithMountPoint
‪getMenuWithMountPoint()
Definition: PageRepositoryTest.php:94
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\Context\LanguageAspect\OVERLAYS_ON_WITH_FLOATING
‪const OVERLAYS_ON_WITH_FLOATING
Definition: LanguageAspect.php:77
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:24
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getDefaultConstraintsDoesNotHidePlaceholdersInPreview
‪getDefaultConstraintsDoesNotHidePlaceholdersInPreview()
Definition: PageRepositoryTest.php:426
‪TYPO3\CMS\Core\EventDispatcher\ListenerProvider
Definition: ListenerProvider.php:30
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getMenuPageOverlayWithMountPoint
‪getMenuPageOverlayWithMountPoint()
Definition: PageRepositoryTest.php:105
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static getUniqueId(string $prefix='')
Definition: StringUtility.php:57
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\getPagesOverlayByRowMultipleSomeNotOverlaid
‪getPagesOverlayByRowMultipleSomeNotOverlaid()
Definition: PageRepositoryTest.php:301
‪TYPO3\CMS\Core\Tests\Functional\Domain\Repository\PageRepositoryTest\versionOLForAnInvalidRowUnchangedRowData
‪static versionOLForAnInvalidRowUnchangedRowData(array $input)
Definition: PageRepositoryTest.php:574