Files
BookStack/tests/Settings/PageListLimitsTest.php
Dan Brown 10f5ceee35 List page settings: Review of #5606
Updated setting display to show mulitple number inputs under one heading
group.
Updated settings to use general number field form view template.
Updated translations to match display changes, and to advise on counts.
Added page count control for search results.
Added setting service method, to get settings as integers, with
min/max/default control.
Updating sorting group to be names "Lists & Sorting".
Added tests to cover.
2025-12-06 23:10:54 +00:00

82 lines
2.9 KiB
PHP

<?php
namespace Settings;
use BookStack\Entities\Models\Book;
use BookStack\Entities\Models\Bookshelf;
use Tests\TestCase;
class PageListLimitsTest extends TestCase
{
public function test_saving_setting_and_loading()
{
$resp = $this->asAdmin()->post('/settings/sorting', [
'setting-lists-page-count-shelves' => '3',
'setting-lists-page-count-books' => '6',
'setting-lists-page-count-search' => '9',
]);
$resp->assertRedirect('/settings/sorting');
$this->assertEquals(3, setting()->getInteger('lists-page-count-shelves', 18));
$this->assertEquals(6, setting()->getInteger('lists-page-count-books', 18));
$this->assertEquals(9, setting()->getInteger('lists-page-count-search', 18));
$resp = $this->get('/settings/sorting');
$html = $this->withHtml($resp);
$html->assertFieldHasValue('setting-lists-page-count-shelves', '3');
$html->assertFieldHasValue('setting-lists-page-count-books', '6');
$html->assertFieldHasValue('setting-lists-page-count-search', '9');
}
public function test_invalid_counts_will_use_default_when_fetched_as_an_integer()
{
$this->asAdmin()->post('/settings/sorting', [
'setting-lists-page-count-shelves' => 'cat',
]);
$this->assertEquals(18, setting()->getInteger('lists-page-count-shelves', 18));
}
public function test_shelf_count_is_used_on_shelves_view()
{
$resp = $this->asAdmin()->get('/shelves');
$defaultCount = min(Bookshelf::query()->count(), 18);
$this->withHtml($resp)->assertElementCount('main [data-entity-type="bookshelf"]', $defaultCount);
$this->post('/settings/sorting', [
'setting-lists-page-count-shelves' => '1',
]);
$resp = $this->get('/shelves');
$this->withHtml($resp)->assertElementCount('main [data-entity-type="bookshelf"]', 1);
}
public function test_shelf_count_is_used_on_books_view()
{
$resp = $this->asAdmin()->get('/books');
$defaultCount = min(Book::query()->count(), 18);
$this->withHtml($resp)->assertElementCount('main [data-entity-type="book"]', $defaultCount);
$this->post('/settings/sorting', [
'setting-lists-page-count-books' => '1',
]);
$resp = $this->get('/books');
$this->withHtml($resp)->assertElementCount('main [data-entity-type="book"]', 1);
}
public function test_shelf_count_is_used_on_search_view()
{
$resp = $this->asAdmin()->get('/search');
$this->withHtml($resp)->assertElementCount('.entity-list [data-entity-id]', 18);
$this->post('/settings/sorting', [
'setting-lists-page-count-search' => '1',
]);
$resp = $this->get('/search');
$this->withHtml($resp)->assertElementCount('.entity-list [data-entity-id]', 1);
}
}