public function newVersionAction($treeId, $versionId) { // build $return = $this->build($treeId, $versionId); //process $doctrine = $this->getDoctrine()->getManager(); $newTreeVersion = new TreeVersion(); $newTreeVersion->setTree($this->tree); $form = $this->createForm(new AdminTreeNewVersionType()); $request = $this->getRequest(); if ($request->getMethod() == 'POST') { $form->handleRequest($request); if ($form->isValid()) { $newTreeVersion->setTitleAdmin($form->get('title')->getData()); $doctrine->persist($newTreeVersion); $copyNewVersionOfTree = new CopyNewVersionOfTree($doctrine, $this->treeVersion, $newTreeVersion); $copyNewVersionOfTree->go(); $doctrine->flush(); return $this->redirect($this->generateUrl('questionkey_admin_tree_version_show', array('treeId' => $this->tree->getPublicId(), 'versionId' => $newTreeVersion->getPublicId()))); } } return $this->render('QuestionKeyBundle:AdminTreeVersionEdit:newVersion.html.twig', array('tree' => $this->tree, 'treeVersion' => $this->treeVersion, 'form' => $form->createView())); }
function testCopyLibraryContent() { $nodeHasLibraryContentRepo = $this->em->getRepository('QuestionKeyBundle:NodeHasLibraryContent'); $user = new User(); $user->setEmail("*****@*****.**"); $user->setUsername("test"); $user->setPassword("ouhosu"); $this->em->persist($user); $tree = new Tree(); $tree->setTitleAdmin('Tree'); $tree->setOwner($user); $tree->setPublicId('tree'); $this->em->persist($tree); $treeVersionOld = new TreeVersion(); $treeVersionOld->setTree($tree); $treeVersionOld->setPublicId('v1'); $treeVersionOld->setTitleAdmin('v1'); $treeVersionOld->setFeatureLibraryContent(true); $this->em->persist($treeVersionOld); $treeVersionNew = new TreeVersion(); $treeVersionNew->setTree($tree); $treeVersionNew->setPublicId('v2'); $treeVersionNew->setTitleAdmin('v2'); $treeVersionNew->setFeatureLibraryContent(true); $this->em->persist($treeVersionNew); $nodeOld1 = new Node(); $nodeOld1->setTreeVersion($treeVersionOld); $nodeOld1->setPublicId('start'); $nodeOld1->setTitle('START HERE'); $this->em->persist($nodeOld1); $libraryContentOld1 = new LibraryContent(); $libraryContentOld1->setTitleAdmin('TEST'); $libraryContentOld1->setBodyText('test1'); $libraryContentOld1->setTreeVersion($treeVersionOld); $this->em->persist($libraryContentOld1); $libraryContentOld2 = new LibraryContent(); $libraryContentOld2->setTitleAdmin('TEST'); $libraryContentOld2->setBodyText('test2'); $libraryContentOld2->setTreeVersion($treeVersionOld); $this->em->persist($libraryContentOld2); $this->em->flush(); $this->em->getRepository('QuestionKeyBundle:NodeHasLibraryContent')->addLibraryContentToNode($libraryContentOld1, $nodeOld1); $this->em->getRepository('QuestionKeyBundle:NodeHasLibraryContent')->addLibraryContentToNode($libraryContentOld2, $nodeOld1); ##################### COPY $copyNewVersionOfTree = new CopyNewVersionOfTree($this->em, $treeVersionOld, $treeVersionNew); $copyNewVersionOfTree->go(); ##################### TEST NODES DIRECTLY $nodes = $this->em->getRepository('QuestionKeyBundle:Node')->findBy(array('treeVersion' => $treeVersionNew), array('publicId' => 'ASC')); $this->assertEquals(1, count($nodes)); $node = $nodes[0]; $this->assertEquals($nodeOld1->getPublicId(), $node->getPublicId()); $this->assertEquals($nodeOld1->getTitle(), $node->getTitle()); $this->assertEquals($nodeOld1->getTitleAdmin(), $node->getTitleAdmin()); $this->assertEquals($nodeOld1->getTitlePreviousAnswers(), $node->getTitlePreviousAnswers()); ##################### TEST LIBRARY CONTENT DIRECTLY $libraryContents = $this->em->getRepository('QuestionKeyBundle:LibraryContent')->findBy(array('treeVersion' => $treeVersionNew), array('publicId' => 'ASC')); $this->assertEquals(2, count($libraryContents)); $libraryContent = $libraryContents[0]; $this->assertEquals($libraryContentOld1->getTitleAdmin(), $libraryContent->getTitleAdmin()); $libraryContent = $libraryContents[1]; $this->assertEquals($libraryContentOld2->getTitleAdmin(), $libraryContent->getTitleAdmin()); ##################### TEST LIBRARY CONTENT LOADING OFF NODE, INC SORT ORDER $libraryContents = $this->em->getRepository('QuestionKeyBundle:LibraryContent')->findForNode($node); $this->assertEquals(2, count($libraryContents)); $libraryContent = $libraryContents[0]; $this->assertEquals($libraryContentOld1->getTitleAdmin(), $libraryContent->getTitleAdmin()); $nodeHasLibraryContent = $nodeHasLibraryContentRepo->findOneBy(array('libraryContent' => $libraryContent)); $this->assertNotNull($nodeHasLibraryContent); $this->assertEquals(0, $nodeHasLibraryContent->getSort()); $libraryContent = $libraryContents[1]; $this->assertEquals($libraryContentOld2->getTitleAdmin(), $libraryContent->getTitleAdmin()); $nodeHasLibraryContent = $nodeHasLibraryContentRepo->findOneBy(array('libraryContent' => $libraryContent)); $this->assertNotNull($nodeHasLibraryContent); $this->assertEquals(1, $nodeHasLibraryContent->getSort()); }