4 use BookStack\Repos\EntityRepo;
6 class PageContentTest extends TestCase
9 public function test_page_includes()
11 $page = Page::first();
12 $secondPage = Page::all()->get(2);
14 $secondPage->html = "<p id='section1'>Hello, This is a test</p><p id='section2'>This is a second block of content</p>";
19 $pageContent = $this->get($page->getUrl());
20 $pageContent->assertDontSee('Hello, This is a test');
22 $originalHtml = $page->html;
23 $page->html .= "{{@{$secondPage->id}}}";
26 $pageContent = $this->get($page->getUrl());
27 $pageContent->assertSee('Hello, This is a test');
28 $pageContent->assertSee('This is a second block of content');
30 $page->html = $originalHtml . " Well {{@{$secondPage->id}#section2}}";
33 $pageContent = $this->get($page->getUrl());
34 $pageContent->assertDontSee('Hello, This is a test');
35 $pageContent->assertSee('Well This is a second block of content');
38 public function test_saving_page_with_includes()
40 $page = Page::first();
41 $secondPage = Page::all()->get(2);
43 $page->html = "<p>{{@$secondPage->id}}</p>";
45 $resp = $this->put($page->getUrl(), ['name' => $page->name, 'html' => $page->html, 'summary' => '']);
47 $resp->assertStatus(302);
49 $page = Page::find($page->id);
50 $this->assertContains("{{@$secondPage->id}}", $page->html);
53 public function test_page_revision_views_viewable()
57 $entityRepo = $this->app[EntityRepo::class];
58 $page = Page::first();
59 $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
60 $pageRevision = $page->revisions->last();
62 $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
63 $revisionView->assertStatus(200);
64 $revisionView->assertSee('new content');
66 $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id . '/changes');
67 $revisionView->assertStatus(200);
68 $revisionView->assertSee('new content');
71 public function test_page_revision_restore_updates_content()
75 $entityRepo = $this->app[EntityRepo::class];
76 $page = Page::first();
77 $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page abc123', 'html' => '<p>new contente def456</p>', 'summary' => 'initial page revision testing']);
78 $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page again', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
79 $page = Page::find($page->id);
82 $pageView = $this->get($page->getUrl());
83 $pageView->assertDontSee('abc123');
84 $pageView->assertDontSee('def456');
86 $revToRestore = $page->revisions()->where('name', 'like', '%abc123')->first();
87 $restoreReq = $this->get($page->getUrl() . '/revisions/' . $revToRestore->id . '/restore');
88 $page = Page::find($page->id);
90 $restoreReq->assertStatus(302);
91 $restoreReq->assertRedirect($page->getUrl());
93 $pageView = $this->get($page->getUrl());
94 $pageView->assertSee('abc123');
95 $pageView->assertSee('def456');