4 use BookStack\Entities\Repos\PageRepo;
6 class PageDraftTest extends BrowserKitTest
11 public function setUp(): void
14 $this->page = \BookStack\Entities\Page::first();
15 $this->pageRepo = app(PageRepo::class);
18 public function test_draft_content_shows_if_available()
20 $addedContent = '<p>test message content</p>';
21 $this->asAdmin()->visit($this->page->getUrl('/edit'))
22 ->dontSeeInField('html', $addedContent);
24 $newContent = $this->page->html . $addedContent;
25 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
26 $this->asAdmin()->visit($this->page->getUrl('/edit'))
27 ->seeInField('html', $newContent);
30 public function test_draft_not_visible_by_others()
32 $addedContent = '<p>test message content</p>';
33 $this->asAdmin()->visit($this->page->getUrl('/edit'))
34 ->dontSeeInField('html', $addedContent);
36 $newContent = $this->page->html . $addedContent;
37 $newUser = $this->getEditor();
38 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
40 $this->actingAs($newUser)->visit($this->page->getUrl('/edit'))
41 ->dontSeeInField('html', $newContent);
44 public function test_alert_message_shows_if_editing_draft()
47 $this->pageRepo->updatePageDraft($this->page, ['html' => 'test content']);
48 $this->asAdmin()->visit($this->page->getUrl('/edit'))
49 ->see('You are currently editing a draft');
52 public function test_alert_message_shows_if_someone_else_editing()
54 $nonEditedPage = \BookStack\Entities\Page::take(10)->get()->last();
55 $addedContent = '<p>test message content</p>';
56 $this->asAdmin()->visit($this->page->getUrl('/edit'))
57 ->dontSeeInField('html', $addedContent);
59 $newContent = $this->page->html . $addedContent;
60 $newUser = $this->getEditor();
61 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
63 $this->actingAs($newUser)
64 ->visit($this->page->getUrl('/edit'))
65 ->see('Admin has started editing this page');
66 $this->flushSession();
67 $this->visit($nonEditedPage->getUrl() . '/edit')
68 ->dontSeeInElement('.notification', 'Admin has started editing this page');
71 public function test_draft_pages_show_on_homepage()
73 $book = \BookStack\Entities\Book::first();
74 $this->asAdmin()->visit('/')
75 ->dontSeeInElement('#recent-drafts', 'New Page')
76 ->visit($book->getUrl() . '/create-page')
78 ->seeInElement('#recent-drafts', 'New Page');
81 public function test_draft_pages_not_visible_by_others()
83 $book = \BookStack\Entities\Book::first();
84 $chapter = $book->chapters->first();
85 $newUser = $this->getEditor();
87 $this->actingAs($newUser)->visit('/')
88 ->visit($book->getUrl() . '/create-page')
89 ->visit($chapter->getUrl() . '/create-page')
90 ->visit($book->getUrl())
91 ->seeInElement('.book-contents', 'New Page');
94 ->visit($book->getUrl())
95 ->dontSeeInElement('.book-contents', 'New Page')
96 ->visit($chapter->getUrl())
97 ->dontSeeInElement('.book-contents', 'New Page');