From d5ff018aaa062ff273110c291e26430a1b604b01 Mon Sep 17 00:00:00 2001 From: Susanne Moog <typo3@susannemoog.de> Date: Sat, 30 Jun 2012 16:54:11 +0200 Subject: [PATCH] [BUGFIX] Page tree unit test fails if pages don't exist The unit test getNodesSetsIsMountPointField fails if the pages with uid 1, 2, 3 are not available. Instead of relying on user dependent data, we should mock it. The patch introduces a wrapper method for getRecordWSOL to be able to mock that method and changes the test to do that. Change-Id: I36ec23a47bd39821595e787fba1cb8b77e2c3b0c Fixes: #38503 Releases: 6.0, 4.7 Reviewed-on: http://review.typo3.org/12478 Reviewed-by: Christian Kuhn Tested-by: Christian Kuhn --- ...class.t3lib_tree_pagetree_dataprovider.php | 20 +++++++++++++--- ...s.t3lib_tree_pagetree_dataproviderTest.php | 24 ++++++++++++++++++- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataprovider.php b/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataprovider.php index 016e68ccd847..2cc25d38b256 100644 --- a/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataprovider.php +++ b/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataprovider.php @@ -148,10 +148,12 @@ class t3lib_tree_pagetree_DataProvider extends t3lib_tree_AbstractDataProvider { continue; } - // must be calculated above getRecordWSOL, because the information is lost otherwise + // must be calculated above getRecordWithWorkspaceOverlay, + // because the information is lost otherwise $isMountPoint = ($subpage['isMountPoint'] === TRUE); - $subpage = t3lib_befunc::getRecordWSOL('pages', $subpage['uid'], '*', '', TRUE, TRUE); + $subpage = $this->getRecordWithWorkspaceOverlay($subpage['uid'], TRUE); + if (!$subpage) { continue; } @@ -179,6 +181,18 @@ class t3lib_tree_pagetree_DataProvider extends t3lib_tree_AbstractDataProvider { return $nodeCollection; } + /** + * Wrapper method for t3lib_befunc::getRecordWSOL + * + * @param integer $uid The page id + * @param boolean $unsetMovePointers Whether to unset move pointers + * @return array + */ + protected function getRecordWithWorkspaceOverlay($uid, $unsetMovePointers = FALSE) { + $subpage = t3lib_befunc::getRecordWSOL('pages', $uid, '*', '', TRUE, $unsetMovePointers); + return $subpage; + } + /** * Returns a node collection of filtered nodes * @@ -370,7 +384,7 @@ class t3lib_tree_pagetree_DataProvider extends t3lib_tree_AbstractDataProvider { continue; } - $record = t3lib_BEfunc::getRecordWSOL('pages', $mountPoint, '*', '', TRUE); + $record = $this->getRecordWithWorkspaceOverlay($mountPoint); if (!$record) { continue; } diff --git a/tests/Unit/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataproviderTest.php b/tests/Unit/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataproviderTest.php index 4fb9604387ea..cd26efe887f8 100644 --- a/tests/Unit/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataproviderTest.php +++ b/tests/Unit/t3lib/tree/pagetree/class.t3lib_tree_pagetree_dataproviderTest.php @@ -71,10 +71,32 @@ class t3lib_tree_pagetree_DataProviderTest extends tx_phpunit_testcase { ), ); - $this->fixture = $this->getMock('t3lib_tree_pagetree_DataProvider', array('getSubpages')); + $subpagesWithWorkspaceOverlay = array( + array( + 'uid' => 1, + 'title' => 'Home', + ), + array( + 'uid' => 2, + 'title' => 'service', + ), + array( + 'uid' => 3, + 'title' => 'contact', + ), + ); + + $this->fixture = $this->getMock('t3lib_tree_pagetree_DataProvider', array('getSubpages', 'getRecordWithWorkspaceOverlay')); $this->fixture->expects($this->once())->method('getSubpages') ->will($this->returnValue($subpages)); + $this->fixture->expects($this->at(1))->method('getRecordWithWorkspaceOverlay')->with(1) + ->will($this->returnValue($subpagesWithWorkspaceOverlay[0])); + $this->fixture->expects($this->at(2))->method('getRecordWithWorkspaceOverlay')->with(2) + ->will($this->returnValue($subpagesWithWorkspaceOverlay[1])); + $this->fixture->expects($this->at(3))->method('getRecordWithWorkspaceOverlay')->with(3) + ->will($this->returnValue($subpagesWithWorkspaceOverlay[2])); + $node = new t3lib_tree_Node(); $node->setId(12); -- GitLab