mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
Shelf view: Updated books to be database sorted
Fixes issue where sorting would not match other database-sorted parts of app due to case sensitivity differences. Added test to cover. For #4341
This commit is contained in:
parent
0a485baf8b
commit
9ae17efce9
@ -30,7 +30,7 @@ class BookshelfController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a listing of the book.
|
* Display a listing of bookshelves.
|
||||||
*/
|
*/
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
@ -111,8 +111,9 @@ class BookshelfController extends Controller
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$sort = $listOptions->getSort();
|
$sort = $listOptions->getSort();
|
||||||
$sortedVisibleShelfBooks = $shelf->visibleBooks()->get()
|
$sortedVisibleShelfBooks = $shelf->visibleBooks()
|
||||||
->sortBy($sort === 'default' ? 'pivot.order' : $sort, SORT_REGULAR, $listOptions->getOrder() === 'desc')
|
->reorder($sort === 'default' ? 'order' : $sort, $listOptions->getOrder())
|
||||||
|
->get()
|
||||||
->values()
|
->values()
|
||||||
->all();
|
->all();
|
||||||
|
|
||||||
|
@ -196,6 +196,31 @@ class BookShelfTest extends TestCase
|
|||||||
$this->withHtml($resp)->assertElementContains('.book-content a.grid-card:nth-child(3)', 'adsfsdfsdfsd');
|
$this->withHtml($resp)->assertElementContains('.book-content a.grid-card:nth-child(3)', 'adsfsdfsdfsd');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_shelf_view_sorts_by_name_case_insensitively()
|
||||||
|
{
|
||||||
|
$shelf = Bookshelf::query()->whereHas('books')->with('books')->first();
|
||||||
|
$books = Book::query()->take(3)->get(['id', 'name']);
|
||||||
|
$books[0]->fill(['name' => 'Book Ab'])->save();
|
||||||
|
$books[1]->fill(['name' => 'Book ac'])->save();
|
||||||
|
$books[2]->fill(['name' => 'Book AD'])->save();
|
||||||
|
|
||||||
|
// Set book ordering
|
||||||
|
$this->asAdmin()->put($shelf->getUrl(), [
|
||||||
|
'books' => $books->implode('id', ','),
|
||||||
|
'tags' => [], 'description' => 'abc', 'name' => 'abc',
|
||||||
|
]);
|
||||||
|
$this->assertEquals(3, $shelf->books()->count());
|
||||||
|
$shelf->refresh();
|
||||||
|
|
||||||
|
setting()->putUser($this->users->editor(), 'shelf_books_sort', 'name');
|
||||||
|
setting()->putUser($this->users->editor(), 'shelf_books_sort_order', 'asc');
|
||||||
|
$html = $this->withHtml($this->asEditor()->get($shelf->getUrl()));
|
||||||
|
|
||||||
|
$html->assertElementContains('.book-content a.grid-card:nth-child(1)', 'Book Ab');
|
||||||
|
$html->assertElementContains('.book-content a.grid-card:nth-child(2)', 'Book ac');
|
||||||
|
$html->assertElementContains('.book-content a.grid-card:nth-child(3)', 'Book AD');
|
||||||
|
}
|
||||||
|
|
||||||
public function test_shelf_edit()
|
public function test_shelf_edit()
|
||||||
{
|
{
|
||||||
$shelf = $this->entities->shelf();
|
$shelf = $this->entities->shelf();
|
||||||
|
Loading…
Reference in New Issue
Block a user