public function testCanCheckIfKeyExists()
{
$foo_tree_mock = M::mock('Gittern\\Entity\\GitObject\\Tree');
$foo_node_mock = M::mock(array('getRelatedObject' => $foo_tree_mock));
$root_tree_mock = M::mock('Gittern\\Entity\\GitObject\\Tree');
$root_tree_mock->shouldReceive('getNodeNamed')->with('foo')->andReturn($foo_node_mock);
$foo_tree_mock->shouldReceive('getNodeNamed')->with('bar')->andReturn(M::mock(array('getRelatedObject' => M::mock('Gittern\\Entity\\GitObject\\Blob'))));
$root_tree_mock->shouldReceive('getNodeNamed')->with('quux')->andReturn(M::mock(array('getRelatedObject' => M::mock('Gittern\\Entity\\GitObject\\Blob'))));
$rp = new \ReflectionProperty('Gittern\\Gaufrette\\GitternCommitishReadOnlyAdapter', 'tree');
$rp->setAccessible(true);
$rp->setValue($this->adapter, $root_tree_mock);
$this->assertTrue($this->adapter->exists('foo/bar'));
$this->assertTrue($this->adapter->exists('quux'));
$this->assertFalse($this->adapter->exists('foo'));
}