From ff494be9529550b40bbc8f0ee64e90ea5ff01da0 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 1 Sep 2021 20:29:39 +0100 Subject: [PATCH] Fixed lack of proper ordering of pages Added test to cover Fixes #2905 --- app/Entities/Models/Page.php | 4 ++-- tests/Entity/SortTest.php | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/Entities/Models/Page.php b/app/Entities/Models/Page.php index aeee50d0f..b8467c38c 100644 --- a/app/Entities/Models/Page.php +++ b/app/Entities/Models/Page.php @@ -25,8 +25,8 @@ use Permissions; */ 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']; diff --git a/tests/Entity/SortTest.php b/tests/Entity/SortTest.php index f3d50b67d..e058b39aa 100644 --- a/tests/Entity/SortTest.php +++ b/tests/Entity/SortTest.php @@ -258,4 +258,25 @@ class SortTest extends TestCase $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); + } }