17 use Doctrine\DBAL\Driver\Statement;
18 use Prophecy\Argument;
28 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
53 'isFrontendEnvironment' => [
true],
54 'isBackendEnvironment' => [
false],
64 $mockValueObject = $this->getMockBuilder(\
TYPO3\CMS\
Extbase\DomainObject\AbstractValueObject::class)
65 ->setMethods([
'_getProperties'])
66 ->disableOriginalConstructor()
68 $mockValueObject->expects($this->once())->method(
'_getProperties')
69 ->will($this->returnValue([
'propertyName' =>
'propertyValue']));
70 $mockColumnMap = $this->getMockBuilder(\
TYPO3\CMS\
Extbase\Persistence\Generic\Mapper\DataMap::class)
71 ->setMethods([
'isPersistableProperty',
'getColumnName'])
72 ->disableOriginalConstructor()
74 $mockColumnMap->expects($this->any())->method(
'getColumnName')->will($this->returnValue(
'column_name'));
75 $tableName =
'tx_foo_table';
76 $mockDataMap = $this->getMockBuilder(\
TYPO3\CMS\
Extbase\Persistence\Generic\Mapper\DataMap::class)
77 ->setMethods([
'isPersistableProperty',
'getColumnMap',
'getTableName'])
78 ->disableOriginalConstructor()
80 $mockDataMap->expects($this->any())->method(
'isPersistableProperty')->will($this->returnValue(
true));
81 $mockDataMap->expects($this->any())->method(
'getColumnMap')->will($this->returnValue($mockColumnMap));
82 $mockDataMap->expects($this->any())->method(
'getTableName')->will($this->returnValue($tableName));
83 $mockDataMapper = $this->getMockBuilder(\
TYPO3\CMS\
Extbase\Persistence\Generic\Mapper\DataMapper::class)
84 ->setMethods([
'getDataMap',
'getPlainValue'])
85 ->disableOriginalConstructor()
87 $mockDataMapper->expects($this->once())->method(
'getDataMap')
88 ->will($this->returnValue($mockDataMap));
89 $mockDataMapper->expects($this->once())->method(
'getPlainValue')
90 ->will($this->returnValue(
'plainPropertyValue'));
93 $expressionBuilderProphet = $this->prophesize(ExpressionBuilder::class);
94 $expressionBuilderProphet->eq(Argument::cetera())->willReturn(
'1 = 1');
95 $queryResultProphet = $this->prophesize(Statement::class);
96 $queryResultProphet->fetchColumn(Argument::cetera())->willReturn($expectedUid);
97 $queryBuilderProphet = $this->prophesize(QueryBuilder::class);
98 $queryBuilderProphet->execute()->willReturn($queryResultProphet->reveal());
99 $queryBuilderProphet->expr()->willReturn($expressionBuilderProphet->reveal());
100 $queryBuilderProphet->createNamedParameter(Argument::cetera())->willReturnArgument(0);
101 $queryBuilderProphet->select(
'uid')->willReturn($queryBuilderProphet->reveal());
102 $queryBuilderProphet->from($tableName)->willReturn($queryBuilderProphet->reveal());
103 $queryBuilderProphet->where(Argument::cetera())->willReturn($queryBuilderProphet->reveal());
104 $connectionPoolProphet = $this->prophesize(ConnectionPool::class);
105 $connectionPoolProphet->getQueryBuilderForTable(Argument::cetera())->willReturn($queryBuilderProphet->reveal());
107 $environmentServiceProphet = $this->prophesize(EnvironmentService::class);
108 $environmentServiceProphet->isEnvironmentInFrontendMode()->willReturn($isFrontendEnvironment);
110 if ($isFrontendEnvironment) {
111 $queryBuilderProphet->setRestrictions(Argument::type(FrontendRestrictionContainer::class))
115 $mockTypo3DbBackend = $this->getAccessibleMock(
116 \
TYPO3\CMS\
Extbase\Persistence\Generic\Storage\Typo3DbBackend::class,
122 $mockObjectManager = $this->createMock(ObjectManager::class);
123 $mockObjectManager->expects($this->any())
125 ->with(\
TYPO3\CMS\
Extbase\Persistence\Generic\Mapper\DataMapper::class)
126 ->will($this->returnValue($mockDataMapper));
128 $mockTypo3DbBackend->_set(
'objectManager', $mockObjectManager);
129 $mockTypo3DbBackend->_set(
'dataMapper', $mockDataMapper);
130 $mockTypo3DbBackend->_set(
'connectionPool', $connectionPoolProphet->reveal());
131 $mockTypo3DbBackend->_set(
'environmentService', $environmentServiceProphet->reveal());
132 $result = $mockTypo3DbBackend->_callRef(
'getUidOfAlreadyPersistedValueObject', $mockValueObject);
133 $this->assertSame($expectedUid, $result);
151 $workspaceVersion = [
156 $mockQuerySettings = $this->getMockBuilder(\
TYPO3\CMS\
Extbase\Persistence\Generic\Typo3QuerySettings::class)
157 ->setMethods([
'dummy'])
158 ->disableOriginalConstructor()
163 $objectManagerMock = $this->getMockBuilder(ObjectManager::class)
164 ->disableOriginalConstructor()
166 $sourceMock = new \TYPO3\CMS\Extbase\Persistence\Generic\Qom\Selector(
'tx_foo',
'Tx_Foo');
167 $context =
new Context([
168 'workspace' =>
new WorkspaceAspect($workspaceUid)
171 $pageRepositoryMock = $this->getMockBuilder(PageRepository::class)
172 ->setMethods([
'movePlhOL',
'getWorkspaceVersionOfRecord'])
173 ->setConstructorArgs([$context])
175 $pageRepositoryMock->expects($this->once())->method(
'getWorkspaceVersionOfRecord')->with($workspaceUid,
'tx_foo',
'42')->will($this->returnValue($workspaceVersion));
176 $objectManagerMock->expects($this->at(0))->method(
'get')->with(Context::class)->willReturn($context);
177 $objectManagerMock->expects($this->at(1))->method(
'get')->with(PageRepository::class, $context)->willReturn($pageRepositoryMock);
178 $mockTypo3DbBackend = $this->getAccessibleMock(\
TYPO3\CMS\
Extbase\Persistence\Generic\Storage\Typo3DbBackend::class, [
'dummy'], [],
'',
false);
179 $mockTypo3DbBackend->injectObjectManager($objectManagerMock);
180 $this->assertSame([$comparisonRow], $mockTypo3DbBackend->_call(
'doLanguageAndWorkspaceOverlay', $sourceMock, [$row], $mockQuerySettings));