]> BookStack Code Mirror - bookstack/blob - tests/Entity/PageDraftTest.php
Update passwords.php
[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()
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         $this->actingAs($newUser)->visit($this->page->getUrl() . '/edit')
40             ->dontSeeInField('html', $newContent);
41     }
42
43     public function test_alert_message_shows_if_editing_draft()
44     {
45         $this->asAdmin();
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');
49     }
50
51     public function test_alert_message_shows_if_someone_else_editing()
52     {
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);
57
58         $newContent = $this->page->html . $addedContent;
59         $newUser = $this->getEditor();
60         $this->pageRepo->updatePageDraft($this->page, ['html' => $newContent]);
61
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');
68     }
69
70     public function test_draft_pages_show_on_homepage()
71     {
72         $book = \BookStack\Entities\Book::first();
73         $this->asAdmin()->visit('/')
74             ->dontSeeInElement('#recent-drafts', 'New Page')
75             ->visit($book->getUrl() . '/create-page')
76             ->visit('/')
77             ->seeInElement('#recent-drafts', 'New Page');
78     }
79
80     public function test_draft_pages_not_visible_by_others()
81     {
82         $book = \BookStack\Entities\Book::first();
83         $chapter = $book->chapters->first();
84         $newUser = $this->getEditor();
85
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');
91         
92         $this->asAdmin()
93             ->visit($book->getUrl())
94             ->dontSeeInElement('.book-contents', 'New Page')
95             ->visit($chapter->getUrl())
96             ->dontSeeInElement('.book-contents', 'New Page');
97     }
98
99 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.