Handle errors when filtering dynamic segments

When a segment has an invalid filter we don't want that error to
break other pages in the MailPoet admin.

MAILPOET-5538
This commit is contained in:
John Oleksowicz
2023-10-25 16:38:11 -05:00
committed by Aschepikov
parent 2a1245bd8a
commit 5972db6a47
2 changed files with 24 additions and 1 deletions

View File

@@ -229,6 +229,22 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest {
verify($countWithFilter)->equals(2);
}
public function testSubscriberCountIsZeroIfItHasAnInvalidFilter(): void {
$segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description');
$filterData = new DynamicSegmentFilterData(
'typeThatDefinitelyDoesNotExist',
'theActionDoesNotExistEither'
);
$dynamicFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$segment->getDynamicFilters()->add($dynamicFilter);
$this->entityManager->persist($segment);
$this->entityManager->persist($dynamicFilter);
$this->entityManager->flush();
$count = $this->repository->getSubscribersCountBySegmentIds([$segment->getId()]);
$this->assertEquals(0, $count);
}
public function _after() {
parent::_after();
$this->cleanup();