Fixed issue with deleted users in page revision list & extended tests to cover.
Showing
3 changed files
with
25 additions
and
7 deletions
| ... | @@ -269,7 +269,7 @@ class PageRepo | ... | @@ -269,7 +269,7 @@ class PageRepo |
| 269 | * @param Page $page | 269 | * @param Page $page |
| 270 | * @return $this | 270 | * @return $this |
| 271 | */ | 271 | */ |
| 272 | - private function saveRevision(Page $page) | 272 | + public function saveRevision(Page $page) |
| 273 | { | 273 | { |
| 274 | $revision = $this->pageRevision->fill($page->toArray()); | 274 | $revision = $this->pageRevision->fill($page->toArray()); |
| 275 | $revision->page_id = $page->id; | 275 | $revision->page_id = $page->id; | ... | ... |
| ... | @@ -32,8 +32,12 @@ | ... | @@ -32,8 +32,12 @@ |
| 32 | @foreach($page->revisions as $revision) | 32 | @foreach($page->revisions as $revision) |
| 33 | <tr> | 33 | <tr> |
| 34 | <td>{{$revision->name}}</td> | 34 | <td>{{$revision->name}}</td> |
| 35 | - <td style="line-height: 0;"><img class="avatar" src="{{ $revision->createdBy->getAvatar(30) }}" alt="{{$revision->createdBy->name}}"></td> | 35 | + <td style="line-height: 0;"> |
| 36 | - <td> {{$revision->createdBy->name}}</td> | 36 | + @if($revision->createdBy) |
| 37 | + <img class="avatar" src="{{ $revision->createdBy->getAvatar(30) }}" alt="{{$revision->createdBy->name}}"> | ||
| 38 | + @endif | ||
| 39 | + </td> | ||
| 40 | + <td> @if($revision->createdBy) {{$revision->createdBy->name}} @else Deleted User @endif</td> | ||
| 37 | <td><small>{{$revision->created_at->format('jS F, Y H:i:s')}} ({{$revision->created_at->diffForHumans()}})</small></td> | 41 | <td><small>{{$revision->created_at->format('jS F, Y H:i:s')}} ({{$revision->created_at->diffForHumans()}})</small></td> |
| 38 | <td> | 42 | <td> |
| 39 | <a href="{{$revision->getUrl()}}" target="_blank">Preview</a> | 43 | <a href="{{$revision->getUrl()}}" target="_blank">Preview</a> | ... | ... |
| ... | @@ -173,26 +173,40 @@ class EntityTest extends TestCase | ... | @@ -173,26 +173,40 @@ class EntityTest extends TestCase |
| 173 | 173 | ||
| 174 | public function testEntitiesViewableAfterCreatorDeletion() | 174 | public function testEntitiesViewableAfterCreatorDeletion() |
| 175 | { | 175 | { |
| 176 | + // Create required assets and revisions | ||
| 176 | $creator = $this->getNewUser(); | 177 | $creator = $this->getNewUser(); |
| 177 | $updater = $this->getNewUser(); | 178 | $updater = $this->getNewUser(); |
| 178 | $entities = $this->createEntityChainBelongingToUser($creator, $updater); | 179 | $entities = $this->createEntityChainBelongingToUser($creator, $updater); |
| 180 | + $this->actingAs($creator); | ||
| 179 | app('BookStack\Repos\UserRepo')->destroy($creator); | 181 | app('BookStack\Repos\UserRepo')->destroy($creator); |
| 182 | + app('BookStack\Repos\PageRepo')->saveRevision($entities['page']); | ||
| 180 | 183 | ||
| 181 | - $this->asAdmin()->visit($entities['book']->getUrl())->seeStatusCode(200) | 184 | + $this->checkEntitiesViewable($entities); |
| 182 | - ->visit($entities['chapter']->getUrl())->seeStatusCode(200) | ||
| 183 | - ->visit($entities['page']->getUrl())->seeStatusCode(200); | ||
| 184 | } | 185 | } |
| 185 | 186 | ||
| 186 | public function testEntitiesViewableAfterUpdaterDeletion() | 187 | public function testEntitiesViewableAfterUpdaterDeletion() |
| 187 | { | 188 | { |
| 189 | + // Create required assets and revisions | ||
| 188 | $creator = $this->getNewUser(); | 190 | $creator = $this->getNewUser(); |
| 189 | $updater = $this->getNewUser(); | 191 | $updater = $this->getNewUser(); |
| 190 | $entities = $this->createEntityChainBelongingToUser($creator, $updater); | 192 | $entities = $this->createEntityChainBelongingToUser($creator, $updater); |
| 193 | + $this->actingAs($updater); | ||
| 191 | app('BookStack\Repos\UserRepo')->destroy($updater); | 194 | app('BookStack\Repos\UserRepo')->destroy($updater); |
| 195 | + app('BookStack\Repos\PageRepo')->saveRevision($entities['page']); | ||
| 192 | 196 | ||
| 193 | - $this->asAdmin()->visit($entities['book']->getUrl())->seeStatusCode(200) | 197 | + $this->checkEntitiesViewable($entities); |
| 198 | + } | ||
| 199 | + | ||
| 200 | + private function checkEntitiesViewable($entities) | ||
| 201 | + { | ||
| 202 | + // Check pages and books are visible. | ||
| 203 | + $this->asAdmin(); | ||
| 204 | + $this->visit($entities['book']->getUrl())->seeStatusCode(200) | ||
| 194 | ->visit($entities['chapter']->getUrl())->seeStatusCode(200) | 205 | ->visit($entities['chapter']->getUrl())->seeStatusCode(200) |
| 195 | ->visit($entities['page']->getUrl())->seeStatusCode(200); | 206 | ->visit($entities['page']->getUrl())->seeStatusCode(200); |
| 207 | + // Check revision listing shows no errors. | ||
| 208 | + $this->visit($entities['page']->getUrl()) | ||
| 209 | + ->click('Revisions')->seeStatusCode(200); | ||
| 196 | } | 210 | } |
| 197 | 211 | ||
| 198 | 212 | ... | ... |
-
Please register or sign in to post a comment