2 namespace TYPO3\CMS\Frontend\Tests\Unit\Page;
31 'sortby' =>
'sorting',
33 'versioningWS' =>
true,
34 'origUid' =>
't3_origuid',
35 'delete' =>
'deleted',
36 'enablecolumns' => array(
37 'disabled' =>
'hidden',
38 'starttime' =>
'starttime',
39 'endtime' =>
'endtime',
40 'fe_group' =>
'fe_group'
51 $GLOBALS[
'TYPO3_DB'] = $this->getMock(\TYPO3\CMS\Core\Database\DatabaseConnection::class, array(
'exec_SELECTquery',
'sql_fetch_assoc',
'sql_free_result',
'exec_SELECTgetSingleRow'));
52 $this->pageSelectObject = $this->getAccessibleMock(\TYPO3\CMS\Frontend\Page\PageRepository::class, array(
'getMultipleGroupsWhereClause'));
53 $this->pageSelectObject->expects($this->any())->method(
'getMultipleGroupsWhereClause')->will($this->returnValue(
' AND 1=1'));
64 $className = $this->getUniqueId(
'tx_coretest');
65 $getPageHookMock = $this->getMock(\TYPO3\CMS\Frontend\Page\PageRepositoryGetPageHookInterface::class, array(
'getPage_preProcess'), array(), $className);
67 $GLOBALS[
'T3_VAR'][
'getUserObj'][$className] = $getPageHookMock;
68 $GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
't3lib/class.t3lib_page.php'][
'getPage'][] = $className;
70 $getPageHookMock->expects($this->once())->method(
'getPage_preProcess')->will($this->returnCallback(array($this,
'isGetPagePreProcessCalledCallback')));
71 $this->pageSelectObject->getPage(42,
false);
79 list($uid, $disableGroupAccessCheck, $parent) = func_get_args();
80 $this->assertEquals(42, $uid);
81 $this->assertFalse($disableGroupAccessCheck);
82 $this->assertTrue($parent instanceof \TYPO3\CMS\Frontend\Page\PageRepository);
93 $this->assertEquals(
'', $this->pageSelectObject->getPathFromRootline(array()));
104 $this->assertEquals(
'http://www.example.com', $this->pageSelectObject->getExtURL(array(
105 'doktype' => \TYPO3\CMS\Frontend\Page\PageRepository::DOKTYPE_LINK,
107 'url' =>
'www.example.com'
116 $this->assertEquals(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv(
'TYPO3_SITE_URL') .
'hello/world/', $this->pageSelectObject->getExtURL(array(
117 'doktype' => \TYPO3\CMS\Frontend\Page\PageRepository::DOKTYPE_LINK,
119 'url' =>
'hello/world/'
132 $GLOBALS[
'TCA'][
'fake_table'][
'columns'] = array(
134 'l10n_mode' =>
'exclude',
135 'config' => array(
'type' =>
'input'),
137 'mergeIfNotBlank' => array(
138 'l10n_mode' =>
'mergeIfNotBlank',
139 'config' => array(
'type' =>
'input'),
141 'mergeIfNotBlank_group' => array(
142 'l10n_mode' =>
'mergeIfNotBlank',
143 'config' => array(
'type' =>
'group'),
147 'config' => array(
'type' =>
'input'),
150 'l10n_mode' =>
'noCopy',
151 'config' => array(
'type' =>
'input'),
153 'prefixLangTitle' => array(
154 'l10n_mode' =>
'prefixLangTitle',
155 'config' => array(
'type' =>
'input'),
159 $result = $this->pageSelectObject->_call(
'shouldFieldBeOverlaid', $table, $field, $value);
160 unset(
$GLOBALS[
'TCA'][
'fake_table']);
162 $this->assertSame($expected, $result, $comment);
171 array(
'default',
'fake_table',
'foobar',
true,
'default is to merge non-empty string'),
172 array(
'default',
'fake_table',
'',
true,
'default is to merge empty string'),
174 array(
'exclude',
'fake_table',
'',
false,
'exclude field with empty string'),
175 array(
'exclude',
'fake_table',
'foobar',
false,
'exclude field with non-empty string'),
177 array(
'mergeIfNotBlank',
'fake_table',
'',
false,
'mergeIfNotBlank is not merged with empty string'),
178 array(
'mergeIfNotBlank',
'fake_table', 0,
true,
'mergeIfNotBlank is merged with 0'),
179 array(
'mergeIfNotBlank',
'fake_table',
'0',
true,
'mergeIfNotBlank is merged with "0"'),
180 array(
'mergeIfNotBlank',
'fake_table',
'foobar',
true,
'mergeIfNotBlank is merged with non-empty string'),
182 array(
'mergeIfNotBlank_group',
'fake_table',
'',
false,
'mergeIfNotBlank on group is not merged empty string'),
183 array(
'mergeIfNotBlank_group',
'fake_table', 0,
false,
'mergeIfNotBlank on group is not merged with 0'),
184 array(
'mergeIfNotBlank_group',
'fake_table',
'0',
false,
'mergeIfNotBlank on group is not merged with "0"'),
185 array(
'mergeIfNotBlank_group',
'fake_table',
'foobar',
true,
'mergeIfNotBlank on group is merged with non-empty string'),
187 array(
'noCopy',
'fake_table',
'foobar',
true,
'noCopy is merged with non-empty string'),
188 array(
'noCopy',
'fake_table',
'',
true,
'noCopy is merged with empty string'),
190 array(
'prefixLangTitle',
'fake_table',
'foobar',
true,
'prefixLangTitle is merged with non-empty string'),
191 array(
'prefixLangTitle',
'fake_table',
'',
true,
'prefixLangTitle is merged with empty string'),
207 'pages' => $this->defaultTcaForPages
211 $this->pageSelectObject->versioningPreview =
false;
212 $this->pageSelectObject->versioningWorkspaceId = $wsid;
213 $this->pageSelectObject->init(
false);
216 $GLOBALS[
'TYPO3_DB']->expects($this->once())
217 ->method(
'exec_SELECTgetSingleRow')
223 $this->stringContains(
'(pages.t3ver_wsid=0 or pages.t3ver_wsid=' . $wsid .
')')
225 $this->stringContains(
'AND pages.t3ver_state<=0')
229 $this->pageSelectObject->getPage(1);
240 'pages' => $this->defaultTcaForPages
244 $this->pageSelectObject->versioningPreview =
true;
245 $this->pageSelectObject->versioningWorkspaceId = $wsid;
246 $this->pageSelectObject->init(
false);
249 $GLOBALS[
'TYPO3_DB']->expects($this->once())
250 ->method(
'exec_SELECTgetSingleRow')
254 $this->stringContains(
'(pages.t3ver_wsid=0 or pages.t3ver_wsid=' . $wsid .
')')
257 $this->pageSelectObject->getPage(1);
269 $table = $this->getUniqueId(
'aTable');
271 'pages' => $this->defaultTcaForPages,
274 'versioningWS' =>
true
279 $this->pageSelectObject->versioningPreview =
false;
280 $this->pageSelectObject->init(
false);
282 $conditions = $this->pageSelectObject->enableFields($table);
284 $this->assertThat($conditions, $this->stringContains(
' AND ' . $table .
'.t3ver_state<=0'),
'Versioning placeholders');
285 $this->assertThat($conditions, $this->stringContains(
' AND ' . $table .
'.pid<>-1'),
'Records from page -1');
293 $table = $this->getUniqueId(
'aTable');
295 'pages' => $this->defaultTcaForPages,
298 'versioningWS' =>
true
303 $this->pageSelectObject->versioningPreview =
true;
304 $this->pageSelectObject->init(
false);
306 $conditions = $this->pageSelectObject->enableFields($table);
308 $this->assertThat($conditions, $this->logicalNot($this->stringContains(
' AND ' . $table .
'.t3ver_state<=0')),
'No versioning placeholders');
309 $this->assertThat($conditions, $this->stringContains(
' AND ' . $table .
'.pid<>-1'),
'Records from page -1');
317 $table = $this->getUniqueId(
'aTable');
319 'pages' => $this->defaultTcaForPages,
322 'versioningWS' =>
true
327 $this->pageSelectObject->versioningPreview =
true;
328 $this->pageSelectObject->versioningWorkspaceId = 2;
329 $this->pageSelectObject->init(
false);
331 $conditions = $this->pageSelectObject->enableFields($table);
333 $this->assertThat($conditions, $this->stringContains(
' AND (' . $table .
'.t3ver_wsid=0 OR ' . $table .
'.t3ver_wsid=2)'),
'No versioning placeholders');
341 $table = $this->getUniqueId(
'aTable');
343 'pages' => $this->defaultTcaForPages,
346 'versioningWS' =>
true
351 $this->pageSelectObject->versioningPreview =
true;
352 $this->pageSelectObject->init(
false);
354 $conditions = $this->pageSelectObject->enableFields($table, -1, array(),
true);
356 $this->assertThat($conditions, $this->logicalNot($this->stringContains(
' AND ' . $table .
'.t3ver_state<=0')),
'No versioning placeholders');
357 $this->assertThat($conditions, $this->logicalNot($this->stringContains(
' AND ' . $table .
'.pid<>-1')),
'No ecords from page -1');