*/
class Page extends BookChild
{
- public static $listAttributes = ['name', 'id', 'slug', 'book_id', 'chapter_id', 'draft', 'template', 'text', 'created_at', 'updated_at'];
- public static $contentAttributes = ['name', 'id', 'slug', 'book_id', 'chapter_id', 'draft', 'template', 'html', 'text', 'created_at', 'updated_at'];
+ public static $listAttributes = ['name', 'id', 'slug', 'book_id', 'chapter_id', 'draft', 'template', 'text', 'created_at', 'updated_at', 'priority'];
+ public static $contentAttributes = ['name', 'id', 'slug', 'book_id', 'chapter_id', 'draft', 'template', 'html', 'text', 'created_at', 'updated_at', 'priority'];
protected $fillable = ['name', 'priority', 'markdown'];
$checkResp = $this->get(Page::find($checkPage->id)->getUrl());
$checkResp->assertSee($newBook->name);
}
+
+ public function test_pages_in_book_show_sorted_by_priority()
+ {
+ /** @var Book $book */
+ $book = Book::query()->whereHas('pages')->first();
+ $book->chapters()->forceDelete();
+ /** @var Page[] $pages */
+ $pages = $book->pages()->where('chapter_id', '=', 0)->take(2)->get();
+ $book->pages()->whereNotIn('id', $pages->pluck('id'))->delete();
+
+ $resp = $this->asEditor()->get($book->getUrl());
+ $resp->assertElementContains('.content-wrap a.page:nth-child(1)', $pages[0]->name);
+ $resp->assertElementContains('.content-wrap a.page:nth-child(2)', $pages[1]->name);
+
+ $pages[0]->forceFill(['priority' => 10])->save();
+ $pages[1]->forceFill(['priority' => 5])->save();
+
+ $resp = $this->asEditor()->get($book->getUrl());
+ $resp->assertElementContains('.content-wrap a.page:nth-child(1)', $pages[1]->name);
+ $resp->assertElementContains('.content-wrap a.page:nth-child(2)', $pages[0]->name);
+ }
}