4 use BookStack\Entities\Repos\PageRepo;
6 class PageDraftTest extends BrowserKitTest
11 public function setUp()
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]);
39 $this->actingAs($newUser)->visit($this->page->getUrl() . '/edit')
40 ->dontSeeInField('html', $newContent);
43 public function test_alert_message_shows_if_editing_draft()
46 $this->pageRepo->updatePageDraft($this->page, ['html' => 'test content']);
47 $this->asAdmin()->visit($this->page->getUrl() . '/edit')
48 ->see('You are currently editing a draft');
51 public function test_alert_message_shows_if_someone_else_editing()
53 $nonEditedPage = \BookStack\Entities\Page::take(10)->get()->last();
54 $addedContent = '<p>test message content</p>';
55 $this->asAdmin()->visit($this->page->getUrl() . '/edit')
56 ->dontSeeInField('html', $addedContent);
58 $newContent = $this->page->html . $addedContent;
59 $newUser = $this->getEditor();
60 $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
62 $this->actingAs($newUser)
63 ->visit($this->page->getUrl() . '/edit')
64 ->see('Admin has started editing this page');
65 $this->flushSession();
66 $this->visit($nonEditedPage->getUrl() . '/edit')
67 ->dontSeeInElement('.notification', 'Admin has started editing this page');
70 public function test_draft_pages_show_on_homepage()
72 $book = \BookStack\Entities\Book::first();
73 $this->asAdmin()->visit('/')
74 ->dontSeeInElement('#recent-drafts', 'New Page')
75 ->visit($book->getUrl() . '/create-page')
77 ->seeInElement('#recent-drafts', 'New Page');
80 public function test_draft_pages_not_visible_by_others()
82 $book = \BookStack\Entities\Book::first();
83 $chapter = $book->chapters->first();
84 $newUser = $this->getEditor();
86 $this->actingAs($newUser)->visit('/')
87 ->visit($book->getUrl() . '/create-page')
88 ->visit($chapter->getUrl() . '/create-page')
89 ->visit($book->getUrl())
90 ->seeInElement('.book-contents', 'New Page');
93 ->visit($book->getUrl())
94 ->dontSeeInElement('.book-contents', 'New Page')
95 ->visit($chapter->getUrl())
96 ->dontSeeInElement('.book-contents', 'New Page');