TYPO3 CMS  TYPO3_7-6
FormInlineAjaxControllerTest.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 
20 
25 {
32  {
33  $selectorData = [];
34  $fileData['extension'] = 'png';
35  $mockObject = $this->getAccessibleMock(FormInlineAjaxController::class, ['dummy'], [], '', false);
36  $mayUploadFile = $mockObject->_call('checkInlineFileTypeAccessForField', $selectorData, $fileData);
37  $this->assertTrue($mayUploadFile);
38  }
39 
46  {
47  $selectorData['PA']['fieldConf']['config']['appearance']['elementBrowserAllowed'] = 'doc, png, jpg, tiff';
48  $fileData['extension'] = 'php';
49  $mockObject = $this->getAccessibleMock(FormInlineAjaxController::class, ['dummy'], [], '', false);
50  $mayUploadFile = $mockObject->_call('checkInlineFileTypeAccessForField', $selectorData, $fileData);
51  $this->assertFalse($mayUploadFile);
52  }
53 
59  {
60  $selectorData['PA']['fieldConf']['config']['appearance']['elementBrowserAllowed'] = 'doc, png, jpg, tiff';
61  $fileData['extension'] = 'png';
62  $mockObject = $this->getAccessibleMock(FormInlineAjaxController::class, ['dummy'], [], '', false);
63  $mayUploadFile = $mockObject->_call('checkInlineFileTypeAccessForField', $selectorData, $fileData);
64  $this->assertTrue($mayUploadFile);
65  }
66 
75  public function splitDomObjectIdResolvesTablenameCorrectly($dataStructure, $expectedTableName)
76  {
77  $mock = $this->getAccessibleMock(FormInlineAjaxController::class, ['dummy'], [], '', false);
78  $result = $mock->_call('splitDomObjectId', $dataStructure);
79  $this->assertSame($expectedTableName, $result[1]);
80  }
81 
86  {
87  return [
88  'news new' => [
89  'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file',
90  'tx_news_domain_model_file'
91  ],
92  'load existing child' => [
93  'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child-4',
94  'tx_styleguide_flex_flex_3_inline_1_child'
95  ],
96  'create new child' => [
97  'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child',
98  'tx_styleguide_flex_flex_3_inline_1_child'
99  ],
100  'insert new after' => [
101  'data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-6',
102  'tx_news_domain_model_file'
103  ],
104  'fal simple' => [
105  'data-336-tt_content-998-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference-837',
106  'sys_file_reference'
107  ],
108  'fal down deep' => [
109  'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference',
110  'sys_file_reference'
111  ],
112  'new record after others' => ['data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-NEW5757f36287214984252204', 'tx_news_domain_model_file'],
113  ];
114  }
115 
126  public function splitDomObjectIdResolvesFlexformPathCorrectly($dataStructure, $expectedFlexformPath)
127  {
128  $mock = $this->getAccessibleMock(FormInlineAjaxController::class, ['dummy'], [], '', false);
129  $result = $mock->_call('splitDomObjectId', $dataStructure);
130  $this->assertSame($expectedFlexformPath, $result[0]);
131  }
132 
137  {
138  return [
139  'news new' => [
140  'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file',
141  'sheet.tabGeneral:lDEF:settings.related_files:vDEF'
142  ],
143  'load existing child' => [
144  'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child-4',
145  'sInline:lDEF:inline_1:vDEF'
146  ],
147  'create new child' => [
148  'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child',
149  'sInline:lDEF:inline_1:vDEF'
150  ],
151  'insert new after' => [
152  'data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-6',
153  'sheet.tabGeneral:lDEF:settings.related_files:vDEF'
154  ],
155  'fal simple' => [
156  'data-336-tt_content-998-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference-837',
157  'sheet.tabGeneral:lDEF:settings.image:vDEF'
158  ],
159  'fal down deep' => [
160  'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference',
161  'sheet.tabGeneral:lDEF:settings.image:vDEF'
162  ],
163  'new record after others' => [
164  'data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-NEW5757f36287214984252204',
165  'sheet.tabGeneral:lDEF:settings.related_files:vDEF'
166  ],
167  ];
168  }
169 
177  {
178  $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
179  $backendUserProphecy->uc = [];
180  $backendUser = $backendUserProphecy->reveal();
181 
182  $mockObject = $this->getAccessibleMock(
183  FormInlineAjaxController::class,
184  ['getBackendUserAuthentication'],
185  [],
186  '',
187  false
188  );
189  $mockObject->method('getBackendUserAuthentication')->willReturn($backendUser);
190  $result = $mockObject->_call('getInlineExpandCollapseStateArray');
191 
192  $this->assertEmpty($result);
193  }
194 
202  {
203  $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
204  $backendUserProphecy->uc = ['inlineView' => serialize(['foo' => 'bar'])];
205  $backendUser = $backendUserProphecy->reveal();
206 
207  $mockObject = $this->getAccessibleMock(
208  FormInlineAjaxController::class,
209  ['getBackendUserAuthentication'],
210  [],
211  '',
212  false
213  );
214  $mockObject->method('getBackendUserAuthentication')->willReturn($backendUser);
215  $result = $mockObject->_call('getInlineExpandCollapseStateArray');
216 
217  $this->assertNotEmpty($result);
218  }
219 }
getAccessibleMock( $originalClassName, $methods=[], array $arguments=[], $mockClassName='', $callOriginalConstructor=true, $callOriginalClone=true, $callAutoload=true)