17 use Doctrine\DBAL\Driver\Statement;
18 use Prophecy\Argument;
19 use Prophecy\Prophecy\ObjectProphecy;
33 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
55 $connectionProphet = $this->prophesize(Connection::class);
56 $connectionProphet->quote(Argument::cetera())->will(
function ($arguments) {
57 return "'" . $arguments[0] .
"'";
59 $connectionProphet->quoteIdentifier(Argument::cetera())->will(
function ($arguments) {
60 return '`' . $arguments[0] .
'`';
64 $statementProphet = $this->prophesize(Statement::class);
65 $statementProphet->fetch()->shouldBeCalled();
67 $restrictionProphet = $this->prophesize(DefaultRestrictionContainer::class);
68 $restrictionProphet->removeAll()->willReturn($restrictionProphet->reveal());
69 $restrictionProphet->add(Argument::cetera())->willReturn($restrictionProphet->reveal());
71 $queryBuilderProphet = $this->prophesize(QueryBuilder::class);
72 $queryBuilderProphet->expr()->willReturn(
73 GeneralUtility::makeInstance(ExpressionBuilder::class, $connectionProphet->reveal())
75 $queryBuilderProphet->getRestrictions()->willReturn($restrictionProphet->reveal());
76 $queryBuilderProphet->quoteIdentifier(Argument::cetera())->will(
function ($arguments) {
77 return '`' . $arguments[0] .
'`';
80 $connectionPoolProphet = $this->prophesize(ConnectionPool::class);
81 $connectionPoolProphet->getConnectionForTable(
'foreignTable')
82 ->willReturn($connectionProphet->reveal());
83 $connectionPoolProphet->getQueryBuilderForTable(
'foreignTable')
85 ->willReturn($queryBuilderProphet->reveal());
87 $queryBuilderProphet->select(
'foreignTable.uid')
89 ->willReturn($queryBuilderProphet->reveal());
90 $queryBuilderProphet->from(
'foreignTable')
92 ->willReturn($queryBuilderProphet->reveal());
93 $queryBuilderProphet->from(
'pages')
95 ->willReturn($queryBuilderProphet->reveal());
96 $queryBuilderProphet->where(
'')
98 ->willReturn($queryBuilderProphet->reveal());
99 $queryBuilderProphet->andWhere(
' 1=1')
101 ->willReturn($queryBuilderProphet->reveal());
102 $queryBuilderProphet->andWhere(
'`pages.uid` = `foreignTable.pid`')
104 ->willReturn($queryBuilderProphet->reveal());
105 $queryBuilderProphet->execute()
107 ->willReturn($statementProphet->reveal());
110 GeneralUtility::addInstance(ConnectionPool::class, $connectionPoolProphet->reveal());
111 GeneralUtility::addInstance(ConnectionPool::class, $connectionPoolProphet->reveal());
121 $iconFactoryProphecy = $this->prophesize(IconFactory::class);
122 GeneralUtility::addInstance(IconFactory::class, $iconFactoryProphecy->reveal());
123 GeneralUtility::addInstance(IconFactory::class, $iconFactoryProphecy->reveal());
125 $fileRepositoryProphecy = $this->prophesize(FileRepository::class);
126 $fileRepositoryProphecy->findByRelation(Argument::cetera())->shouldNotBeCalled();
127 GeneralUtility::setSingletonInstance(FileRepository::class, $fileRepositoryProphecy->reveal());
130 $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
131 $GLOBALS[
'BE_USER'] = $backendUserProphecy->reveal();
132 $backendUserProphecy->getPagePermsClause(Argument::cetera())->willReturn(
' 1=1');
134 $languageService = $this->prophesize(LanguageService::class);
135 $GLOBALS[
'LANG'] = $languageService->reveal();
136 $languageService->sL(Argument::cetera())->willReturnArgument(0);
141 $treeDataProviderProphecy = $this->prophesize(DatabaseTreeDataProvider::class);
142 GeneralUtility::addInstance(DatabaseTreeDataProvider::class, $treeDataProviderProphecy->reveal());
145 $tableConfigurationTreeProphecy = $this->prophesize(TableConfigurationTree::class);
146 GeneralUtility::addInstance(TableConfigurationTree::class, $tableConfigurationTreeProphecy->reveal());
147 $tableConfigurationTreeProphecy->setDataProvider(Argument::cetera())->shouldBeCalled();
148 $tableConfigurationTreeProphecy->setNodeRenderer(Argument::cetera())->shouldBeCalled();
149 $tableConfigurationTreeProphecy->render()->shouldBeCalled()->willReturn([
'fake',
'tree',
'data']);
152 'tableName' =>
'aTable',
153 'effectivePid' => 42,
163 'renderType' =>
'selectTree',
165 'childrenField' =>
'childrenField'
167 'foreign_table' =>
'foreignTable',
174 'selectTreeCompileItems' =>
true,
178 $expected[
'databaseRow'][
'aField'] = [
'1'];
179 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'items'] = [
180 'fake',
'tree',
'data',
192 $iconFactoryProphecy = $this->prophesize(IconFactory::class);
193 GeneralUtility::addInstance(IconFactory::class, $iconFactoryProphecy->reveal());
194 GeneralUtility::addInstance(IconFactory::class, $iconFactoryProphecy->reveal());
196 $fileRepositoryProphecy = $this->prophesize(FileRepository::class);
197 $fileRepositoryProphecy->findByRelation(Argument::cetera())->shouldNotBeCalled();
198 GeneralUtility::setSingletonInstance(FileRepository::class, $fileRepositoryProphecy->reveal());
201 $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
202 $GLOBALS[
'BE_USER'] = $backendUserProphecy->reveal();
203 $backendUserProphecy->getPagePermsClause(Argument::cetera())->willReturn(
' 1=1');
205 $languageService = $this->prophesize(LanguageService::class);
206 $GLOBALS[
'LANG'] = $languageService->reveal();
207 $languageService->sL(Argument::cetera())->willReturnArgument(0);
212 $treeDataProviderProphecy = $this->prophesize(DatabaseTreeDataProvider::class);
213 GeneralUtility::addInstance(DatabaseTreeDataProvider::class, $treeDataProviderProphecy->reveal());
216 $tableConfigurationTreeProphecy = $this->prophesize(TableConfigurationTree::class);
217 GeneralUtility::addInstance(TableConfigurationTree::class, $tableConfigurationTreeProphecy->reveal());
218 $tableConfigurationTreeProphecy->render()->willReturn([]);
219 $tableConfigurationTreeProphecy->setDataProvider(Argument::cetera())->shouldBeCalled();
220 $tableConfigurationTreeProphecy->setNodeRenderer(Argument::cetera())->shouldBeCalled();
223 'tableName' =>
'aTable',
224 'effectivePid' => 42,
234 'renderType' =>
'selectTree',
236 'childrenField' =>
'childrenField'
238 'foreign_table' =>
'foreignTable',
255 'nonSelectableLevels' =>
'0,1',
263 'selectTreeCompileItems' =>
true,
268 $treeDataProviderProphecy->setRootUid(42)->shouldHaveBeenCalled();
269 $treeDataProviderProphecy->setExpandAll(
true)->shouldHaveBeenCalled();
270 $treeDataProviderProphecy->setLevelMaximum(4)->shouldHaveBeenCalled();
271 $treeDataProviderProphecy->setNonSelectableLevelList(
'0,1')->shouldHaveBeenCalled();