+ $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->asAdmin()->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);