]> BookStack Code Mirror - bookstack/blob - tests/Entity/PageDraftTest.php
#47 - Fixes the issues with the test case.
[bookstack] / tests / Entity / PageDraftTest.php
1 <?php namespace Tests;
2
3
4 class PageDraftTest extends BrowserKitTest
5 {
6     protected $page;
7     protected $entityRepo;
8
9     public function setUp()
10     {
11         parent::setUp();
12         $this->page = \BookStack\Page::first();
13         $this->entityRepo = app('\BookStack\Repos\EntityRepo');
14     }
15
16     public function test_draft_content_shows_if_available()
17     {
18         $addedContent = '<p>test message content</p>';
19         $this->asAdmin()->visit($this->page->getUrl() . '/edit')
20             ->dontSeeInField('html', $addedContent);
21
22         $newContent = $this->page->html . $addedContent;
23         $this->entityRepo->updatePageDraft($this->page, ['html' => $newContent]);
24         $this->asAdmin()->visit($this->page->getUrl() . '/edit')
25             ->seeInField('html', $newContent);
26     }
27
28     public function test_draft_not_visible_by_others()
29     {
30         $addedContent = '<p>test message content</p>';
31         $this->asAdmin()->visit($this->page->getUrl() . '/edit')
32             ->dontSeeInField('html', $addedContent);
33
34         $newContent = $this->page->html . $addedContent;
35         $newUser = $this->getEditor();
36         $this->entityRepo->updatePageDraft($this->page, ['html' => $newContent]);
37         $this->actingAs($newUser)->visit($this->page->getUrl() . '/edit')
38             ->dontSeeInField('html', $newContent);
39     }
40
41     public function test_alert_message_shows_if_editing_draft()
42     {
43         $this->asAdmin();
44         $this->entityRepo->updatePageDraft($this->page, ['html' => 'test content']);
45         $this->asAdmin()->visit($this->page->getUrl() . '/edit')
46             ->see('You are currently editing a draft');
47     }
48
49     public function test_alert_message_shows_if_someone_else_editing()
50     {
51         $nonEditedPage = \BookStack\Page::take(10)->get()->last();
52         $addedContent = '<p>test message content</p>';
53         $this->asAdmin()->visit($this->page->getUrl() . '/edit')
54             ->dontSeeInField('html', $addedContent);
55
56         $newContent = $this->page->html . $addedContent;
57         $newUser = $this->getEditor();
58         $this->entityRepo->updatePageDraft($this->page, ['html' => $newContent]);
59
60         $this->actingAs($newUser)
61             ->visit($this->page->getUrl() . '/edit')
62             ->see('Admin has started editing this page');
63             $this->flushSession();
64         $this->visit($nonEditedPage->getUrl() . '/edit')
65             ->dontSeeInElement('.notification', 'Admin has started editing this page');
66     }
67
68     public function test_draft_pages_show_on_homepage()
69     {
70         $book = \BookStack\Book::first();
71         $this->asAdmin()->visit('/')
72             ->dontSeeInElement('#recent-drafts', 'New Page')
73             ->visit($book->getUrl() . '/page/create')
74             ->visit('/')
75             ->seeInElement('#recent-drafts', 'New Page');
76     }
77
78     public function test_draft_pages_not_visible_by_others()
79     {
80         $book = \BookStack\Book::first();
81         $chapter = $book->chapters->first();
82         $newUser = $this->getEditor();
83
84         $this->actingAs($newUser)->visit('/')
85             ->visit($book->getUrl() . '/page/create')
86             ->visit($chapter->getUrl() . '/create-page')
87             ->visit($book->getUrl())
88             ->seeInElement('.page-list', 'New Page');
89         
90         $this->asAdmin()
91             ->visit($book->getUrl())
92             ->dontSeeInElement('.page-list', 'New Page')
93             ->visit($chapter->getUrl())
94             ->dontSeeInElement('.page-list', 'New Page');
95     }
96
97 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.