public function testChildPageAccessors() { $slug = new Slug(); $slug->setUrl('/root'); $page = new Page(); $page->setCurrentSlug($slug); $this->assertEmpty($page->getChildPages()->toArray()); $firstSlug = new Slug(); $firstSlug->setUrl('/first'); $firstPage = new Page(); $firstPage->setLevel(1); $firstPage->setCurrentSlug($firstSlug); $secondSlug = new Slug(); $secondSlug->setUrl('/second'); $secondPage = new Page(); $secondPage->setLevel(2); $secondPage->setCurrentSlug($secondSlug); $page->addChildPage($firstPage)->addChildPage($secondPage)->addChildPage($secondPage); $this->assertEquals([$firstPage, $secondPage], array_values($page->getChildPages()->toArray())); $this->assertEquals('/root/first', $firstPage->getCurrentSlugUrl()); $this->assertEquals('/root/second', $secondPage->getCurrentSlugUrl()); $page->removeChildPage($firstPage)->removeChildPage($firstPage); $this->assertEquals([$secondPage], array_values($page->getChildPages()->toArray())); $this->assertEquals('/first', $firstPage->getCurrentSlugUrl()); $this->assertEquals('/root/second', $secondPage->getCurrentSlugUrl()); }
/** * @param EntityManager $em * @param Page $page */ protected function removePageSlugs(EntityManager $em, Page $page) { foreach ($page->getSlugs() as $slug) { $page->removeSlug($slug); $em->remove($slug); } foreach ($page->getChildPages() as $childPage) { $this->removePageSlugs($em, $childPage); } }