X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/6edf2c155dd24c4876fc15481ffd74bf3b2e4d05..refs/pull/4252/head:/tests/Settings/RecycleBinTest.php diff --git a/tests/Settings/RecycleBinTest.php b/tests/Settings/RecycleBinTest.php index 465c1aaad..8adc92f25 100644 --- a/tests/Settings/RecycleBinTest.php +++ b/tests/Settings/RecycleBinTest.php @@ -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,7 +147,7 @@ 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(); @@ -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();