X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/58fa7679bccafd00f9a50bcd4a87e96876331b03..refs/pull/3387/head:/tests/HomepageTest.php diff --git a/tests/HomepageTest.php b/tests/HomepageTest.php index a8e33465d..900650a70 100644 --- a/tests/HomepageTest.php +++ b/tests/HomepageTest.php @@ -1,4 +1,6 @@ -asEditor(); @@ -42,8 +43,8 @@ class HomepageTest extends TestCase $content = str_repeat('This is the body content of my custom homepage.', 20); $customPage = $this->newPage(['name' => $name, 'html' => $content]); $this->setSettings([ - 'app-homepage' => $customPage->id, - 'app-homepage-type' => 'page' + 'app-homepage' => $customPage->id, + 'app-homepage-type' => 'page', ]); $homeVisit = $this->get('/'); @@ -68,8 +69,8 @@ class HomepageTest extends TestCase $content = str_repeat('This is the body content of my custom homepage.', 20); $customPage = $this->newPage(['name' => $name, 'html' => $content]); $this->setSettings([ - 'app-homepage' => $customPage->id, - 'app-homepage-type' => 'default' + 'app-homepage' => $customPage->id, + 'app-homepage-type' => 'default', ]); $pageDeleteReq = $this->delete($customPage->getUrl()); @@ -78,6 +79,43 @@ class HomepageTest extends TestCase $pageDeleteReq->assertSessionMissing('error'); } + public function test_custom_homepage_cannot_be_deleted_from_parent_deletion() + { + /** @var Page $page */ + $page = Page::query()->first(); + $this->setSettings([ + 'app-homepage' => $page->id, + 'app-homepage-type' => 'page', + ]); + + $this->asEditor()->delete($page->book->getUrl()); + $this->assertSessionError('Cannot delete a page while it is set as a homepage'); + $this->assertDatabaseMissing('deletions', ['deletable_id' => $page->book->id]); + + $page->refresh(); + $this->assertNull($page->deleted_at); + $this->assertNull($page->book->deleted_at); + } + + public function test_custom_homepage_renders_includes() + { + $this->asEditor(); + /** @var Page $included */ + $included = Page::query()->first(); + $content = str_repeat('This is the body content of my custom homepage.', 20); + $included->html = $content; + $included->save(); + + $name = 'My custom homepage'; + $customPage = $this->newPage(['name' => $name, 'html' => '{{@' . $included->id . '}}']); + $this->setSettings(['app-homepage' => $customPage->id]); + $this->setSettings(['app-homepage-type' => 'page']); + + $homeVisit = $this->get('/'); + $homeVisit->assertSee($name); + $homeVisit->assertSee($content); + } + public function test_set_book_homepage() { $editor = $this->getEditor(); @@ -147,7 +185,7 @@ class HomepageTest extends TestCase public function test_new_users_dont_have_any_recently_viewed() { - $user = factory(User::class)->create(); + $user = User::factory()->create(); $viewRole = Role::getRole('Viewer'); $user->attachRole($viewRole);