Gittern\Entity\Diff\TreeDiffTest::testCanGetAddedLeafNodesRecursively PHP Méthode

testCanGetAddedLeafNodesRecursively() public méthode

    public function testCanGetAddedLeafNodesRecursively()
    {
        /*
        Node trees
        
        Base:
          foobaz/
            bar
        
        Comp:
          foobar
          foobaz/
            bar
            foo
          quux/
            bork
        */
        $comp_subtree_mock = M::mock('Gittern\\Entity\\GitObject\\Tree');
        $comp_tree_node = M::mock('Gittern\\Entity\\GitObject\\Node\\TreeNode', array('getName' => 'foobaz', 'getTree' => $comp_subtree_mock));
        $base_subtree_mock = M::mock('Gittern\\Entity\\GitObject\\Tree');
        $base_tree_node = M::mock('Gittern\\Entity\\GitObject\\Node\\TreeNode', array('getName' => 'foobaz', 'getTree' => $base_subtree_mock));
        $base_new_subtree_mock = M::mock('Gittern\\Entity\\GitObject\\Tree');
        $base_new_tree_node = M::mock('Gittern\\Entity\\GitObject\\Node\\TreeNode', array('getName' => 'quux', 'getTree' => $base_new_subtree_mock));
        $node1 = M::mock(array('getName' => 'foobar'));
        $node2 = M::mock(array('getName' => 'foo'));
        $node3 = M::mock(array('getName' => 'bar'));
        $node4 = M::mock(array('getName' => 'bork'));
        $this->base_tree_mock->shouldReceive('hasNodeNamed')->with('foobar')->andReturn(false)->once()->atLeast();
        $this->base_tree_mock->shouldReceive('hasNodeNamed')->with('foobaz')->andReturn(true)->once()->atLeast();
        $this->base_tree_mock->shouldReceive('hasNodeNamed')->with('quux')->andReturn(false)->once()->atLeast();
        $this->base_tree_mock->shouldReceive('getNodeNamed')->with('foobaz')->andReturn($comp_tree_node);
        $this->comp_tree_mock->shouldReceive('getNodes')->andReturn(array($node1, $base_tree_node, $base_new_tree_node));
        $comp_subtree_mock->shouldReceive('hasNodeNamed')->with('foo')->andReturn(false)->once()->atLeast();
        $comp_subtree_mock->shouldReceive('hasNodeNamed')->with('bar')->andReturn(true)->once()->atLeast();
        $base_subtree_mock->shouldReceive('getNodes')->andReturn(array($node2, $node3));
        $base_new_subtree_mock->shouldReceive('getNodes')->andReturn(array($node4));
        $this->assertEquals(array('foobar' => $node1, 'foobaz/foo' => $node2, 'quux/bork' => $node4), $this->diff->getAddedLeafNodesRecursive());
    }