public function getParentReturnsParentNodeInCurrentNodesContext() { $currentNodeWorkspace = $this->getMockBuilder(Workspace::class)->disableOriginalConstructor()->getMock(); $mockFirstLevelNodeCache = $this->getFirstLevelNodeCache(); $context = $this->getMockBuilder(Context::class)->disableOriginalConstructor()->getMock(); $context->expects($this->any())->method('getWorkspace')->will($this->returnValue($currentNodeWorkspace)); $context->expects($this->any())->method('getFirstLevelNodeCache')->will($this->returnValue($mockFirstLevelNodeCache)); $expectedParentNodeData = new NodeData('/foo', $currentNodeWorkspace); $expectedContextualizedParentNode = new Node($expectedParentNodeData, $context); $nodeDataRepository = $this->getMockBuilder(NodeDataRepository::class)->disableOriginalConstructor()->setMethods(array('findOneByPathInContext'))->getMock(); $nodeDataRepository->expects($this->once())->method('findOneByPathInContext')->with('/foo', $context)->will($this->returnValue($expectedContextualizedParentNode)); $currentNodeData = $this->getMockBuilder(NodeData::class)->setConstructorArgs(array('/foo/baz', $currentNodeWorkspace))->getMock(); $currentContextualizedNode = $this->getAccessibleMock(Node::class, array('getParentPath'), array($currentNodeData, $context)); $currentContextualizedNode->expects($this->once())->method('getParentPath')->will($this->returnValue('/foo')); $currentContextualizedNode->_set('nodeDataRepository', $nodeDataRepository); $actualParentNode = $currentContextualizedNode->getParent(); $this->assertSame($expectedContextualizedParentNode, $actualParentNode); }