mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-03-26 00:16:20 +08:00
parent
4a2a539c08
commit
387047f262
app
tests
@ -369,10 +369,13 @@ class PageController extends Controller
|
||||
public function showRevision($bookSlug, $pageSlug, $revisionId)
|
||||
{
|
||||
$page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
|
||||
$revision = $this->entityRepo->getById('page_revision', $revisionId, false);
|
||||
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
|
||||
if ($revision === null) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$page->fill($revision->toArray());
|
||||
$this->setPageTitle(trans('entities.pages_revision_named', ['pageName'=>$page->getShortName()]));
|
||||
$this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
|
||||
|
||||
return view('pages/revision', [
|
||||
'page' => $page,
|
||||
@ -390,7 +393,10 @@ class PageController extends Controller
|
||||
public function showRevisionChanges($bookSlug, $pageSlug, $revisionId)
|
||||
{
|
||||
$page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
|
||||
$revision = $this->entityRepo->getById('page_revision', $revisionId);
|
||||
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
|
||||
if ($revision === null) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$prev = $revision->getPrevious();
|
||||
$prevContent = ($prev === null) ? '' : $prev->html;
|
||||
|
@ -86,8 +86,7 @@ class EntityRepo
|
||||
$this->entities = [
|
||||
'page' => $this->page,
|
||||
'chapter' => $this->chapter,
|
||||
'book' => $this->book,
|
||||
'page_revision' => $this->pageRevision
|
||||
'book' => $this->book
|
||||
];
|
||||
$this->viewService = $viewService;
|
||||
$this->permissionService = $permissionService;
|
||||
|
@ -1,33 +1,56 @@
|
||||
<?php namespace Tests;
|
||||
|
||||
class PageContentTest extends BrowserKitTest
|
||||
use BookStack\Page;
|
||||
use BookStack\Repos\EntityRepo;
|
||||
|
||||
class PageContentTest extends TestCase
|
||||
{
|
||||
|
||||
public function test_page_includes()
|
||||
{
|
||||
$page = \BookStack\Page::first();
|
||||
$secondPage = \BookStack\Page::all()->get(2);
|
||||
$page = Page::first();
|
||||
$secondPage = Page::all()->get(2);
|
||||
|
||||
$secondPage->html = "<p id='section1'>Hello, This is a test</p><p id='section2'>This is a second block of content</p>";
|
||||
$secondPage->save();
|
||||
|
||||
$this->asAdmin()->visit($page->getUrl())
|
||||
->dontSee('Hello, This is a test');
|
||||
$this->asEditor();
|
||||
|
||||
$pageContent = $this->get($page->getUrl());
|
||||
$pageContent->assertDontSee('Hello, This is a test');
|
||||
|
||||
$originalHtml = $page->html;
|
||||
$page->html .= "{{@{$secondPage->id}}}";
|
||||
$page->save();
|
||||
|
||||
$this->asAdmin()->visit($page->getUrl())
|
||||
->see('Hello, This is a test')
|
||||
->see('This is a second block of content');
|
||||
$pageContent = $this->get($page->getUrl());
|
||||
$pageContent->assertSee('Hello, This is a test');
|
||||
$pageContent->assertSee('This is a second block of content');
|
||||
|
||||
$page->html = $originalHtml . " Well {{@{$secondPage->id}#section2}}";
|
||||
$page->save();
|
||||
|
||||
$this->asAdmin()->visit($page->getUrl())
|
||||
->dontSee('Hello, This is a test')
|
||||
->see('Well This is a second block of content');
|
||||
$pageContent = $this->get($page->getUrl());
|
||||
$pageContent->assertDontSee('Hello, This is a test');
|
||||
$pageContent->assertSee('Well This is a second block of content');
|
||||
}
|
||||
|
||||
public function test_page_revision_views_viewable()
|
||||
{
|
||||
$this->asEditor();
|
||||
|
||||
$entityRepo = $this->app[EntityRepo::class];
|
||||
$page = Page::first();
|
||||
$entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
|
||||
$pageRevision = $page->revisions->last();
|
||||
|
||||
$revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
|
||||
$revisionView->assertStatus(200);
|
||||
$revisionView->assertSee('new content');
|
||||
|
||||
$revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id . '/changes');
|
||||
$revisionView->assertStatus(200);
|
||||
$revisionView->assertSee('new content');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ class PublicActionTest extends BrowserKitTest
|
||||
{
|
||||
$page = \BookStack\Page::first();
|
||||
$this->asAdmin()->visit($page->getUrl());
|
||||
Auth::logout();
|
||||
\Auth::logout();
|
||||
view()->share('pageTitle', '');
|
||||
$this->forceVisit('/cats/dogs/hippos');
|
||||
$this->dontSee($page->name);
|
||||
|
@ -13,6 +13,7 @@ abstract class TestCase extends BaseTestCase
|
||||
use DatabaseTransactions;
|
||||
|
||||
protected $admin;
|
||||
protected $editor;
|
||||
|
||||
/**
|
||||
* Set the current user context to be an admin.
|
||||
@ -35,6 +36,28 @@ abstract class TestCase extends BaseTestCase
|
||||
return $this->admin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current user context to be an editor.
|
||||
* @return $this
|
||||
*/
|
||||
public function asEditor()
|
||||
{
|
||||
return $this->actingAs($this->getEditor());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a editor user.
|
||||
* @return mixed
|
||||
*/
|
||||
public function getEditor() {
|
||||
if($this->editor === null) {
|
||||
$editorRole = Role::getRole('editor');
|
||||
$this->editor = $editorRole->users->first();
|
||||
}
|
||||
return $this->editor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and return a new book.
|
||||
* @param array $input
|
||||
|
Loading…
x
Reference in New Issue
Block a user