/**
  * Try to access the children of a specific version of a document and assert they
  * are hydrated properly
  */
 public function testUnversionedChildrenOnParentVersion()
 {
     $versionableArticle = new FullVersionableArticleWithChildren();
     $versionableArticle->author = 'mellowplace';
     $versionableArticle->topic = 'children test';
     $versionableArticle->id = '/functional/children-test';
     $versionableArticle->setText('Parent article text');
     $this->dm->persist($versionableArticle);
     $childArticle = new NonVersionableArticle();
     $childArticle->setText("This is the child");
     $childArticle->id = '/functional/children-test/child';
     $childArticle->author = 'mellowplace';
     $childArticle->topic = 'children test - child';
     $versionableArticle->addChildArticle($childArticle);
     // checkin the first version (1.0)
     $this->dm->flush();
     $this->dm->checkpoint($versionableArticle);
     // now modify the child nodes text and checkin the second version (1.1)
     $childArticle->setText('modified text');
     $this->dm->flush();
     $this->dm->checkpoint($versionableArticle);
     $firstVersion = $this->dm->findVersionByName('Doctrine\\Tests\\Models\\Versioning\\FullVersionableArticleWithChildren', $versionableArticle->id, '1.0');
     $secondVersion = $this->dm->findVersionByName('Doctrine\\Tests\\Models\\Versioning\\FullVersionableArticleWithChildren', $versionableArticle->id, '1.1');
     $this->assertEquals('This is the child', $firstVersion->childArticles->first()->getText(), 'The expected child article text is correct');
     $this->assertEquals('modified text', $secondVersion->childArticles->first()->getText(), 'The expected, modified, child article text is correct');
 }
 public function testRemoveVersion()
 {
     $doc = $this->dm->find($this->typeVersion, '/functional/versionTestObj');
     $this->dm->checkpoint($doc);
     $linearVersionHistory = $this->dm->getAllLinearVersions($doc);
     $lastVersion = end($linearVersionHistory);
     $lastVersionName = $lastVersion['name'];
     // Create a new version so that we are not trying to remove the last version
     $this->dm->checkpoint($doc);
     // Remove the version
     $version = $this->dm->findVersionByName($this->typeVersion, '/functional/versionTestObj', $lastVersionName);
     $removedVersionPath = $version->id;
     $this->dm->removeVersion($version);
     // Check it's not in the history anymore
     $this->assertFalse($this->dm->getPhpcrSession()->nodeExists(PathHelper::getParentPath($removedVersionPath)));
     return $lastVersionName;
 }