From 1db518df76c59c20066727b48d11f5d199dbd6c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radim=20Vaculi=CC=81k?= Date: Tue, 17 Mar 2026 10:48:43 +0100 Subject: [PATCH] Tests: add regression tests for FilterRange with zero value (#730) Verify that '0' is correctly treated as a valid filter value in FilterRange, not skipped as if no filter was provided. --- tests/Cases/DataSources/ArrayDataSourceTest.phpt | 16 ++++++++++++++++ tests/Cases/DataSources/BaseDataSourceTest.phpt | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/tests/Cases/DataSources/ArrayDataSourceTest.phpt b/tests/Cases/DataSources/ArrayDataSourceTest.phpt index 575d29c90..0e8a7609b 100644 --- a/tests/Cases/DataSources/ArrayDataSourceTest.phpt +++ b/tests/Cases/DataSources/ArrayDataSourceTest.phpt @@ -5,6 +5,7 @@ namespace Contributte\Datagrid\Tests\Cases\DataSources; use Contributte\Datagrid\DataSource\ArrayDataSource; use Contributte\Datagrid\Filter\FilterDate; use Contributte\Datagrid\Filter\FilterDateRange; +use Contributte\Datagrid\Filter\FilterRange; use Contributte\Datagrid\Tests\Files\TestingDatagridFactory; use Tester\Assert; @@ -51,6 +52,21 @@ final class ArrayDataSourceTest extends BaseDataSourceTest Assert::same(0, $ds->getCount()); } + public function testFilterRangeWithZeroFromValue(): void + { + $ds = new ArrayDataSource([ + ['id' => 1, 'name' => 'Negative', 'age' => -5, 'address' => ''], + ['id' => 2, 'name' => 'Zero', 'age' => 0, 'address' => ''], + ['id' => 3, 'name' => 'Positive', 'age' => 5, 'address' => ''], + ]); + + $filter = new FilterRange($this->grid, 'a', 'b', 'age', '-'); + $filter->setValue(['from' => '0', 'to' => '']); + $ds->filter([$filter]); + + Assert::same(2, $ds->getCount()); + } + public function testFilterDateRangeWithInvalidToValue(): void { $ds = new ArrayDataSource([ diff --git a/tests/Cases/DataSources/BaseDataSourceTest.phpt b/tests/Cases/DataSources/BaseDataSourceTest.phpt index 804facdcc..01119fd0b 100644 --- a/tests/Cases/DataSources/BaseDataSourceTest.phpt +++ b/tests/Cases/DataSources/BaseDataSourceTest.phpt @@ -138,6 +138,15 @@ abstract class BaseDataSourceTest extends TestCase ], $this->getActualResultAsArray()); } + public function testFilterRangeWithZeroToValue(): void + { + $filter = new FilterRange($this->grid, 'a', 'b', 'age', '-'); + $filter->setValue(['from' => '', 'to' => '0']); + $this->ds->filter([$filter]); + + Assert::equal([], $this->getActualResultAsArray()); + } + public function testFilterOne(): void { $this->ds->filterOne(['id' => 8]);