Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Зуев Егор
/
wiki.dev
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Authored by
Dan Brown
2017-02-25 12:29:01 +0000
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Commit
387047f26207e97ab05c315e65bcc961ea71880a
387047f2
1 parent
4a2a539c
Fixed inaccessible revisions, added regression tests
Fixes #309
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
68 additions
and
17 deletions
app/Http/Controllers/PageController.php
app/Repos/EntityRepo.php
tests/Entity/PageContentTest.php
tests/PublicActionTest.php
tests/TestCase.php
app/Http/Controllers/PageController.php
View file @
387047f
...
...
@@ -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
;
...
...
app/Repos/EntityRepo.php
View file @
387047f
...
...
@@ -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
;
...
...
tests/Entity/PageContentTest.php
View file @
387047f
<?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'
)
->
s
ee
(
'This is a second block of content'
);
$
pageContent
=
$this
->
get
(
$page
->
getUrl
());
$pageContent
->
assertSee
(
'Hello, This is a test'
);
$pageContent
->
assertS
ee
(
'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'
);
}
}
...
...
tests/PublicActionTest.php
View file @
387047f
...
...
@@ -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
);
...
...
tests/TestCase.php
View file @
387047f
...
...
@@ -13,6 +13,7 @@ abstract class TestCase extends BaseTestCase
use
DatabaseTransactions
;
protected
$admin
;
protected
$editor
;
/**
* Set the current user context to be an admin.
...
...
@@ -36,6 +37,28 @@ abstract class TestCase extends BaseTestCase
}
/**
* 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
* @return Book
...
...
Please
register
or
sign in
to post a comment