/**
  * @param HasNodeInterface $hasNode         The object
  * @param NodeTranslation  $nodeTranslation The node translation
  * @param BaseUser         $owner           The user
  * @param NodeVersion      $origin          The nodeVersion this nodeVersion originated from
  * @param string           $type            (public|draft)
  * @param DateTime         $created         The date this node version is created
  *
  * @return NodeVersion
  */
 public function createNodeVersionFor(HasNodeInterface $hasNode, NodeTranslation $nodeTranslation, BaseUser $owner, NodeVersion $origin = null, $type = 'public', $created = null)
 {
     $em = $this->getEntityManager();
     $nodeVersion = new NodeVersion();
     $nodeVersion->setNodeTranslation($nodeTranslation);
     $nodeVersion->setType($type);
     $nodeVersion->setOwner($owner);
     $nodeVersion->setRef($hasNode);
     $nodeVersion->setOrigin($origin);
     if (!is_null($created)) {
         $nodeVersion->setCreated($created);
     }
     $em->persist($nodeVersion);
     $em->flush();
     $em->refresh($nodeVersion);
     return $nodeVersion;
 }
 /**
  * @covers Kunstmaan\NodeBundle\Entity\NodeVersion::setCreated
  * @covers Kunstmaan\NodeBundle\Entity\NodeVersion::getCreated
  */
 public function testSetGetCreated()
 {
     $created = new \DateTime();
     $this->object->setCreated($created);
     $this->assertEquals($created, $this->object->getCreated());
 }
 /**
  * @param HasNodeInterface $page            The page
  * @param NodeTranslation  $nodeTranslation The node translation
  * @param NodeVersion      $nodeVersion     The node version
  *
  * @return NodeVersion
  */
 private function createDraftVersion(HasNodeInterface $page, NodeTranslation $nodeTranslation, NodeVersion $nodeVersion)
 {
     $publicPage = $this->get('kunstmaan_admin.clone.helper')->deepCloneAndSave($page);
     /* @var NodeVersion $publicNodeVersion */
     $publicNodeVersion = $this->em->getRepository('KunstmaanNodeBundle:NodeVersion')->createNodeVersionFor($publicPage, $nodeTranslation, $this->user, $nodeVersion->getOrigin(), 'public', $nodeVersion->getCreated());
     $nodeTranslation->setPublicNodeVersion($publicNodeVersion);
     $nodeVersion->setType('draft');
     $nodeVersion->setOrigin($publicNodeVersion);
     $nodeVersion->setCreated(new DateTime());
     $this->em->persist($nodeTranslation);
     $this->em->persist($nodeVersion);
     $this->em->flush();
     $this->get('event_dispatcher')->dispatch(Events::CREATE_DRAFT_VERSION, new NodeEvent($nodeTranslation->getNode(), $nodeTranslation, $nodeVersion, $page));
     return $nodeVersion;
 }