/**
  * 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);
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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();
 }