2 declare(strict_types = 1);
18 use Prophecy\Argument;
31 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
48 $mockController = $this->getAccessibleMock(FormManagerController::class, [
52 $formPersistenceManagerProphecy = $this->prophesize(FormPersistenceManager::class);
54 $mockStorage = $this->getMockBuilder(ResourceStorage::class)
55 ->disableOriginalConstructor()
57 $mockController->_set(
'formPersistenceManager', $formPersistenceManagerProphecy->reveal());
59 $mockController->_set(
'formSettings', [
60 'persistenceManager' => [
61 'allowSaveToExtensionPaths' =>
true,
65 $folder1 =
new Folder($mockStorage,
'/user_upload/',
'user_upload');
66 $folder2 =
new Folder($mockStorage,
'/forms/',
'forms');
68 $formPersistenceManagerProphecy->getAccessibleFormStorageFolders(Argument::cetera())->willReturn([
69 '1:/user_upload/' => $folder1,
70 '2:/forms/' => $folder2,
73 $formPersistenceManagerProphecy->getAccessibleExtensionFolders(Argument::cetera())->willReturn([
74 'EXT:form/Resources/Forms/' =>
'/some/path/form/Resources/Forms/',
75 'EXT:form_additions/Resources/Forms/' =>
'/some/path/form_additions/Resources/Forms/',
80 'label' =>
'user_upload',
81 'value' =>
'1:/user_upload/',
85 'value' =>
'2:/forms/',
88 'label' =>
'EXT:form/Resources/Forms/',
89 'value' =>
'EXT:form/Resources/Forms/',
92 'label' =>
'EXT:form_additions/Resources/Forms/',
93 'value' =>
'EXT:form_additions/Resources/Forms/',
97 $this->assertSame($expected, $mockController->_call(
'getAccessibleFormStorageFolders'));
105 $objectManagerProphecy = $this->prophesize(ObjectManager::class);
106 GeneralUtility::setSingletonInstance(ObjectManager::class, $objectManagerProphecy->reveal());
108 $mockTranslationService = $this->getAccessibleMock(TranslationService::class, [
109 'translateValuesRecursive'
112 $mockTranslationService
113 ->expects($this->any())
114 ->method(
'translateValuesRecursive')
115 ->willReturnArgument(0);
117 $objectManagerProphecy
118 ->get(TranslationService::class)
119 ->willReturn($mockTranslationService);
121 $mockController = $this->getAccessibleMock(FormManagerController::class, [
122 'getAccessibleFormStorageFolders'
125 $mockUriBuilder = $this->createMock(UriBuilder::class);
126 $mockControllerContext = $this->createMock(ControllerContext::class);
127 $mockControllerContext
128 ->expects($this->any())
129 ->method(
'getUriBuilder')
130 ->will($this->returnValue($mockUriBuilder));
132 $mockController->_set(
'controllerContext', $mockControllerContext);
134 $mockController->_set(
'formSettings', [
136 'selectablePrototypesConfiguration' => [],
140 $mockUriBuilder->expects($this->any())->method(
'uriFor')->willReturn(
141 '/typo3/index.php?some=param'
145 ->expects($this->any())
146 ->method(
'getAccessibleFormStorageFolders')
149 'label' =>
'user_upload',
150 'value' =>
'1:/user_upload/',
155 'selectablePrototypesConfiguration' => [],
156 'accessibleFormStorageFolders' => [
158 'label' =>
'user_upload',
159 'value' =>
'1:/user_upload/',
163 'create' =>
'/typo3/index.php?some=param',
164 'duplicate' =>
'/typo3/index.php?some=param',
165 'delete' =>
'/typo3/index.php?some=param',
166 'references' =>
'/typo3/index.php?some=param',
170 $this->assertSame(json_encode($expected), $mockController->_call(
'getFormManagerAppInitialData'));
178 $mockController = $this->getAccessibleMock(FormManagerController::class, [
182 $formPersistenceManagerProphecy = $this->prophesize(FormPersistenceManager::class);
183 $mockController->_set(
'formPersistenceManager', $formPersistenceManagerProphecy->reveal());
185 $databaseService = $this->prophesize(DatabaseService::class);
186 $mockController->_set(
'databaseService', $databaseService->reveal());
188 $formPersistenceManagerProphecy->listForms(Argument::cetera())->willReturn([
190 'identifier' =>
'ext-form-identifier',
191 'name' =>
'some name',
192 'persistenceIdentifier' =>
'1:/user_uploads/someFormName.yaml',
195 'location' =>
'storage',
196 'duplicateIdentifier' =>
false,
200 $databaseService->getAllReferencesForFileUid(Argument::cetera())->willReturn([
204 $databaseService->getAllReferencesForPersistenceIdentifier(Argument::cetera())->willReturn([
205 '1:/user_uploads/someFormName.yaml' => 2,
210 'identifier' =>
'ext-form-identifier',
211 'name' =>
'some name',
212 'persistenceIdentifier' =>
'1:/user_uploads/someFormName.yaml',
215 'location' =>
'storage',
216 'duplicateIdentifier' =>
false,
217 'referenceCount' => 2,
221 $this->assertSame($expected, $mockController->_call(
'getAvailableFormDefinitions'));
229 $this->expectException(\InvalidArgumentException::class);
230 $this->expectExceptionCode(1477071939);
232 $mockController = $this->getAccessibleMock(FormManagerController::class, [
236 $mockController->_call(
'getProcessedReferencesRows',
'');
244 $iconFactoryProphecy = $this->prophesize(IconFactory::class);
245 GeneralUtility::addInstance(IconFactory::class, $iconFactoryProphecy->reveal());
246 $iconProphecy = $this->prophesize(Icon::class);
247 $iconFactoryProphecy->getIconForRecord(Argument::cetera())->willReturn($iconProphecy->reveal());
248 $iconProphecy->render()->shouldBeCalled()->willReturn(
'');
250 $mockController = $this->getAccessibleMock(FormManagerController::class, [
256 $databaseService = $this->prophesize(DatabaseService::class);
257 $mockController->_set(
'databaseService', $databaseService->reveal());
259 $databaseService->getReferencesByPersistenceIdentifier(Argument::cetera())->willReturn([
261 'tablename' =>
'tt_content',
267 ->expects($this->any())
268 ->method(
'getModuleUrl')
269 ->willReturn(
'/typo3/index.php?some=param');
272 ->expects($this->any())
273 ->method(
'getRecord')
274 ->willReturn([
'uid' => 1,
'pid' => 0 ]);
277 ->expects($this->any())
278 ->method(
'getRecordTitle')
279 ->willReturn(
'record title');
283 'recordPageTitle' =>
'record title',
284 'recordTitle' =>
'record title',
287 'recordEditUrl' =>
'/typo3/index.php?some=param',
291 $this->assertSame($expected, $mockController->_call(
'getProcessedReferencesRows',
'fake'));
299 $mockController = $this->getAccessibleMock(FormManagerController::class, [
303 $mockController->_set(
'formSettings', [
305 'selectablePrototypesConfiguration' => [
307 'identifier' =>
'standard',
308 'label' =>
'some label',
309 'newFormTemplates' => [
311 'templatePath' =>
'EXT:form/Tests/Unit/Controller/Fixtures/BlankForm.yaml',
312 'label' =>
'some label',
315 'templatePath' =>
'EXT:form/Tests/Unit/Controller/Fixtures/SimpleContactForm.yaml',
316 'label' =>
'some other label',
324 $this->assertTrue($mockController->_call(
'isValidTemplatePath',
'standard',
'EXT:form/Tests/Unit/Controller/Fixtures/SimpleContactForm.yaml'));
332 $mockController = $this->getAccessibleMock(FormManagerController::class, [
336 $mockController->_set(
'formSettings', [
338 'selectablePrototypesConfiguration' => [
340 'identifier' =>
'standard',
341 'label' =>
'some label',
342 'newFormTemplates' => [
344 'templatePath' =>
'EXT:form/Tests/Unit/Controller/Fixtures/BlankForm.yaml',
345 'label' =>
'some label',
348 'templatePath' =>
'EXT:form/Tests/Unit/Controller/Fixtures/SimpleContactForm.yaml',
349 'label' =>
'some other label',
357 $this->assertFalse($mockController->_call(
'isValidTemplatePath',
'standard',
'EXT:form/Tests/Unit/Controller/Fixtures/NonExistingForm.yaml'));
365 $mockController = $this->getAccessibleMock(FormManagerController::class, [
369 $mockController->_set(
'formSettings', [
371 'selectablePrototypesConfiguration' => [
373 'identifier' =>
'standard',
374 'label' =>
'some label',
375 'newFormTemplates' => [
377 'templatePath' =>
'EXT:form/Tests/Unit/Controller/Fixtures/BlankForm.yaml',
378 'label' =>
'some label',
381 'templatePath' =>
'EXT:form/Tests/Unit/Controller/Fixtures/SimpleContactForm.yaml',
382 'label' =>
'some other label',
387 'identifier' =>
'other',
388 'label' =>
'some label',
389 'newFormTemplates' => [
391 'templatePath' =>
'EXT:form/Tests/Unit/Controller/Fixtures/BlankForm.yaml',
392 'label' =>
'some label',
400 $this->assertFalse($mockController->_call(
'isValidTemplatePath',
'other',
'EXT:form/Tests/Unit/Controller/Fixtures/SimpleContactForm.yaml'));
408 $mockController = $this->getAccessibleMock(FormManagerController::class, [
412 $input =
'test form';
413 $expected =
'testform';
414 $this->assertSame($expected, $mockController->_call(
'convertFormNameToIdentifier', $input));
422 $mockController = $this->getAccessibleMock(FormManagerController::class, [
427 $expected =
'testform';
428 $this->assertSame($expected, $mockController->_call(
'convertFormNameToIdentifier', $input));
436 $mockController = $this->getAccessibleMock(FormManagerController::class, [
440 $input =
'test form ä#!_-01';
441 $expected =
'testformae_-01';
442 $this->assertSame($expected, $mockController->_call(
'convertFormNameToIdentifier', $input));