diff --git a/modules/opencase_entities/src/Entity/OCActor.php b/modules/opencase_entities/src/Entity/OCActor.php index 1e919d2..38424d4 100644 --- a/modules/opencase_entities/src/Entity/OCActor.php +++ b/modules/opencase_entities/src/Entity/OCActor.php @@ -211,6 +211,9 @@ class OCActor extends RevisionableContentEntityBase implements OCActorInterface public function getCountOfCaseProvisions(array $conditionsToApplyToCaseProvisionQuery = []): int { $query = \Drupal::entityQuery('oc_case_provision'); $query->condition('oc_provider', $this->id()); + foreach($conditionsToApplyToCaseProvisionQuery as $condition) { + $query->condition($condition[0], $condition[1], $condition[2] ?? '='); + } return count($query->execute()); } diff --git a/tests/src/Unit/OCActorTest.php b/tests/src/Unit/OCActorTest.php index fe7d830..a83bc88 100644 --- a/tests/src/Unit/OCActorTest.php +++ b/tests/src/Unit/OCActorTest.php @@ -15,7 +15,7 @@ class OCActorTest extends UnitTestCase{ ]); } - public function testGetCountOfCaseProvisions(): void{ + public function testGetCountOfCaseProvisionsWithNoExtraConditions(): void{ $storage = $this->getStorage($this->etm, 'oc_case_provision'); $query = $this->getQuery($storage); $actor = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\\OCActor')->disableOriginalConstructor() @@ -27,4 +27,35 @@ class OCActorTest extends UnitTestCase{ $count = $actor->getCountOfCaseProvisions(); $this->assertTrue($count == 4); } + + + public function testGetCountOfCaseProvisionsWithExtraConditions(): void{ + $storage = $this->getStorage($this->etm, 'oc_case_provision'); + $query = $this->getQuery($storage); + $actor = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\\OCActor')->disableOriginalConstructor() + ->onlyMethods(['id']) + ->getMock(); + $actor->expects($this->once())->method('id')->willReturn(5); + $query->expects($this->exactly(2))->method('condition')->withConsecutive( + ['oc_provider', 5], + ['some_date_field', '2022-01-01', '<']); + $query->expects($this->once())->method('execute')->willReturn([1,2,3,4]); + $count = $actor->getCountOfCaseProvisions([['some_date_field', '2022-01-01', '<']]); + $this->assertTrue($count == 4); + } + + public function testGetCountOfCaseProvisionsWithExtraConditionsWithAssumedEqualityOperator(): void{ + $storage = $this->getStorage($this->etm, 'oc_case_provision'); + $query = $this->getQuery($storage); + $actor = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\\OCActor')->disableOriginalConstructor() + ->onlyMethods(['id']) + ->getMock(); + $actor->expects($this->once())->method('id')->willReturn(5); + $query->expects($this->exactly(2))->method('condition')->withConsecutive( + ['oc_provider', 5], + ['some_date_field', '2022-01-01', '=']); + $query->expects($this->once())->method('execute')->willReturn([1,2,3,4]); + $count = $actor->getCountOfCaseProvisions([['some_date_field', '2022-01-01']]); + $this->assertTrue($count == 4); + } }