diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f2cc066..090d3e23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,8 +25,8 @@ - Chg #165: Simplify `FilterInterface` and `FilterHandlerInterface` (@vjik) - Chg #166: Remove `EqualsEmpty` filter (@vjik) - New #176: Add `OrderHelper` (@vjik) -- New #173, #184: Add `$caseSensitive` parameter to `Like` filter to control whether the search must be case-sensitive - or not (@arogachev) +- New #173, #184, #220: Add `$caseSensitive` parameter to `Like` filter to control whether the search must be + case-sensitive or not (@arogachev, @vjik) - Enh #187, #196: Limit set in data reader is now taken into account by offset paginator. Keyset paginator throws an exception in this case (@samdark, @vjik) - Chg #187: Add `FilterableDataInterface::getFilter()`, `LimitableDataInterface::getLimit()`, diff --git a/src/Reader/Filter/Like.php b/src/Reader/Filter/Like.php index 296972c8..762dc17d 100644 --- a/src/Reader/Filter/Like.php +++ b/src/Reader/Filter/Like.php @@ -37,7 +37,7 @@ public function getValue(): string return $this->value; } - public function isCaseSensitive(): ?bool + public function getCaseSensitive(): ?bool { return $this->caseSensitive; } diff --git a/src/Reader/Iterable/FilterHandler/LikeHandler.php b/src/Reader/Iterable/FilterHandler/LikeHandler.php index e07119f7..6e84b3d9 100644 --- a/src/Reader/Iterable/FilterHandler/LikeHandler.php +++ b/src/Reader/Iterable/FilterHandler/LikeHandler.php @@ -30,7 +30,7 @@ public function match(object|array $item, FilterInterface $filter, array $iterab return false; } - return $filter->isCaseSensitive() === true + return $filter->getCaseSensitive() === true ? str_contains($itemValue, $filter->getValue()) : mb_stripos($itemValue, $filter->getValue()) !== false; } diff --git a/tests/Reader/Filter/LikeTest.php b/tests/Reader/Filter/LikeTest.php new file mode 100644 index 00000000..5afbcb99 --- /dev/null +++ b/tests/Reader/Filter/LikeTest.php @@ -0,0 +1,29 @@ +assertSame('name', $like->getField()); + $this->assertSame('Kesha', $like->getValue()); + $this->assertNull($like->getCaseSensitive()); + } + + public function testWithCaseSensitive(): void + { + $like = new Like('name', 'Kesha', true); + + $this->assertSame('name', $like->getField()); + $this->assertSame('Kesha', $like->getValue()); + $this->assertTrue($like->getCaseSensitive()); + } +}