+ $pageCheckResp = $this->get($pageToCheck->getUrl());
+ $pageCheckResp->assertSee($newBook->name);
+ }
+
+ public function test_book_sort()
+ {
+ $oldBook = Book::query()->first();
+ $chapterToMove = $this->newChapter(['name' => 'chapter to move'], $oldBook);
+ $newBook = $this->newBook(['name' => 'New sort book']);
+ $pagesToMove = Page::query()->take(5)->get();
+
+ // Create request data
+ $reqData = [
+ [
+ 'id' => $chapterToMove->id,
+ 'sort' => 0,
+ 'parentChapter' => false,
+ 'type' => 'chapter',
+ 'book' => $newBook->id
+ ]
+ ];
+ foreach ($pagesToMove as $index => $page) {
+ $reqData[] = [
+ 'id' => $page->id,
+ 'sort' => $index,
+ 'parentChapter' => $index === count($pagesToMove) - 1 ? $chapterToMove->id : false,
+ 'type' => 'page',
+ 'book' => $newBook->id
+ ];
+ }
+
+ $sortResp = $this->asEditor()->put($newBook->getUrl() . '/sort', ['sort-tree' => json_encode($reqData)]);
+ $sortResp->assertRedirect($newBook->getUrl());
+ $sortResp->assertStatus(302);
+ $this->assertDatabaseHas('chapters', [
+ 'id' => $chapterToMove->id,
+ 'book_id' => $newBook->id,
+ 'priority' => 0
+ ]);
+ $this->assertTrue($newBook->chapters()->count() === 1);
+ $this->assertTrue($newBook->chapters()->first()->pages()->count() === 1);
+
+ $checkPage = $pagesToMove[1];
+ $checkResp = $this->get(Page::find($checkPage->id)->getUrl());
+ $checkResp->assertSee($newBook->name);
+ }
+
+ public function test_page_copy()
+ {
+ $page = Page::first();
+ $currentBook = $page->book;
+ $newBook = Book::where('id', '!=', $currentBook->id)->first();
+
+ $resp = $this->asEditor()->get($page->getUrl('/copy'));
+ $resp->assertSee('Copy Page');
+
+ $movePageResp = $this->post($page->getUrl('/copy'), [
+ 'entity_selection' => 'book:' . $newBook->id,
+ 'name' => 'My copied test page'
+ ]);
+
+ $pageCopy = Page::where('name', '=', 'My copied test page')->first();
+
+ $movePageResp->assertRedirect($pageCopy->getUrl());
+ $this->assertTrue($pageCopy->book->id == $newBook->id, 'Page was copied to correct book');
+ }
+
+ public function test_page_copy_with_no_destination()
+ {
+ $page = Page::first();
+ $currentBook = $page->book;
+
+ $resp = $this->asEditor()->get($page->getUrl('/copy'));
+ $resp->assertSee('Copy Page');
+
+ $movePageResp = $this->post($page->getUrl('/copy'), [
+ 'name' => 'My copied test page'
+ ]);
+
+ $pageCopy = Page::where('name', '=', 'My copied test page')->first();
+
+ $movePageResp->assertRedirect($pageCopy->getUrl());
+ $this->assertTrue($pageCopy->book->id == $currentBook->id, 'Page was copied to correct book');
+ $this->assertTrue($pageCopy->id !== $page->id, 'Page copy is not the same instance');