diff --git a/src/Views/Filters/LivewireComponentArrayFilter.php b/src/Views/Filters/LivewireComponentArrayFilter.php index f4505750c..ce2c005a3 100644 --- a/src/Views/Filters/LivewireComponentArrayFilter.php +++ b/src/Views/Filters/LivewireComponentArrayFilter.php @@ -25,7 +25,7 @@ public function validate(array $value): array|bool public function isEmpty(array $value = []): bool { - return empty($value); + return empty($value) || (count($value) == 1 && (is_null($value[0]) || $value[0] == '')); } /** diff --git a/tests/Unit/Views/Filters/LivewireComponentArrayFilterTest.php b/tests/Unit/Views/Filters/LivewireComponentArrayFilterTest.php new file mode 100644 index 000000000..eb83ff7cd --- /dev/null +++ b/tests/Unit/Views/Filters/LivewireComponentArrayFilterTest.php @@ -0,0 +1,53 @@ +assertFalse(self::$filterInstance->hasFilterCallback()); + + self::$filterInstance + ->filter(function (Builder $builder, array $values) { + return $builder->whereIn('name', $values); + }); + + $this->assertTrue(self::$filterInstance->hasFilterCallback()); + $this->assertIsCallable(self::$filterInstance->getFilterCallback()); + } + + public function test_can_set_livewire_component_filter_to_text(): void + { + $this->assertSame(['test'], self::$filterInstance->validate(['test'])); + $this->assertSame([123], self::$filterInstance->validate([123])); + + } + + public function test_can_get_if_livewire_component_filter_empty(): void + { + $this->assertTrue(self::$filterInstance->isEmpty()); + $this->assertTrue(self::$filterInstance->isEmpty([])); + $this->assertTrue(self::$filterInstance->isEmpty([''])); + $this->assertFalse(self::$filterInstance->isEmpty(['123'])); + $this->assertFalse(self::$filterInstance->isEmpty(['test'])); + $this->assertFalse(self::$filterInstance->isEmpty([1234])); + + } + + public function test_can_get_filter_default_value(): void + { + $this->assertSame([], self::$filterInstance->getDefaultValue()); + } +}