diff --git a/app/Entities/Repos/PageRepo.php b/app/Entities/Repos/PageRepo.php index 501b19c78..e49eeb1ef 100644 --- a/app/Entities/Repos/PageRepo.php +++ b/app/Entities/Repos/PageRepo.php @@ -306,10 +306,7 @@ class PageRepo throw new PermissionsException('User does not have permission to create a page within the new parent'); } - if ($parent instanceof Chapter) { - $page->chapter_id = $parent->id; - } - + $page->chapter_id = ($parent instanceof Chapter) ? $parent->id : null; $page->changeBook($parent instanceof Book ? $parent->id : $parent->book->id); $page->rebuildPermissions(); diff --git a/tests/Entity/SortTest.php b/tests/Entity/SortTest.php index d7c004dc8..7d67f05c6 100644 --- a/tests/Entity/SortTest.php +++ b/tests/Entity/SortTest.php @@ -66,10 +66,28 @@ class SortTest extends TestCase $this->assertTrue($page->book->id == $newBook->id, 'Page parent is now the new chapter'); $newChapterResp = $this->get($newChapter->getUrl()); - $newChapterResp->assertSee('moved page'); $newChapterResp->assertSee($page->name); } + public function test_page_move_from_chapter_to_book() + { + $oldChapter = Chapter::first(); + $page = $oldChapter->pages()->first(); + $newBook = Book::where('id', '!=', $oldChapter->book_id)->first(); + + $movePageResp = $this->actingAs($this->getEditor())->put($page->getUrl('/move'), [ + 'entity_selection' => 'book:' . $newBook->id + ]); + $page = Page::find($page->id); + + $movePageResp->assertRedirect($page->getUrl()); + $this->assertTrue($page->book->id == $newBook->id, 'Page parent is now the new book'); + $this->assertTrue($page->chapter === null, 'Page has no parent chapter'); + + $newBookResp = $this->get($newBook->getUrl()); + $newBookResp->assertSee($page->name); + } + public function test_page_move_requires_create_permissions_on_parent() { $page = Page::first();