X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a2087fe3ff3b33e1dcaececafa6dd6bb65a3feae..99ce3067c7325bad066cde5eeb512ae421b869b4:/tests/Entity/SortTest.php diff --git a/tests/Entity/SortTest.php b/tests/Entity/SortTest.php index 11294f7df..3c83d626a 100644 --- a/tests/Entity/SortTest.php +++ b/tests/Entity/SortTest.php @@ -9,7 +9,7 @@ class SortTest extends TestCase { protected $book; - public function setUp() + public function setUp(): void { parent::setUp(); $this->book = Book::first(); @@ -19,7 +19,7 @@ class SortTest extends TestCase { $this->asAdmin(); $pageRepo = app(PageRepo::class); - $draft = $pageRepo->getDraftPage($this->book); + $draft = $pageRepo->getNewDraftPage($this->book); $resp = $this->get($this->book->getUrl()); $resp->assertSee($draft->name); @@ -213,7 +213,6 @@ class SortTest extends TestCase 'entity_selection' => 'book:' . $newBook->id, 'name' => 'My copied test page' ]); - $pageCopy = Page::where('name', '=', 'My copied test page')->first(); $movePageResp->assertRedirect($pageCopy->getUrl()); @@ -239,4 +238,35 @@ class SortTest extends TestCase $this->assertTrue($pageCopy->id !== $page->id, 'Page copy is not the same instance'); } + public function test_page_can_be_copied_without_edit_permission() + { + $page = Page::first(); + $currentBook = $page->book; + $newBook = Book::where('id', '!=', $currentBook->id)->first(); + $viewer = $this->getViewer(); + + $resp = $this->actingAs($viewer)->get($page->getUrl()); + $resp->assertDontSee($page->getUrl('/copy')); + + $newBook->created_by = $viewer->id; + $newBook->save(); + $this->giveUserPermissions($viewer, ['page-create-own']); + $this->regenEntityPermissions($newBook); + + $resp = $this->actingAs($viewer)->get($page->getUrl()); + $resp->assertSee($page->getUrl('/copy')); + + $movePageResp = $this->post($page->getUrl('/copy'), [ + 'entity_selection' => 'book:' . $newBook->id, + 'name' => 'My copied test page' + ]); + $movePageResp->assertRedirect(); + + $this->assertDatabaseHas('pages', [ + 'name' => 'My copied test page', + 'created_by' => $viewer->id, + 'book_id' => $newBook->id, + ]); + } + } \ No newline at end of file