17 use Doctrine\DBAL\Driver\Statement;
18 use Prophecy\Argument;
27 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
47 protected function setUp()
61 $connectionPoolProphecy = $this->prophesize(ConnectionPool::class);
62 $queryRestrictionProphecy = $this->prophesize(QueryRestrictionContainerInterface::class);
63 $queryBuilderProphecy = $this->prophesize(QueryBuilder::class);
64 $expressionBuilderProphecy = $this->prophesize(ExpressionBuilder::class);
65 $statementProphecy = $this->prophesize(Statement::class);
67 $expressionBuilderProphecy->eq(Argument::cetera())->willReturn(
'1=1');
70 $connectionPoolProphecy->getQueryBuilderForTable(Argument::cetera())
72 ->willReturn($queryBuilderProphecy->reveal());
73 $queryRestrictionProphecy->removeAll()
75 ->willReturn($queryRestrictionProphecy->reveal());
76 $queryBuilderProphecy->getRestrictions()
78 ->willReturn($queryRestrictionProphecy->reveal());
79 $queryBuilderProphecy->expr()
81 ->willReturn($expressionBuilderProphecy->reveal());
82 $queryBuilderProphecy->execute()
84 ->willReturn($statementProphecy->reveal());
86 $queryBuilderProphecy->select(Argument::cetera())
88 ->willReturn($queryBuilderProphecy->reveal());
89 $queryBuilderProphecy->from(Argument::cetera())
91 ->willReturn($queryBuilderProphecy->reveal());
92 $queryBuilderProphecy->createNamedParameter(Argument::cetera())
94 ->willReturnArgument(0);
95 $queryBuilderProphecy->where(Argument::cetera())
97 ->willReturn($queryBuilderProphecy->reveal());
98 $queryBuilderProphecy->setMaxResults(Argument::cetera())
100 ->willReturn($queryBuilderProphecy->reveal());
102 $statementProphecy->fetch()
104 ->willReturn([
'uid' => 0,
'parent' =>
'']);
107 for ($i = 1; $i <= $instanceCount; $i++) {
108 GeneralUtility::addInstance(ConnectionPool::class, $connectionPoolProphecy->reveal());
111 return $queryBuilderProphecy;
119 $this->subject = $this->getAccessibleMock(DatabaseTreeDataProvider::class, $mockMethods, [],
'',
false);
120 $this->subject->expects($this->any())->method(
'getRootUid')->will($this->returnValue(0));
121 $this->subject->_set(
'treeData', $this->treeData);
130 $this->subject->_set(
'levelMaximum', 0);
131 $this->subject->expects($this->never())->method(
'getChildrenOf');
132 $this->subject->_call(
'loadTreeData');
141 $this->subject->_set(
'levelMaximum', 1);
142 $this->subject->expects($this->once())->method(
'getChildrenOf')->with($this->treeData, 1);
143 $this->subject->_call(
'loadTreeData');
154 $expectedTreeNode->setId(1);
156 $expectedStorage->append($expectedTreeNode);
159 $this->subject->_set(
'levelMaximum', 1);
160 $this->subject->expects($this->once())->method(
'getRelatedRecords')->will($this->returnValue([1]));
161 $storage = $this->subject->_call(
'getChildrenOf', $this->treeData, 1);
163 $this->assertEquals($expectedStorage, $storage);
175 $expectedFirstLevelTreeNode =
new TreeNode();
176 $expectedFirstLevelTreeNode->setId(1);
178 $expectedSecondLevelTreeNode =
new TreeNode();
179 $expectedSecondLevelTreeNode->setId(2);
182 $expectedStorageOfSecondLevelChildren->append($expectedSecondLevelTreeNode);
184 $expectedFirstLevelTreeNode->setChildNodes($expectedStorageOfSecondLevelChildren);
185 $expectedStorage->append($expectedFirstLevelTreeNode);
188 $this->subject->_set(
'levelMaximum', 2);
189 $this->subject->expects($this->at(0))->method(
'getRelatedRecords')->will($this->returnValue([1]));
190 $this->subject->expects($this->at(1))->method(
'getRelatedRecords')->will($this->returnValue([2]));
191 $storage = $this->subject->_call(
'getChildrenOf', $this->treeData, 1);
193 $this->assertEquals($expectedStorage, $storage);