public function removeRemovesAllChildNodesAndTheNodeItself()
{
$node = $this->setUpNodeWithNonMatchingContext(array('getChildNodes'));
$nodeData = $node->getNodeData();
$context = $node->getContext();
$subNode1 = $this->getMockBuilder(Node::class)->setMethods(array('setRemoved'))->setConstructorArgs(array($nodeData, $context))->getMock();
$subNode1->expects($this->once())->method('setRemoved');
$subNode2 = $this->getMockBuilder(Node::class)->setMethods(array('setRemoved'))->setConstructorArgs(array($nodeData, $context))->getMock();
$subNode2->expects($this->once())->method('setRemoved');
$node->expects($this->once())->method('getChildNodes')->will($this->returnValue(array($subNode1, $subNode2)));
$node->remove();
}