]> BookStack Code Mirror - bookstack/blob - tests/Entity/PageDraftTest.php
Add git to the apt-get install packages.
[bookstack] / tests / Entity / PageDraftTest.php
1 <?php namespace Tests;
2
3
4 use BookStack\Entities\Repos\PageRepo;
5
6 class PageDraftTest extends BrowserKitTest
7 {
8     protected $page;
9     protected $pageRepo;
10
11     public function setUp(): void
12     {
13         parent::setUp();
14         $this->page = \BookStack\Entities\Page::first();
15         $this->pageRepo = app(PageRepo::class);
16     }
17
18     public function test_draft_content_shows_if_available()
19     {
20         $addedContent = '<p>test message content</p>';
21         $this->asAdmin()->visit($this->page->getUrl('/edit'))
22             ->dontSeeInField('html', $addedContent);
23
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);
28     }
29
30     public function test_draft_not_visible_by_others()
31     {
32         $addedContent = '<p>test message content</p>';
33         $this->asAdmin()->visit($this->page->getUrl('/edit'))
34             ->dontSeeInField('html', $addedContent);
35
36         $newContent = $this->page->html . $addedContent;
37         $newUser = $this->getEditor();
38         $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
39
40         $this->actingAs($newUser)->visit($this->page->getUrl('/edit'))
41             ->dontSeeInField('html', $newContent);
42     }
43
44     public function test_alert_message_shows_if_editing_draft()
45     {
46         $this->asAdmin();
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');
50     }
51
52     public function test_alert_message_shows_if_someone_else_editing()
53     {
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);
58
59         $newContent = $this->page->html . $addedContent;
60         $newUser = $this->getEditor();
61         $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
62
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');
69     }
70
71     public function test_draft_pages_show_on_homepage()
72     {
73         $book = \BookStack\Entities\Book::first();
74         $this->asAdmin()->visit('/')
75             ->dontSeeInElement('#recent-drafts', 'New Page')
76             ->visit($book->getUrl() . '/create-page')
77             ->visit('/')
78             ->seeInElement('#recent-drafts', 'New Page');
79     }
80
81     public function test_draft_pages_not_visible_by_others()
82     {
83         $book = \BookStack\Entities\Book::first();
84         $chapter = $book->chapters->first();
85         $newUser = $this->getEditor();
86
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');
92         
93         $this->asAdmin()
94             ->visit($book->getUrl())
95             ->dontSeeInElement('.book-contents', 'New Page')
96             ->visit($chapter->getUrl())
97             ->dontSeeInElement('.book-contents', 'New Page');
98     }
99
100 }