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