‪TYPO3CMS  ‪main
PagesVisibleFieldsTest.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;
26 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
27 
28 final class ‪PagesVisibleFieldsTest extends FunctionalTestCase
29 {
35  protected static ‪$defaultPageFormFields = [
36  'title',
37  'nav_title',
38  'subtitle',
39  'hidden',
40  'nav_hide',
41  'starttime',
42  'endtime',
43  'extendToSubpages',
44  'fe_group',
45  'abstract',
46  'keywords',
47  'description',
48  'author',
49  'author_email',
50  'layout',
51  'newUntil',
52  'backend_layout',
53  'backend_layout_next_level',
54  'content_from_pid',
55  'target',
56  'cache_timeout',
57  'cache_tags',
58  'l18n_cfg',
59  'is_siteroot',
60  'no_search',
61  'editlock',
62  'php_tree_stop',
63  'module',
64  'media',
65  'tsconfig_includes',
66  'TSconfig',
67  'categories',
68  ];
69 
75  protected static ‪$pageFormFields = [
79  'additionalFields' => [
80  'shortcut_mode',
81  'shortcut',
82  ],
83  'hiddenFields' => [
84  'keywords',
85  'description',
86  'content_from_pid',
87  'cache_timeout',
88  'cache_tags',
89  'module',
90  ],
91  ],
93  'additionalFields' => [
94  'mount_pid_ol',
95  'mount_pid',
96  ],
97  'hiddenFields' => [
98  'keywords',
99  'description',
100  'content_from_pid',
101  'cache_timeout',
102  'cache_tags',
103  'module',
104  ],
105  ],
107  'additionalFields' => [
108  'url',
109  ],
110  'hiddenFields' => [
111  'keywords',
112  'description',
113  'content_from_pid',
114  'cache_timeout',
115  'cache_tags',
116  'module',
117  ],
118  ],
120  'hiddenFields' => [
121  'nav_title',
122  'subtitle',
123  'nav_hide',
124  'starttime',
125  'endtime',
126  'extendToSubpages',
127  'fe_group',
128  'abstract',
129  'keywords',
130  'description',
131  'author',
132  'author_email',
133  'layout',
134  'newUntil',
135  'content_from_pid',
136  'cache_timeout',
137  'cache_tags',
138  'content_from_pid',
139  'target',
140  'cache_timeout',
141  'cache_tags',
142  'l18n_cfg',
143  'is_siteroot',
144  'no_search',
145  'php_tree_stop',
146  ],
147  ],
149  'hiddenFields' => [
150  'nav_title',
151  'subtitle',
152  'abstract',
153  'keywords',
154  'description',
155  'author',
156  'author_email',
157  'layout',
158  'newUntil',
159  'module',
160  'content_from_pid',
161  'cache_timeout',
162  'cache_tags',
163  'content_from_pid',
164  'target',
165  'cache_timeout',
166  'cache_tags',
167  'l18n_cfg',
168  'is_siteroot',
169  'no_search',
170  'php_tree_stop',
171  'media',
172  ],
173  ],
174  ];
175 
176  public static function ‪pagesFormContainsExpectedFieldsDataProvider(): array
177  {
178  $pageTypes = [];
179 
180  foreach (static::$pageFormFields as $doktype => $fieldConfig) {
181  $expectedFields = static::$defaultPageFormFields;
182  $hiddenFields = [];
183  if (array_key_exists('additionalFields', $fieldConfig)) {
184  $expectedFields = array_merge($expectedFields, $fieldConfig['additionalFields']);
185  }
186  if (array_key_exists('hiddenFields', $fieldConfig)) {
187  $hiddenFields = $fieldConfig['hiddenFields'];
188  $expectedFields = array_diff($expectedFields, $hiddenFields);
189  }
190  $pageTypes['page doktype ' . $doktype] = [$doktype, $expectedFields, $hiddenFields];
191  }
192 
193  return $pageTypes;
194  }
195 
196  #[DataProvider('pagesFormContainsExpectedFieldsDataProvider')]
197  #[Test]
198  public function ‪pagesFormContainsExpectedFields(int $doktype, array $expectedFields, array $hiddenFields): void
199  {
200  $this->importCSVDataSet(__DIR__ . '/../Fixtures/be_users.csv');
201  $this->setUpBackendUser(1);
202  ‪$GLOBALS['LANG'] = GeneralUtility::makeInstance(LanguageServiceFactory::class)->create('default');
203 
204  $formEngineTestService = GeneralUtility::makeInstance(FormTestService::class);
205  $formResult = $formEngineTestService->createNewRecordForm('pages', ['doktype' => $doktype]);
206 
207  foreach ($expectedFields as $expectedField) {
208  self::assertNotFalse(
209  $formEngineTestService->formHtmlContainsField($expectedField, $formResult['html']),
210  'The field ' . $expectedField . ' is not in the HTML'
211  );
212  }
213 
214  foreach ($hiddenFields as $hiddenField) {
215  self::assertFalse(
216  $formEngineTestService->formHtmlContainsField($hiddenField, $formResult['html']),
217  'The field ' . $hiddenField . ' is in the HTML'
218  );
219  }
220  }
221 }
‪TYPO3\CMS\Core\Localization\LanguageServiceFactory
Definition: LanguageServiceFactory.php:25
‪TYPO3\CMS\Core\Tests\Functional\Tca\PagesVisibleFieldsTest\$defaultPageFormFields
‪static array $defaultPageFormFields
Definition: PagesVisibleFieldsTest.php:34
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_DEFAULT
‪const DOKTYPE_DEFAULT
Definition: PageRepository.php:98
‪TYPO3\CMS\Core\Tests\Functional\Tca
Definition: AfterTcaCompilationEventTest.php:18
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SHORTCUT
‪const DOKTYPE_SHORTCUT
Definition: PageRepository.php:100
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_LINK
‪const DOKTYPE_LINK
Definition: PageRepository.php:99
‪TYPO3\CMS\Core\Tests\Functional\Tca\PagesVisibleFieldsTest
Definition: PagesVisibleFieldsTest.php:29
‪TYPO3\CMS\Core\Tests\Functional\Tca\PagesVisibleFieldsTest\$pageFormFields
‪static array $pageFormFields
Definition: PagesVisibleFieldsTest.php:73
‪TYPO3\CMS\Core\Tests\Functional\Tca\PagesVisibleFieldsTest\pagesFormContainsExpectedFields
‪pagesFormContainsExpectedFields(int $doktype, array $expectedFields, array $hiddenFields)
Definition: PagesVisibleFieldsTest.php:196
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_MOUNTPOINT
‪const DOKTYPE_MOUNTPOINT
Definition: PageRepository.php:102
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SPACER
‪const DOKTYPE_SPACER
Definition: PageRepository.php:103
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_BE_USER_SECTION
‪const DOKTYPE_BE_USER_SECTION
Definition: PageRepository.php:101
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SYSFOLDER
‪const DOKTYPE_SYSFOLDER
Definition: PageRepository.php:104
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Tests\Functional\Form\FormTestService
Definition: FormTestService.php:32
‪TYPO3\CMS\Core\Domain\Repository\PageRepository
Definition: PageRepository.php:69
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\Tests\Functional\Tca\PagesVisibleFieldsTest\pagesFormContainsExpectedFieldsDataProvider
‪static pagesFormContainsExpectedFieldsDataProvider()
Definition: PagesVisibleFieldsTest.php:174