/** * Sets up the fixture. */ protected function setUp() { self::$em->clear(); self::$kernel->resetDatabase([self::$em->getClassMetaData('BackBee\\ClassContent\\AbstractClassContent'), self::$em->getClassMetaData('BackBee\\ClassContent\\Indexes\\IdxContentContent'), self::$em->getClassMetaData('BackBee\\ClassContent\\Indexes\\IdxSiteContent'), self::$em->getClassMetaData('BackBee\\ClassContent\\Indexes\\OptContentByModified'), self::$em->getClassMetaData('BackBee\\NestedNode\\Page'), self::$em->getClassMetaData('BackBee\\NestedNode\\Section')]); $site = self::$em->find('BackBee\\Site\\Site', 'site-test'); $layout = self::$em->find('BackBee\\Site\\Layout', 'layout-test'); $this->root = new Page('root', ['title' => 'root']); $this->root->setSite($site)->setLayout($layout); self::$em->persist($this->root); self::$em->flush(); /** * Create mock tree: * root * |- section2 * |- section1 * | |- page2 * | |- page1 * |- page3 */ $section1 = $this->addPage('section1', $layout, $this->root, true); $this->addPage('section2', $layout, $this->root, true); $this->addPage('page1', $layout, $section1); $this->addPage('page2', $layout, $section1); $this->addPage('page3', $layout, $this->root); self::$em->refresh($this->root); }
/** * Returns the built page instance. * * @return Page The built page. */ public function getPage() { if (null === $this->site || null === $this->layout || null === $this->title) { $this->reset(); throw new \Exception("Required data missing"); } $page = new Page($this->uid); $page->setTitle($this->title); $page->setSite($this->site); if (null !== $this->parent) { $page->setParent($this->insureParentIsSection($this->parent)); } $page->setLayout($this->layout, $this->itemToPushInMainZone); if (null !== $this->url) { $page->setUrl($this->url); } if (null !== $this->redirect) { $page->setRedirect($this->redirect); } if (null !== $this->target) { $page->setTarget($this->target); } if (null !== $this->altTitle) { $page->setAltTitle($this->altTitle); } if (null !== $this->state) { $page->setState($this->state); } if (null !== $this->publishedAt) { $page->setPublishing($this->publishedAt); } if (null !== $this->createdAt) { $page->setCreated($this->createdAt); } if (null !== $this->archiving) { $page->setArchiving($this->archiving); } $pageContentSet = $page->getContentSet(); $this->updateContentRevision($pageContentSet); while ($column = $pageContentSet->next()) { $this->updateContentRevision($column); } if (0 < count($this->elements)) { foreach ($this->elements as $e) { $column = $pageContentSet->item($e['content_set_position']); if ($e['set_main_node']) { $e['content']->setMainNode($page); } $column->push($e['content']); } $pageContentSet->rewind(); } $this->doPersistIfValid($page); $this->reset(); return $page; }
/** * Test cascade Doctrine annotations for entity */ public function testDoctrineCascades() { self::$kernel->resetDatabase(); $site = new Site('site-test', ['label' => 'site-test']); $layout = self::$kernel->createLayout('layout-test', 'layout-test'); self::$em->persist($site); self::$em->persist($layout); self::$em->flush(); $root = new Page('root', ['title' => 'root']); $root->setSite($site)->setLayout($layout); // Persist cascade on Page::_mainsection and Page::_contentset self::$em->persist($root); $this->assertTrue(self::$em->getUnitOfWork()->isScheduledForInsert($root)); $this->assertTrue(self::$em->getUnitOfWork()->isScheduledForInsert($root->getMainSection())); $this->assertTrue(self::$em->getUnitOfWork()->isScheduledForInsert($root->getContentSet())); self::$em->flush($root); // Remove cascade on Page::_mainsection and Page::_contentset self::$em->remove($root); $this->assertTrue(self::$em->getUnitOfWork()->isScheduledForDelete($root)); $this->assertTrue(self::$em->getUnitOfWork()->isScheduledForDelete($root->getContentSet())); $this->assertTrue(self::$em->getUnitOfWork()->isScheduledForDelete($root->getMainSection())); self::$em->flush(); }