]> BookStack Code Mirror - bookstack/blobdiff - tests/Settings/RecycleBinTest.php
respective book and chapter structure added.
[bookstack] / tests / Settings / RecycleBinTest.php
index 465c1aaade5e8859d6e7c1b8da0fb18c541dd221..33284b4b3ff85f2297c024873e5851c2e8544c7f 100644 (file)
@@ -3,10 +3,7 @@
 namespace Tests\Settings;
 
 use BookStack\Entities\Models\Book;
-use BookStack\Entities\Models\Bookshelf;
-use BookStack\Entities\Models\Chapter;
 use BookStack\Entities\Models\Deletion;
-use BookStack\Entities\Models\Entity;
 use BookStack\Entities\Models\Page;
 use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\DB;
@@ -16,8 +13,8 @@ class RecycleBinTest extends TestCase
 {
     public function test_recycle_bin_routes_permissions()
     {
-        $page = Page::query()->first();
-        $editor = $this->getEditor();
+        $page = $this->entities->page();
+        $editor = $this->users->editor();
         $this->actingAs($editor)->delete($page->getUrl());
         $deletion = Deletion::query()->firstOrFail();
 
@@ -36,7 +33,7 @@ class RecycleBinTest extends TestCase
             $this->assertPermissionError($resp);
         }
 
-        $this->giveUserPermissions($editor, ['restrictions-manage-all']);
+        $this->permissions->grantUserRolePermissions($editor, ['restrictions-manage-all']);
 
         foreach ($routes as $route) {
             [$method, $url] = explode(':', $route);
@@ -44,7 +41,7 @@ class RecycleBinTest extends TestCase
             $this->assertPermissionError($resp);
         }
 
-        $this->giveUserPermissions($editor, ['settings-manage']);
+        $this->permissions->grantUserRolePermissions($editor, ['settings-manage']);
 
         foreach ($routes as $route) {
             DB::beginTransaction();
@@ -57,26 +54,26 @@ class RecycleBinTest extends TestCase
 
     public function test_recycle_bin_view()
     {
-        $page = Page::query()->first();
+        $page = $this->entities->page();
         $book = Book::query()->whereHas('pages')->whereHas('chapters')->withCount(['pages', 'chapters'])->first();
-        $editor = $this->getEditor();
+        $editor = $this->users->editor();
         $this->actingAs($editor)->delete($page->getUrl());
         $this->actingAs($editor)->delete($book->getUrl());
 
         $viewReq = $this->asAdmin()->get('/settings/recycle-bin');
         $html = $this->withHtml($viewReq);
-        $html->assertElementContains('table.table', $page->name);
-        $html->assertElementContains('table.table', $editor->name);
-        $html->assertElementContains('table.table', $book->name);
-        $html->assertElementContains('table.table', $book->pages_count . ' Pages');
-        $html->assertElementContains('table.table', $book->chapters_count . ' Chapters');
+        $html->assertElementContains('.item-list-row', $page->name);
+        $html->assertElementContains('.item-list-row', $editor->name);
+        $html->assertElementContains('.item-list-row', $book->name);
+        $html->assertElementContains('.item-list-row', $book->pages_count . ' Pages');
+        $html->assertElementContains('.item-list-row', $book->chapters_count . ' Chapters');
     }
 
     public function test_recycle_bin_empty()
     {
-        $page = Page::query()->first();
+        $page = $this->entities->page();
         $book = Book::query()->where('id', '!=', $page->book_id)->whereHas('pages')->whereHas('chapters')->with(['pages', 'chapters'])->firstOrFail();
-        $editor = $this->getEditor();
+        $editor = $this->users->editor();
         $this->actingAs($editor)->delete($page->getUrl());
         $this->actingAs($editor)->delete($book->getUrl());
 
@@ -97,7 +94,7 @@ class RecycleBinTest extends TestCase
 
     public function test_entity_restore()
     {
-        $book = Book::query()->whereHas('pages')->whereHas('chapters')->with(['pages', 'chapters'])->firstOrFail();
+        $book = $this->entities->bookHasChaptersAndPages();
         $this->asEditor()->delete($book->getUrl());
         $deletion = Deletion::query()->firstOrFail();
 
@@ -118,7 +115,7 @@ class RecycleBinTest extends TestCase
 
     public function test_permanent_delete()
     {
-        $book = Book::query()->whereHas('pages')->whereHas('chapters')->with(['pages', 'chapters'])->firstOrFail();
+        $book = $this->entities->bookHasChaptersAndPages();
         $this->asEditor()->delete($book->getUrl());
         $deletion = Deletion::query()->firstOrFail();
 
@@ -137,9 +134,7 @@ class RecycleBinTest extends TestCase
 
     public function test_permanent_delete_for_each_type()
     {
-        /** @var Entity $entity */
-        foreach ([new Bookshelf(), new Book(), new Chapter(), new Page()] as $entity) {
-            $entity = $entity->newQuery()->first();
+        foreach ($this->entities->all() as $type => $entity) {
             $this->asEditor()->delete($entity->getUrl());
             $deletion = Deletion::query()->orderBy('id', 'desc')->firstOrFail();
 
@@ -152,28 +147,28 @@ class RecycleBinTest extends TestCase
 
     public function test_permanent_entity_delete_updates_existing_activity_with_entity_name()
     {
-        $page = Page::query()->firstOrFail();
+        $page = $this->entities->page();
         $this->asEditor()->delete($page->getUrl());
         $deletion = $page->deletions()->firstOrFail();
 
         $this->assertDatabaseHas('activities', [
             'type'        => 'page_delete',
-            'entity_id'   => $page->id,
-            'entity_type' => $page->getMorphClass(),
+            'loggable_id'   => $page->id,
+            'loggable_type' => $page->getMorphClass(),
         ]);
 
         $this->asAdmin()->delete("/settings/recycle-bin/{$deletion->id}");
 
         $this->assertDatabaseMissing('activities', [
             'type'        => 'page_delete',
-            'entity_id'   => $page->id,
-            'entity_type' => $page->getMorphClass(),
+            'loggable_id'   => $page->id,
+            'loggable_type' => $page->getMorphClass(),
         ]);
 
         $this->assertDatabaseHas('activities', [
             'type'        => 'page_delete',
-            'entity_id'   => null,
-            'entity_type' => null,
+            'loggable_id'   => null,
+            'loggable_type' => null,
             'detail'      => $page->name,
         ]);
     }
@@ -181,8 +176,8 @@ class RecycleBinTest extends TestCase
     public function test_auto_clear_functionality_works()
     {
         config()->set('app.recycle_bin_lifetime', 5);
-        $page = Page::query()->firstOrFail();
-        $otherPage = Page::query()->where('id', '!=', $page->id)->firstOrFail();
+        $page = $this->entities->page();
+        $otherPage = $this->entities->page();
 
         $this->asEditor()->delete($page->getUrl());
         $this->assertDatabaseHas('pages', ['id' => $page->id]);
@@ -198,8 +193,8 @@ class RecycleBinTest extends TestCase
     public function test_auto_clear_functionality_with_negative_time_keeps_forever()
     {
         config()->set('app.recycle_bin_lifetime', -1);
-        $page = Page::query()->firstOrFail();
-        $otherPage = Page::query()->where('id', '!=', $page->id)->firstOrFail();
+        $page = $this->entities->page();
+        $otherPage = $this->entities->page();
 
         $this->asEditor()->delete($page->getUrl());
         $this->assertEquals(1, Deletion::query()->count());
@@ -214,7 +209,7 @@ class RecycleBinTest extends TestCase
     public function test_auto_clear_functionality_with_zero_time_deletes_instantly()
     {
         config()->set('app.recycle_bin_lifetime', 0);
-        $page = Page::query()->firstOrFail();
+        $page = $this->entities->page();
 
         $this->asEditor()->delete($page->getUrl());
         $this->assertDatabaseMissing('pages', ['id' => $page->id]);
@@ -253,8 +248,7 @@ class RecycleBinTest extends TestCase
 
     public function test_restore_page_shows_link_to_parent_restore_if_parent_also_deleted()
     {
-        /** @var Book $book */
-        $book = Book::query()->whereHas('pages')->whereHas('chapters')->with(['pages', 'chapters'])->firstOrFail();
+        $book = $this->entities->bookHasChaptersAndPages();
         $chapter = $book->chapters->first();
         /** @var Page $page */
         $page = $chapter->pages->first();