+ public function test_shelf_view_has_sort_control_that_defaults_to_default()
+ {
+ $shelf = Bookshelf::query()->first();
+ $resp = $this->asAdmin()->get($shelf->getUrl());
+ $this->withHtml($resp)->assertElementExists('form[action$="change-sort/shelf_books"]');
+ $this->withHtml($resp)->assertElementContains('form[action$="change-sort/shelf_books"] [aria-haspopup="true"]', 'Default');
+ }
+
+ public function test_shelf_view_sort_takes_action()
+ {
+ $shelf = Bookshelf::query()->whereHas('books')->with('books')->first();
+ $books = Book::query()->take(3)->get(['id', 'name']);
+ $books[0]->fill(['name' => 'bsfsdfsdfsd'])->save();
+ $books[1]->fill(['name' => 'adsfsdfsdfsd'])->save();
+ $books[2]->fill(['name' => 'hdgfgdfg'])->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();
+
+ $resp = $this->asEditor()->get($shelf->getUrl());
+ $this->withHtml($resp)->assertElementContains('.book-content a.grid-card:nth-child(1)', $books[0]->name);
+ $this->withHtml($resp)->assertElementNotContains('.book-content a.grid-card:nth-child(3)', $books[0]->name);
+
+ setting()->putUser($this->getEditor(), 'shelf_books_sort_order', 'desc');
+ $resp = $this->asEditor()->get($shelf->getUrl());
+ $this->withHtml($resp)->assertElementNotContains('.book-content a.grid-card:nth-child(1)', $books[0]->name);
+ $this->withHtml($resp)->assertElementContains('.book-content a.grid-card:nth-child(3)', $books[0]->name);
+
+ setting()->putUser($this->getEditor(), 'shelf_books_sort_order', 'desc');
+ setting()->putUser($this->getEditor(), 'shelf_books_sort', 'name');
+ $resp = $this->asEditor()->get($shelf->getUrl());
+ $this->withHtml($resp)->assertElementContains('.book-content a.grid-card:nth-child(1)', 'hdgfgdfg');
+ $this->withHtml($resp)->assertElementContains('.book-content a.grid-card:nth-child(2)', 'bsfsdfsdfsd');
+ $this->withHtml($resp)->assertElementContains('.book-content a.grid-card:nth-child(3)', 'adsfsdfsdfsd');
+ }
+