‪TYPO3CMS  11.5
InlineStackProcessorTest.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 Prophecy\Argument;
21 use Prophecy\PhpUnit\ProphecyTrait;
26 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
27 
28 class ‪InlineStackProcessorTest extends UnitTestCase
29 {
30  use ProphecyTrait;
31 
35  protected ‪$resetSingletonInstances = true;
36 
37  public function ‪setUp(): void
38  {
39  parent::setUp();
40  $cacheManagerProphecy = $this->prophesize(CacheManager::class);
41  $cacheProphecy = $this->prophesize(FrontendInterface::class);
42  $cacheManagerProphecy->getCache('runtime')->willReturn($cacheProphecy->reveal());
43  $cacheProphecy->get(Argument::cetera())->willReturn(false);
44  $cacheProphecy->set(Argument::cetera())->willReturn(false);
45  GeneralUtility::setSingletonInstance(CacheManager::class, $cacheManagerProphecy->reveal());
46  }
47 
48  public function ‪structureStringIsParsedDataProvider(): array
49  {
50  return [
51  'simple 1-level table structure' => [
52  'data-pageId-childTable',
53  [
54  'unstable' => [
55  'table' => 'childTable',
56  ],
57  ],
58  [
59  'form' => '',
60  'object' => '',
61  ],
62  ],
63  'simple 1-level table-uid structure' => [
64  'data-pageId-childTable-childUid',
65  [
66  'unstable' => [
67  'table' => 'childTable',
68  'uid' => 'childUid',
69  ],
70  ],
71  [
72  'form' => '',
73  'object' => '',
74  ],
75  ],
76  'simple 1-level table-uid-field structure' => [
77  'data-pageId-childTable-childUid-childField',
78  [
79  'unstable' => [
80  'table' => 'childTable',
81  'uid' => 'childUid',
82  'field' => 'childField',
83  ],
84  ],
85  [
86  'form' => '',
87  'object' => '',
88  ],
89  ],
90  'simple 2-level table structure' => [
91  'data-pageId-parentTable-parentUid-parentField-childTable',
92  [
93  'stable' => [
94  [
95  'table' => 'parentTable',
96  'uid' => 'parentUid',
97  'field' => 'parentField',
98  'config' => [],
99  ],
100  ],
101  'unstable' => [
102  'table' => 'childTable',
103  ],
104  ],
105  [
106  'form' => 'data[parentTable][parentUid][parentField]',
107  'object' => 'data-pageId-parentTable-parentUid-parentField',
108  ],
109  ],
110  'simple 2-level table-uid structure' => [
111  'data-pageId-parentTable-parentUid-parentField-childTable-childUid',
112  [
113  'stable' => [
114  [
115  'table' => 'parentTable',
116  'uid' => 'parentUid',
117  'field' => 'parentField',
118  'config' => [],
119  ],
120  ],
121  'unstable' => [
122  'table' => 'childTable',
123  'uid' => 'childUid',
124  ],
125  ],
126  [
127  'form' => 'data[parentTable][parentUid][parentField]',
128  'object' => 'data-pageId-parentTable-parentUid-parentField',
129  ],
130  ],
131  'simple 2-level table-uid-field structure' => [
132  'data-pageId-parentTable-parentUid-parentField-childTable-childUid-childField',
133  [
134  'stable' => [
135  [
136  'table' => 'parentTable',
137  'uid' => 'parentUid',
138  'field' => 'parentField',
139  'config' => [],
140  ],
141  ],
142  'unstable' => [
143  'table' => 'childTable',
144  'uid' => 'childUid',
145  'field' => 'childField',
146  ],
147  ],
148  [
149  'form' => 'data[parentTable][parentUid][parentField]',
150  'object' => 'data-pageId-parentTable-parentUid-parentField',
151  ],
152  ],
153  'simple 3-level table structure' => [
154  'data-pageId-grandParentTable-grandParentUid-grandParentField-parentTable-parentUid-parentField-childTable',
155  [
156  'stable' => [
157  [
158  'table' => 'grandParentTable',
159  'uid' => 'grandParentUid',
160  'field' => 'grandParentField',
161  'config' => [],
162  ],
163  [
164  'table' => 'parentTable',
165  'uid' => 'parentUid',
166  'field' => 'parentField',
167  'config' => [],
168  ],
169  ],
170  'unstable' => [
171  'table' => 'childTable',
172  ],
173  ],
174  [
175  'form' => 'data[parentTable][parentUid][parentField]',
176  'object' => 'data-pageId-grandParentTable-grandParentUid-grandParentField-parentTable-parentUid-parentField',
177  ],
178  ],
179  'simple 3-level table-uid structure' => [
180  'data-pageId-grandParentTable-grandParentUid-grandParentField-parentTable-parentUid-parentField-childTable-childUid',
181  [
182  'stable' => [
183  [
184  'table' => 'grandParentTable',
185  'uid' => 'grandParentUid',
186  'field' => 'grandParentField',
187  'config' => [],
188  ],
189  [
190  'table' => 'parentTable',
191  'uid' => 'parentUid',
192  'field' => 'parentField',
193  'config' => [],
194  ],
195  ],
196  'unstable' => [
197  'table' => 'childTable',
198  'uid' => 'childUid',
199  ],
200  ],
201  [
202  'form' => 'data[parentTable][parentUid][parentField]',
203  'object' => 'data-pageId-grandParentTable-grandParentUid-grandParentField-parentTable-parentUid-parentField',
204  ],
205  ],
206  'simple 3-level table-uid-field structure' => [
207  'data-pageId-grandParentTable-grandParentUid-grandParentField-parentTable-parentUid-parentField-childTable-childUid-childField',
208  [
209  'stable' => [
210  [
211  'table' => 'grandParentTable',
212  'uid' => 'grandParentUid',
213  'field' => 'grandParentField',
214  'config' => [],
215  ],
216  [
217  'table' => 'parentTable',
218  'uid' => 'parentUid',
219  'field' => 'parentField',
220  'config' => [],
221  ],
222  ],
223  'unstable' => [
224  'table' => 'childTable',
225  'uid' => 'childUid',
226  'field' => 'childField',
227  ],
228  ],
229  [
230  'form' => 'data[parentTable][parentUid][parentField]',
231  'object' => 'data-pageId-grandParentTable-grandParentUid-grandParentField-parentTable-parentUid-parentField',
232  ],
233  ],
234  'flexform 3-level table-uid structure' => [
235  'data-pageId-grandParentTable-grandParentUid-grandParentField---data---sDEF---lDEF---grandParentFlexForm---vDEF-parentTable-parentUid-parentField-childTable-childUid',
236  [
237  'stable' => [
238  [
239  'table' => 'grandParentTable',
240  'uid' => 'grandParentUid',
241  'field' => 'grandParentField',
242  'flexform' => [
243  'data', 'sDEF', 'lDEF', 'grandParentFlexForm', 'vDEF',
244  ],
245  'config' => [],
246  ],
247  [
248  'table' => 'parentTable',
249  'uid' => 'parentUid',
250  'field' => 'parentField',
251  'config' => [],
252  ],
253  ],
254  'unstable' => [
255  'table' => 'childTable',
256  'uid' => 'childUid',
257  ],
258  ],
259  [
260  'form' => 'data[parentTable][parentUid][parentField]',
261  'object' => 'data-pageId-grandParentTable-grandParentUid-grandParentField---data---sDEF---lDEF---grandParentFlexForm---vDEF-parentTable-parentUid-parentField',
262  ],
263  ],
264  ];
265  }
266 
271  public function ‪initializeByParsingDomObjectIdStringParsesStructureString(string $string, array $expectedInlineStructure, array $_): void
272  {
273  $subject = $this->getAccessibleMock(InlineStackProcessor::class, ['dummy']);
274  $subject->initializeByParsingDomObjectIdString($string);
275  $structure = $subject->_get('inlineStructure');
276  self::assertEquals($expectedInlineStructure, $structure);
277  }
278 
283  public function ‪getCurrentStructureFormPrefixReturnsExpectedStringAfterInitializationByStructureString(string $string, array $_, array $expectedFormName): void
284  {
285  $subject = new InlineStackProcessor();
286  $subject->initializeByParsingDomObjectIdString($string);
287  self::assertEquals($expectedFormName['form'], $subject->getCurrentStructureFormPrefix());
288  }
289 
294  public function ‪getCurrentStructureDomObjectIdPrefixReturnsExpectedStringAfterInitializationByStructureString(string $string, array $_, array $expectedFormName): void
295  {
296  $subject = new InlineStackProcessor();
297  $subject->initializeByParsingDomObjectIdString($string);
298  self::assertEquals($expectedFormName['object'], $subject->getCurrentStructureDomObjectIdPrefix('pageId'));
299  }
300 }
‪TYPO3\CMS\Backend\Tests\Unit\Form\InlineStackProcessorTest\getCurrentStructureFormPrefixReturnsExpectedStringAfterInitializationByStructureString
‪getCurrentStructureFormPrefixReturnsExpectedStringAfterInitializationByStructureString(string $string, array $_, array $expectedFormName)
Definition: InlineStackProcessorTest.php:281
‪TYPO3\CMS\Backend\Tests\Unit\Form\InlineStackProcessorTest\structureStringIsParsedDataProvider
‪structureStringIsParsedDataProvider()
Definition: InlineStackProcessorTest.php:46
‪TYPO3\CMS\Backend\Tests\Unit\Form\InlineStackProcessorTest\setUp
‪setUp()
Definition: InlineStackProcessorTest.php:35
‪TYPO3\CMS\Backend\Tests\Unit\Form\InlineStackProcessorTest\initializeByParsingDomObjectIdStringParsesStructureString
‪initializeByParsingDomObjectIdStringParsesStructureString(string $string, array $expectedInlineStructure, array $_)
Definition: InlineStackProcessorTest.php:269
‪TYPO3\CMS\Backend\Tests\Unit\Form\InlineStackProcessorTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: InlineStackProcessorTest.php:33
‪TYPO3\CMS\Backend\Tests\Unit\Form\InlineStackProcessorTest\getCurrentStructureDomObjectIdPrefixReturnsExpectedStringAfterInitializationByStructureString
‪getCurrentStructureDomObjectIdPrefixReturnsExpectedStringAfterInitializationByStructureString(string $string, array $_, array $expectedFormName)
Definition: InlineStackProcessorTest.php:292
‪TYPO3\CMS\Backend\Tests\Unit\Form\InlineStackProcessorTest
Definition: InlineStackProcessorTest.php:29
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Backend\Form\InlineStackProcessor
Definition: InlineStackProcessor.php:30
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Backend\Tests\Unit\Form