1 <?php namespace Tests\Entity;
3 use BookStack\Entities\Repos\PageRepo;
4 use Tests\BrowserKitTest;
6 class PageDraftTest extends BrowserKitTest
15 public function setUp(): void
18 $this->page = \BookStack\Entities\Page::first();
19 $this->pageRepo = app(PageRepo::class);
22 public function test_draft_content_shows_if_available()
24 $addedContent = '<p>test message content</p>';
25 $this->asAdmin()->visit($this->page->getUrl('/edit'))
26 ->dontSeeInField('html', $addedContent);
28 $newContent = $this->page->html . $addedContent;
29 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
30 $this->asAdmin()->visit($this->page->getUrl('/edit'))
31 ->seeInField('html', $newContent);
34 public function test_draft_not_visible_by_others()
36 $addedContent = '<p>test message content</p>';
37 $this->asAdmin()->visit($this->page->getUrl('/edit'))
38 ->dontSeeInField('html', $addedContent);
40 $newContent = $this->page->html . $addedContent;
41 $newUser = $this->getEditor();
42 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
44 $this->actingAs($newUser)->visit($this->page->getUrl('/edit'))
45 ->dontSeeInField('html', $newContent);
48 public function test_alert_message_shows_if_editing_draft()
51 $this->pageRepo->updatePageDraft($this->page, ['html' => 'test content']);
52 $this->asAdmin()->visit($this->page->getUrl('/edit'))
53 ->see('You are currently editing a draft');
56 public function test_alert_message_shows_if_someone_else_editing()
58 $nonEditedPage = \BookStack\Entities\Page::take(10)->get()->last();
59 $addedContent = '<p>test message content</p>';
60 $this->asAdmin()->visit($this->page->getUrl('/edit'))
61 ->dontSeeInField('html', $addedContent);
63 $newContent = $this->page->html . $addedContent;
64 $newUser = $this->getEditor();
65 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
67 $this->actingAs($newUser)
68 ->visit($this->page->getUrl('/edit'))
69 ->see('Admin has started editing this page');
70 $this->flushSession();
71 $this->visit($nonEditedPage->getUrl() . '/edit')
72 ->dontSeeInElement('.notification', 'Admin has started editing this page');
75 public function test_draft_pages_show_on_homepage()
77 $book = \BookStack\Entities\Book::first();
78 $this->asAdmin()->visit('/')
79 ->dontSeeInElement('#recent-drafts', 'New Page')
80 ->visit($book->getUrl() . '/create-page')
82 ->seeInElement('#recent-drafts', 'New Page');
85 public function test_draft_pages_not_visible_by_others()
87 $book = \BookStack\Entities\Book::first();
88 $chapter = $book->chapters->first();
89 $newUser = $this->getEditor();
91 $this->actingAs($newUser)->visit('/')
92 ->visit($book->getUrl('/create-page'))
93 ->visit($chapter->getUrl('/create-page'))
94 ->visit($book->getUrl())
95 ->seeInElement('.book-contents', 'New Page');
98 ->visit($book->getUrl())
99 ->dontSeeInElement('.book-contents', 'New Page')
100 ->visit($chapter->getUrl())
101 ->dontSeeInElement('.book-contents', 'New Page');