Skip to content

Commit

Permalink
Utils: Crm Filter:isValid now validate conditions by AND instead of OR.
Browse files Browse the repository at this point in the history
  • Loading branch information
DominikVisek authored and f3l1x committed Feb 3, 2020
1 parent 6c99355 commit 95fc7aa
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
14 changes: 5 additions & 9 deletions src/App/Adminus/Crm/Utils/Filter.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class Filter
*/
public static function getValid(array $items, array $filters): array
{
if (count($filters) === 0) {
if ($filters === []) {
return $items;
}

Expand All @@ -33,21 +33,17 @@ public static function getValid(array $items, array $filters): array
*/
public static function isValid(array $item, array $filters): bool
{
if (count($filters) === 0) {
return TRUE;
}

foreach ($filters as $key => $value) {
if (isset($item[$key]) === FALSE) {
continue;
return FALSE;
}

if ($item[$key] === $value) {
return TRUE;
if ($item[$key] !== $value) {
return FALSE;
}
}

return FALSE;
return TRUE;
}

}
17 changes: 14 additions & 3 deletions tests/cases/App/Crm/Utils/FilterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,20 @@ class FilterTest extends TestCase

public function testIsValid(): void
{
$item = ['is_active' => 1];
$item = ['is_active' => 1, 'secondOne' => 2, 'thirdOne' => 3];

$this->assertTrue(Filter::isValid($item, []));
$this->assertTrue(Filter::isValid($item, ['is_active' => 1]));
$this->assertTrue(Filter::isValid($item, ['is_active' => 1, 'secondOne' => 2]));
$this->assertTrue(Filter::isValid($item, ['is_active' => 1, 'thirdOne' => 3]));
$this->assertTrue(Filter::isValid($item, ['is_active' => 1, 'secondOne' => 2, 'thirdOne' => 3]));

$this->assertFalse(Filter::isValid($item, ['is_active' => TRUE]));
$this->assertFalse(Filter::isValid($item, ['nonExistingKey' => TRUE]));
$this->assertFalse(Filter::isValid($item, ['is_active' => 1, 'secondOne' => 3]));
$this->assertFalse(Filter::isValid($item, ['is_active' => 1, 'nonExistingKey' => 3]));
$this->assertFalse(Filter::isValid($item, ['is_active' => 1, 'secondOne' => 2, 'nonExistingKey' => 3]));
$this->assertFalse(Filter::isValid($item, ['is_active' => 1, 'secondOne' => 2, 'thirdOne' => 3, 'nonExistingKey' => FALSE]));
}

public function testGetValid(): void
Expand All @@ -25,12 +32,16 @@ public function testGetValid(): void
$item2 = ['is_active' => 1];
$item3 = ['is_active' => TRUE];
$item4 = ['nonExistingKey' => 0];
$items = [$item1, $item2, $item3, $item4];
$item5 = ['is_active' => 1, 'secondOne' => 2, 'thirdOne' => 3];
$items = [$item1, $item2, $item3, $item4, $item5];

$this->assertEquals([$item2], Filter::getValid($items, ['is_active' => 1]));
$this->assertEquals([$item2, $item5], Filter::getValid($items, ['is_active' => 1]));
$this->assertEquals([$item3], Filter::getValid($items, ['is_active' => TRUE]));
$this->assertEquals([$item5], Filter::getValid($items, ['is_active' => 1, 'thirdOne' => 3]));
$this->assertEquals($items, Filter::getValid($items, []));
$this->assertEquals([], Filter::getValid($items, ['is_active' => 1, 'thirdOne' => 3, 'nonExistingKey' => 0]));
$this->assertEquals([], Filter::getValid($items, ['non' => FALSE]));
$this->assertEquals([], Filter::getValid($items, ['is_active' => 1, 'thirdOne' => 2]));
}

}

0 comments on commit 95fc7aa

Please sign in to comment.