3 use BookStack\Entities\Repos\PageRepo;
5 class PageDraftTest extends BrowserKitTest
14 public function setUp(): void
17 $this->page = \BookStack\Entities\Page::first();
18 $this->pageRepo = app(PageRepo::class);
21 public function test_draft_content_shows_if_available()
23 $addedContent = '<p>test message content</p>';
24 $this->asAdmin()->visit($this->page->getUrl('/edit'))
25 ->dontSeeInField('html', $addedContent);
27 $newContent = $this->page->html . $addedContent;
28 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
29 $this->asAdmin()->visit($this->page->getUrl('/edit'))
30 ->seeInField('html', $newContent);
33 public function test_draft_not_visible_by_others()
35 $addedContent = '<p>test message content</p>';
36 $this->asAdmin()->visit($this->page->getUrl('/edit'))
37 ->dontSeeInField('html', $addedContent);
39 $newContent = $this->page->html . $addedContent;
40 $newUser = $this->getEditor();
41 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
43 $this->actingAs($newUser)->visit($this->page->getUrl('/edit'))
44 ->dontSeeInField('html', $newContent);
47 public function test_alert_message_shows_if_editing_draft()
50 $this->pageRepo->updatePageDraft($this->page, ['html' => 'test content']);
51 $this->asAdmin()->visit($this->page->getUrl('/edit'))
52 ->see('You are currently editing a draft');
55 public function test_alert_message_shows_if_someone_else_editing()
57 $nonEditedPage = \BookStack\Entities\Page::take(10)->get()->last();
58 $addedContent = '<p>test message content</p>';
59 $this->asAdmin()->visit($this->page->getUrl('/edit'))
60 ->dontSeeInField('html', $addedContent);
62 $newContent = $this->page->html . $addedContent;
63 $newUser = $this->getEditor();
64 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
66 $this->actingAs($newUser)
67 ->visit($this->page->getUrl('/edit'))
68 ->see('Admin has started editing this page');
69 $this->flushSession();
70 $this->visit($nonEditedPage->getUrl() . '/edit')
71 ->dontSeeInElement('.notification', 'Admin has started editing this page');
74 public function test_draft_pages_show_on_homepage()
76 $book = \BookStack\Entities\Book::first();
77 $this->asAdmin()->visit('/')
78 ->dontSeeInElement('#recent-drafts', 'New Page')
79 ->visit($book->getUrl() . '/create-page')
81 ->seeInElement('#recent-drafts', 'New Page');
84 public function test_draft_pages_not_visible_by_others()
86 $book = \BookStack\Entities\Book::first();
87 $chapter = $book->chapters->first();
88 $newUser = $this->getEditor();
90 $this->actingAs($newUser)->visit('/')
91 ->visit($book->getUrl('/create-page'))
92 ->visit($chapter->getUrl('/create-page'))
93 ->visit($book->getUrl())
94 ->seeInElement('.book-contents', 'New Page');
97 ->visit($book->getUrl())
98 ->dontSeeInElement('.book-contents', 'New Page')
99 ->visit($chapter->getUrl())
100 ->dontSeeInElement('.book-contents', 'New Page');