@Test
public void testMissingIntermediate() throws Exception
{
fact().register(TreeNode.class);
TreeNode node1 = new TreeNode();
node1.foo = "foo1";
Key<TreeNode> key1 = ofy().save().entity(node1).now();
// Node2 should not exist but should have a concrete id for node3
TreeNode node2 = new TreeNode();
node2.id = 999L;
node2.parent = Ref.create(key1);
Key<TreeNode> key2 = Key.create(node2);
TreeNode node3 = new TreeNode();
node3.parent = Ref.create(key2);
node3.foo = "foo3";
Key<TreeNode> key3 = ofy().save().entity(node3).now();
// Doing this step by step to make it easier for debugging
LoadResult<TreeNode> fetched3Ref = ofy().load().key(key3);
TreeNode fetched3 = fetched3Ref.now();
assert fetched3.parent.get() == null;
assert fetched3.parent.key().equals(key2);
assert fetched3.parent.key().getParent().equals(key1);
}