diff --git a/src/Traits/Filters/HasFilterQueryString.php b/src/Traits/Filters/HasFilterQueryString.php index a3fd56dea..179d1b9cc 100644 --- a/src/Traits/Filters/HasFilterQueryString.php +++ b/src/Traits/Filters/HasFilterQueryString.php @@ -6,11 +6,6 @@ trait HasFilterQueryString { - #[Locked] - public ?bool $queryStringStatusForFilter; - - protected ?string $queryStringAliasForFilter; - protected function queryStringHasFilterQueryString(): array { return ($this->queryStringForFilterIsEnabled()) ? @@ -20,6 +15,11 @@ protected function queryStringHasFilterQueryString(): array ] : []; } + public function queryStringForFilterIsEnabled(): bool + { + return $this->getQueryStringStatusForFilter() && $this->filtersAreEnabled(); + } + public function hasQueryStringStatusForFilter(): bool { return $this->hasQueryStringConfigStatus('filters'); @@ -30,38 +30,32 @@ public function getQueryStringStatusForFilter(): bool return $this->getQueryStringConfigStatus('filters'); } - public function queryStringForFilterIsEnabled(): bool + public function hasQueryStringAliasForFilter(): bool { + return $this->hasQueryStringConfigAlias('filters'); + } - return $this->getQueryStringStatusForFilter() && $this->filtersAreEnabled(); + public function getQueryStringAliasForFilter(): string + { + return $this->getQueryStringConfigAlias('filters'); } - public function setQueryStringStatusForFilter(bool $status): self + protected function setQueryStringStatusForFilter(bool $status): self { return $this->setQueryStringConfigStatus('filters', $status); } - public function setQueryStringForFilterEnabled(): self + protected function setQueryStringForFilterEnabled(): self { return $this->setQueryStringStatusForFilter(true); } - public function setQueryStringForFilterDisabled(): self + protected function setQueryStringForFilterDisabled(): self { return $this->setQueryStringStatusForFilter(false); } - public function hasQueryStringAliasForFilter(): bool - { - return $this->hasQueryStringConfigAlias('filters'); - } - - public function getQueryStringAliasForFilter(): string - { - return $this->getQueryStringConfigAlias('filters'); - } - - public function setQueryStringAliasForFilter(string $alias): self + protected function setQueryStringAliasForFilter(string $alias): self { return $this->setQueryStringConfigAlias('filters', $alias); } diff --git a/src/Traits/Filters/ManagesFilters.php b/src/Traits/Filters/HasFiltersCore.php similarity index 72% rename from src/Traits/Filters/ManagesFilters.php rename to src/Traits/Filters/HasFiltersCore.php index bc2a454dd..06a6fa1de 100644 --- a/src/Traits/Filters/ManagesFilters.php +++ b/src/Traits/Filters/HasFiltersCore.php @@ -2,14 +2,18 @@ namespace Rappasoft\LaravelLivewireTables\Traits\Filters; -use Illuminate\Database\Eloquent\Builder; +use Rappasoft\LaravelLivewireTables\Traits\Filters\Configuration\FilterConfiguration; +use Rappasoft\LaravelLivewireTables\Traits\Filters\Helpers\FilterHelpers; -trait ManagesFilters +trait HasFiltersCore { + use FilterConfiguration, + FilterHelpers; + /** * Sets Filter Default Values */ - public function mountManagesFilters(): void + public function mountHasFiltersCore(): void { $this->restoreFilterValues(); @@ -26,7 +30,7 @@ public function mountManagesFilters(): void } } - public function bootedManagesFilters(): void + public function bootedHasFiltersCore(): void { $this->setBuilder($this->builder()); diff --git a/src/Traits/WithFilters.php b/src/Traits/WithFilters.php index b80e30b3e..08f66a8a8 100644 --- a/src/Traits/WithFilters.php +++ b/src/Traits/WithFilters.php @@ -4,19 +4,17 @@ use Illuminate\Support\Collection; use Livewire\Attributes\Locked; -use Rappasoft\LaravelLivewireTables\Traits\Filters\{Configuration\FilterConfiguration, HasFilterGenericData, HasFilterMenu, HasFilterPills, HasFilterQueryString, HasFiltersStatus, HasFiltersVisibility, Helpers\FilterHelpers, ManagesFilters}; +use Rappasoft\LaravelLivewireTables\Traits\Filters\{HasFilterGenericData, HasFilterMenu, HasFilterPills, HasFilterQueryString, HasFiltersCore, HasFiltersStatus, HasFiltersVisibility}; trait WithFilters { - use FilterConfiguration, - FilterHelpers, - HasFiltersStatus, + use HasFiltersStatus, HasFilterGenericData, HasFilterMenu, HasFilterPills, HasFilterQueryString, HasFiltersVisibility, - ManagesFilters; + HasFiltersCore; // Set in JS public array $filterComponents = []; diff --git a/tests/Http/Livewire/BaseTable.php b/tests/Http/Livewire/BaseTable.php index 98394bfba..b71ff951b 100644 --- a/tests/Http/Livewire/BaseTable.php +++ b/tests/Http/Livewire/BaseTable.php @@ -3,60 +3,11 @@ namespace Rappasoft\LaravelLivewireTables\Tests\Http\Livewire; use Rappasoft\LaravelLivewireTables\DataTableComponent; +use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\Traits\TestHelpers; abstract class BaseTable extends DataTableComponent { - public string $paginationTest = 'standard'; - - public function enableDetailedPagination(string $type = 'standard') - { - $this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3); - $this->setPaginationMethod($type); - $this->setDisplayPaginationDetailsEnabled(); - - } - - public function disableDetailedPagination(string $type = 'standard') - { - $this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3); - $this->setPaginationMethod($type); - $this->setDisplayPaginationDetailsDisabled(); - } - - public function setPaginationTest(string $type) - { - $this->paginationTest = $type; - } + use TestHelpers; - public function bootAll() - { - $view = view('livewire-tables::datatable'); - - $this->boot(); - $this->bootedComponentUtilities(); - $this->bootedManagesFilters(); - $this->bootedWithColumns(); - $this->bootedWithColumnSelect(); - $this->booted(); - $this->mountManagesFilters(); - $this->mountComponentUtilities(); - $this->mountWithSorting(); - $this->renderAll($view); - } - - public function renderAll($view = null) - { - if (is_null($view)) { - $view = view('livewire-tables::datatable'); - } - $this->renderingWithColumns($view, $view->getData()); - $this->renderingWithColumnSelect($view, $view->getData()); - $this->renderingWithCustomisations($view, $view->getData()); - $this->renderingWithData($view, $view->getData()); - $this->renderingWithReordering($view, $view->getData()); - $this->renderingWithPagination($view, $view->getData()); - $this->render(); - - return $view; - } + public string $paginationTest = 'standard'; } diff --git a/tests/Http/Livewire/Traits/TestHelpers.php b/tests/Http/Livewire/Traits/TestHelpers.php new file mode 100644 index 000000000..726de7c6d --- /dev/null +++ b/tests/Http/Livewire/Traits/TestHelpers.php @@ -0,0 +1,40 @@ +boot(); + $this->bootedComponentUtilities(); + $this->bootedHasFiltersCore(); + $this->bootedWithColumns(); + $this->bootedWithColumnSelect(); + $this->booted(); + $this->mountHasFiltersCore(); + $this->mountComponentUtilities(); + $this->mountWithSorting(); + $this->renderAll($view); + } + + public function renderAll($view = null) + { + if (is_null($view)) { + $view = view('livewire-tables::datatable'); + } + $this->renderingWithColumns($view, $view->getData()); + $this->renderingWithColumnSelect($view, $view->getData()); + $this->renderingWithCustomisations($view, $view->getData()); + $this->renderingWithData($view, $view->getData()); + $this->renderingWithReordering($view, $view->getData()); + $this->renderingWithPagination($view, $view->getData()); + $this->render(); + + return $view; + } +} diff --git a/tests/Http/Livewire/Traits/TestPaginationHelpers.php b/tests/Http/Livewire/Traits/TestPaginationHelpers.php new file mode 100644 index 000000000..0d7efa359 --- /dev/null +++ b/tests/Http/Livewire/Traits/TestPaginationHelpers.php @@ -0,0 +1,26 @@ +setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3); + $this->setPaginationMethod($type); + $this->setDisplayPaginationDetailsEnabled(); + + } + + public function disableDetailedPagination(string $type = 'standard') + { + $this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3); + $this->setPaginationMethod($type); + $this->setDisplayPaginationDetailsDisabled(); + } + + public function setPaginationTest(string $type) + { + $this->paginationTest = $type; + } +} diff --git a/tests/Unit/DataTableComponentTest.php b/tests/Unit/DataTableComponentTest.php index 46502d83d..0292feafd 100644 --- a/tests/Unit/DataTableComponentTest.php +++ b/tests/Unit/DataTableComponentTest.php @@ -68,9 +68,9 @@ public function test_minimum_one_column_expected(): void { $this->expectException(\Rappasoft\LaravelLivewireTables\Exceptions\NoColumnsException::class); $table = new NoColumnsTable; - $table->mountManagesFilters(); + $table->mountHasFiltersCore(); $table->boot(); - $table->bootedManagesFilters(); + $table->bootedHasFiltersCore(); $table->bootedComponentUtilities(); $table->bootedWithColumns(); $table->bootedWithColumnSelect(); diff --git a/tests/Unit/Traits/Core/QueryStrings/QueryStringTestBase.php b/tests/Unit/Traits/Core/QueryStrings/QueryStringTestBase.php index 769ae168f..a55a70c9a 100644 --- a/tests/Unit/Traits/Core/QueryStrings/QueryStringTestBase.php +++ b/tests/Unit/Traits/Core/QueryStrings/QueryStringTestBase.php @@ -23,6 +23,21 @@ public function configure(): void { $this->setDataTableFingerprint('test'); } + + public function setQueryStringAliasForFilter(string $alias): self + { + return parent::setQueryStringAliasForFilter($alias); + } + + public function setQueryStringForFilterEnabled(): self + { + return parent::setQueryStringForFilterEnabled(); + } + + public function setQueryStringForFilterDisabled(): self + { + return parent::setQueryStringForFilterDisabled(); + } }; } } diff --git a/tests/Unit/Traits/WithMountTest.php b/tests/Unit/Traits/WithMountTest.php index 3a8b1e49d..35350da69 100644 --- a/tests/Unit/Traits/WithMountTest.php +++ b/tests/Unit/Traits/WithMountTest.php @@ -14,7 +14,7 @@ public function test_mounttable_gets_correct_first_item(): void $table = new PetsTableMount; $table->boot(); $table->mount(102); - $table->mountManagesFilters(); + $table->mountHasFiltersCore(); $table->bootedComponentUtilities(); $table->bootedWithColumns(); $table->bootedWithColumnSelect(); @@ -30,9 +30,9 @@ public function test_mounttable_gets_correct_first_item(): void $table2 = new PetsTableMount; $table2->boot(); $table2->mount(202); - $table2->mountManagesFilters(); + $table2->mountHasFiltersCore(); $table2->bootedComponentUtilities(); - $table2->bootedManagesFilters(); + $table2->bootedHasFiltersCore(); $table2->bootedWithColumns(); $table2->bootedWithColumnSelect(); $table2->booted(); @@ -46,8 +46,8 @@ public function test_mounttable_gets_correct_first_item(): void $table3 = new PetsTableMount; $table3->boot(); $table3->mount(); - $table3->mountManagesFilters(); - $table3->bootedManagesFilters(); + $table3->mountHasFiltersCore(); + $table3->bootedHasFiltersCore(); $table3->bootedComponentUtilities(); $table3->bootedWithColumns(); $table3->bootedWithColumnSelect();