TYPO3 CMS  TYPO3_7-6
TypoScriptServiceTest.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
21 {
27  {
28  return [
29  'simple typoscript array' => [
30  'typoScriptSettings' => [
31  '10.' => [
32  'value' => 'Hello World!',
33  'foo.' => [
34  'bar' => 5
35  ]
36  ],
37  '10' => 'TEXT'
38  ],
39  'expectedSettings' => [
40  '10' => [
41  'value' => 'Hello World!',
42  'foo' => [
43  'bar' => 5
44  ],
45  '_typoScriptNodeValue' => 'TEXT'
46  ]
47  ]
48  ],
49  'typoscript with intermediate dots' => [
50  'typoScriptSettings' => [
51  '10.' => [
52  'value' => 'Hello World!',
53  'foo.' => [
54  'bar' => 5
55  ]
56  ],
57  '10' => 'TEXT'
58  ],
59  'expectedSettings' => [
60  '10' => [
61  'value' => 'Hello World!',
62  'foo' => [
63  'bar' => 5
64  ],
65  '_typoScriptNodeValue' => 'TEXT'
66  ]
67  ]
68  ],
69  'typoscript array with changed order' => [
70  'typoScriptSettings' => [
71  '10' => 'TEXT',
72  '10.' => [
73  'value' => 'Hello World!',
74  'foo.' => [
75  'bar' => 5
76  ]
77  ]
78  ],
79  'expectedSettings' => [
80  '10' => [
81  'value' => 'Hello World!',
82  'foo' => [
83  'bar' => 5
84  ],
85  '_typoScriptNodeValue' => 'TEXT'
86  ]
87  ]
88  ],
89  'nested typoscript array' => [
90  'typoScriptSettings' => [
91  '10' => 'COA',
92  '10.' => [
93  '10' => 'TEXT',
94  '10.' => [
95  'value' => 'Hello World!',
96  'foo.' => [
97  'bar' => 5
98  ]
99  ],
100  '20' => 'COA',
101  '20.' => [
102  '10' => 'TEXT',
103  '10.' => [
104  'value' => 'Test',
105  'wrap' => '[|]'
106  ],
107  '20' => 'TEXT',
108  '20.' => [
109  'value' => 'Test',
110  'wrap' => '[|]'
111  ]
112  ],
113  '30' => 'custom'
114  ]
115  ],
116  'expectedSettings' => [
117  '10' => [
118  '10' => [
119  'value' => 'Hello World!',
120  'foo' => [
121  'bar' => 5
122  ],
123  '_typoScriptNodeValue' => 'TEXT'
124  ],
125  '20' => [
126  '10' => [
127  'value' => 'Test',
128  'wrap' => '[|]',
129  '_typoScriptNodeValue' => 'TEXT'
130  ],
131  '20' => [
132  'value' => 'Test',
133  'wrap' => '[|]',
134  '_typoScriptNodeValue' => 'TEXT'
135  ],
136  '_typoScriptNodeValue' => 'COA'
137  ],
138  '30' => 'custom',
139  '_typoScriptNodeValue' => 'COA'
140  ]
141  ]
142  ],
143  ];
144  }
145 
153  {
154  $typoScriptService = new \TYPO3\CMS\Extbase\Service\TypoScriptService();
155  $processedSettings = $typoScriptService->convertTypoScriptArrayToPlainArray($typoScriptSettings);
156  $this->assertEquals($expectedSettings, $processedSettings);
157  }
158 
165  {
166  return [
167  'simple typoscript' => [
168  'extbaseTS' => [
169  '10' => [
170  'value' => 'Hallo',
171  '_typoScriptNodeValue' => 'TEXT'
172  ]
173  ],
174  'classic' => [
175  '10' => 'TEXT',
176  '10.' => [
177  'value' => 'Hallo'
178  ]
179  ]
180  ],
181  'typoscript with null value' => [
182  'extbaseTS' => [
183  '10' => [
184  'value' => 'Hallo',
185  '_typoScriptNodeValue' => 'TEXT'
186  ],
187  '20' => null
188  ],
189  'classic' => [
190  '10' => 'TEXT',
191  '10.' => [
192  'value' => 'Hallo'
193  ],
194  '20' => ''
195  ]
196  ],
197  'ts with dots in key' => [
198  'extbaseTS' => [
199  '1.0' => [
200  'value' => 'Hallo',
201  '_typoScriptNodeValue' => 'TEXT'
202  ]
203  ],
204  'classic' => [
205  '1.0' => 'TEXT',
206  '1.0.' => [
207  'value' => 'Hallo'
208  ]
209  ]
210  ],
211  'ts with backslashes in key' => [
212  'extbaseTS' => [
213  '1\\0\\' => [
214  'value' => 'Hallo',
215  '_typoScriptNodeValue' => 'TEXT'
216  ]
217  ],
218  'classic' => [
219  '1\\0\\' => 'TEXT',
220  '1\\0\\.' => [
221  'value' => 'Hallo'
222  ]
223  ]
224  ],
225  'bigger typoscript' => [
226  'extbaseTS' => [
227  '10' => [
228  '10' => [
229  'value' => 'Hello World!',
230  'foo' => [
231  'bar' => 5
232  ],
233  '_typoScriptNodeValue' => 'TEXT'
234  ],
235  '20' => [
236  '10' => [
237  'value' => 'Test',
238  'wrap' => '[|]',
239  '_typoScriptNodeValue' => 'TEXT'
240  ],
241  '20' => [
242  'value' => 'Test',
243  'wrap' => '[|]',
244  '_typoScriptNodeValue' => 'TEXT'
245  ],
246  '_typoScriptNodeValue' => 'COA'
247  ],
248  '_typoScriptNodeValue' => 'COA'
249  ]
250  ],
251  'classic' => [
252  '10' => 'COA',
253  '10.' => [
254  '10' => 'TEXT',
255  '10.' => [
256  'value' => 'Hello World!',
257  'foo.' => [
258  'bar' => 5
259  ]
260  ],
261  '20' => 'COA',
262  '20.' => [
263  '10' => 'TEXT',
264  '10.' => [
265  'value' => 'Test',
266  'wrap' => '[|]'
267  ],
268  '20' => 'TEXT',
269  '20.' => [
270  'value' => 'Test',
271  'wrap' => '[|]'
272  ]
273  ]
274  ]
275  ]
276  ],
277  ];
278  }
279 
286  public function convertPlainArrayToTypoScriptArray($extbaseTS, $classic)
287  {
288  $typoScriptService = new \TYPO3\CMS\Extbase\Service\TypoScriptService();
289  $converted = $typoScriptService->convertPlainArrayToTypoScriptArray($extbaseTS);
290  $this->assertEquals($converted, $classic);
291  }
292 }
convertTypoScriptArrayToPlainArrayRemovesTrailingDotsWithChangedOrderInTheTypoScriptArray($typoScriptSettings, $expectedSettings)