Dan Brown

Fixed issue with deleted users in page revision list & extended tests to cover.

...@@ -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
......