]> BookStack Code Mirror - bookstack/blob - tests/Entity/PageContentTest.php
Update search.js
[bookstack] / tests / Entity / PageContentTest.php
1 <?php namespace Tests;
2
3 use BookStack\Page;
4 use BookStack\Repos\EntityRepo;
5
6 class PageContentTest extends TestCase
7 {
8
9     public function test_page_includes()
10     {
11         $page = Page::first();
12         $secondPage = Page::all()->get(2);
13
14         $secondPage->html = "<p id='section1'>Hello, This is a test</p><p id='section2'>This is a second block of content</p>";
15         $secondPage->save();
16
17         $this->asEditor();
18
19         $pageContent = $this->get($page->getUrl());
20         $pageContent->assertDontSee('Hello, This is a test');
21
22         $originalHtml = $page->html;
23         $page->html .= "{{@{$secondPage->id}}}";
24         $page->save();
25
26         $pageContent = $this->get($page->getUrl());
27         $pageContent->assertSee('Hello, This is a test');
28         $pageContent->assertSee('This is a second block of content');
29
30         $page->html = $originalHtml . " Well {{@{$secondPage->id}#section2}}";
31         $page->save();
32
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');
36     }
37
38     public function test_page_revision_views_viewable()
39     {
40         $this->asEditor();
41
42         $entityRepo = $this->app[EntityRepo::class];
43         $page = Page::first();
44         $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
45         $pageRevision = $page->revisions->last();
46
47         $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
48         $revisionView->assertStatus(200);
49         $revisionView->assertSee('new content');
50
51         $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id . '/changes');
52         $revisionView->assertStatus(200);
53         $revisionView->assertSee('new content');
54     }
55
56     public function test_page_revision_restore_updates_content()
57     {
58         $this->asEditor();
59
60         $entityRepo = $this->app[EntityRepo::class];
61         $page = Page::first();
62         $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page abc123', 'html' => '<p>new contente def456</p>', 'summary' => 'initial page revision testing']);
63         $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page again', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
64         $page =  Page::find($page->id);
65
66
67         $pageView = $this->get($page->getUrl());
68         $pageView->assertDontSee('abc123');
69         $pageView->assertDontSee('def456');
70
71         $revToRestore = $page->revisions()->where('name', 'like', '%abc123')->first();
72         $restoreReq = $this->get($page->getUrl() . '/revisions/' . $revToRestore->id . '/restore');
73         $page =  Page::find($page->id);
74
75         $restoreReq->assertStatus(302);
76         $restoreReq->assertRedirect($page->getUrl());
77
78         $pageView = $this->get($page->getUrl());
79         $pageView->assertSee('abc123');
80         $pageView->assertSee('def456');
81     }
82
83 }