Use new signature of the dynamicSegmentFilterData constructor

[MAILPOET-3427]
This commit is contained in:
Jan Lysý
2021-10-22 11:20:49 +02:00
committed by Veljko V
parent cc05b945b4
commit 6e6ba3e7a1
24 changed files with 122 additions and 164 deletions

View File

@ -49,6 +49,8 @@ class DynamicSegmentsResponseBuilder {
foreach ($dynamicFilters as $dynamicFilter) { foreach ($dynamicFilters as $dynamicFilter) {
$filter = $dynamicFilter->getFilterData()->getData(); $filter = $dynamicFilter->getFilterData()->getData();
$filter['id'] = $dynamicFilter->getId(); $filter['id'] = $dynamicFilter->getId();
$filter['segmentType'] = $dynamicFilter->getFilterData()->getFilterType(); // We need to add filterType with key segmentType due to BC
$filter['action'] = $dynamicFilter->getFilterData()->getAction();
$filters[] = $filter; $filters[] = $filter;
} }
$data['filters'] = $filters; $data['filters'] = $filters;

View File

@ -193,7 +193,7 @@ class Reporter {
} }
private function isFilterTypeActive(string $segmentType, string $action): bool { private function isFilterTypeActive(string $segmentType, string $action): bool {
if ($this->dynamicSegmentFilterRepository->findOnyBySegmentTypeAndAction($segmentType, $action)) { if ($this->dynamicSegmentFilterRepository->findOnyByFilterTypeAndAction($segmentType, $action)) {
return true; return true;
} }
return false; return false;

View File

@ -63,9 +63,7 @@ class FilterDataMapper {
} }
if ($data['action'] === SubscriberSubscribedDate::TYPE) { if ($data['action'] === SubscriberSubscribedDate::TYPE) {
if (empty($data['value'])) throw new InvalidFilterException('Missing number of days', InvalidFilterException::MISSING_VALUE); if (empty($data['value'])) throw new InvalidFilterException('Missing number of days', InvalidFilterException::MISSING_VALUE);
return new DynamicSegmentFilterData([ return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, $data['action'], [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => $data['action'],
'value' => $data['value'], 'value' => $data['value'],
'operator' => $data['operator'] ?? SubscriberSubscribedDate::BEFORE, 'operator' => $data['operator'] ?? SubscriberSubscribedDate::BEFORE,
'connect' => $data['connect'], 'connect' => $data['connect'],
@ -76,8 +74,6 @@ class FilterDataMapper {
if (empty($data['custom_field_type'])) throw new InvalidFilterException('Missing custom field type', InvalidFilterException::MISSING_VALUE); if (empty($data['custom_field_type'])) throw new InvalidFilterException('Missing custom field type', InvalidFilterException::MISSING_VALUE);
if (!isset($data['value'])) throw new InvalidFilterException('Missing value', InvalidFilterException::MISSING_VALUE); if (!isset($data['value'])) throw new InvalidFilterException('Missing value', InvalidFilterException::MISSING_VALUE);
$filterData = [ $filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => $data['action'],
'value' => $data['value'], 'value' => $data['value'],
'custom_field_id' => $data['custom_field_id'], 'custom_field_id' => $data['custom_field_id'],
'custom_field_type' => $data['custom_field_type'], 'custom_field_type' => $data['custom_field_type'],
@ -85,13 +81,11 @@ class FilterDataMapper {
]; ];
if (!empty($data['date_type'])) $filterData['date_type'] = $data['date_type']; if (!empty($data['date_type'])) $filterData['date_type'] = $data['date_type'];
if (!empty($data['operator'])) $filterData['operator'] = $data['operator']; if (!empty($data['operator'])) $filterData['operator'] = $data['operator'];
return new DynamicSegmentFilterData($filterData); return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, $data['action'], $filterData);
} }
if (empty($data['wordpressRole'])) throw new InvalidFilterException('Missing role', InvalidFilterException::MISSING_ROLE); if (empty($data['wordpressRole'])) throw new InvalidFilterException('Missing role', InvalidFilterException::MISSING_ROLE);
return new DynamicSegmentFilterData([ return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, $data['action'], [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => $data['wordpressRole'], 'wordpressRole' => $data['wordpressRole'],
'action' => $data['action'],
'connect' => $data['connect'], 'connect' => $data['connect'],
]); ]);
} }
@ -109,23 +103,21 @@ class FilterDataMapper {
return $this->createEmailOpensAbsoluteCount($data); return $this->createEmailOpensAbsoluteCount($data);
} }
if ($data['action'] === EmailAction::ACTION_CLICKED_ANY) { if ($data['action'] === EmailAction::ACTION_CLICKED_ANY) {
return new DynamicSegmentFilterData([ return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_EMAIL, $data['action'], [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $data['action'],
'connect' => $data['connect'], 'connect' => $data['connect'],
]); ]);
} }
if (empty($data['newsletter_id'])) throw new InvalidFilterException('Missing newsletter id', InvalidFilterException::MISSING_NEWSLETTER_ID); if (empty($data['newsletter_id'])) throw new InvalidFilterException('Missing newsletter id', InvalidFilterException::MISSING_NEWSLETTER_ID);
$filterData = [ $filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $data['action'],
'newsletter_id' => $data['newsletter_id'], 'newsletter_id' => $data['newsletter_id'],
'connect' => $data['connect'], 'connect' => $data['connect'],
]; ];
$filterType = DynamicSegmentFilterData::TYPE_EMAIL;
$action = $data['action'];
if (isset($data['link_id'])) { if (isset($data['link_id'])) {
$filterData['link_id'] = $data['link_id']; $filterData['link_id'] = $data['link_id'];
} }
return new DynamicSegmentFilterData($filterData); return new DynamicSegmentFilterData($filterType, $action, $filterData);
} }
/** /**
@ -135,14 +127,14 @@ class FilterDataMapper {
if (!isset($data['opens'])) throw new InvalidFilterException('Missing number of opens', InvalidFilterException::MISSING_VALUE); if (!isset($data['opens'])) throw new InvalidFilterException('Missing number of opens', InvalidFilterException::MISSING_VALUE);
if (empty($data['days'])) throw new InvalidFilterException('Missing number of days', InvalidFilterException::MISSING_VALUE); if (empty($data['days'])) throw new InvalidFilterException('Missing number of days', InvalidFilterException::MISSING_VALUE);
$filterData = [ $filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $data['action'],
'opens' => $data['opens'], 'opens' => $data['opens'],
'days' => $data['days'], 'days' => $data['days'],
'operator' => $data['operator'] ?? 'more', 'operator' => $data['operator'] ?? 'more',
'connect' => $data['connect'], 'connect' => $data['connect'],
]; ];
return new DynamicSegmentFilterData($filterData); $filterType = DynamicSegmentFilterData::TYPE_EMAIL;
$action = $data['action'];
return new DynamicSegmentFilterData($filterType, $action, $filterData);
} }
/** /**
@ -151,10 +143,10 @@ class FilterDataMapper {
private function createWooCommerce(array $data): DynamicSegmentFilterData { private function createWooCommerce(array $data): DynamicSegmentFilterData {
if (empty($data['action'])) throw new InvalidFilterException('Missing action', InvalidFilterException::MISSING_ACTION); if (empty($data['action'])) throw new InvalidFilterException('Missing action', InvalidFilterException::MISSING_ACTION);
$filterData = [ $filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => $data['action'],
'connect' => $data['connect'], 'connect' => $data['connect'],
]; ];
$filterType = DynamicSegmentFilterData::TYPE_WOOCOMMERCE;
$action = $data['action'];
if ($data['action'] === WooCommerceCategory::ACTION_CATEGORY) { if ($data['action'] === WooCommerceCategory::ACTION_CATEGORY) {
if (!isset($data['category_id'])) throw new InvalidFilterException('Missing category', InvalidFilterException::MISSING_CATEGORY_ID); if (!isset($data['category_id'])) throw new InvalidFilterException('Missing category', InvalidFilterException::MISSING_CATEGORY_ID);
$filterData['category_id'] = $data['category_id']; $filterData['category_id'] = $data['category_id'];
@ -187,7 +179,7 @@ class FilterDataMapper {
} else { } else {
throw new InvalidFilterException("Unknown action " . $data['action'], InvalidFilterException::MISSING_ACTION); throw new InvalidFilterException("Unknown action " . $data['action'], InvalidFilterException::MISSING_ACTION);
} }
return new DynamicSegmentFilterData($filterData); return new DynamicSegmentFilterData($filterType, $action, $filterData);
} }
/** /**
@ -196,16 +188,16 @@ class FilterDataMapper {
private function createWooCommerceSubscription(array $data): DynamicSegmentFilterData { private function createWooCommerceSubscription(array $data): DynamicSegmentFilterData {
if (empty($data['action'])) throw new InvalidFilterException('Missing action', InvalidFilterException::MISSING_ACTION); if (empty($data['action'])) throw new InvalidFilterException('Missing action', InvalidFilterException::MISSING_ACTION);
$filterData = [ $filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION,
'action' => $data['action'],
'connect' => $data['connect'], 'connect' => $data['connect'],
]; ];
$filterType = DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION;
$action = $data['action'];
if ($data['action'] === WooCommerceSubscription::ACTION_HAS_ACTIVE) { if ($data['action'] === WooCommerceSubscription::ACTION_HAS_ACTIVE) {
if (!isset($data['product_id'])) throw new InvalidFilterException('Missing product', InvalidFilterException::MISSING_PRODUCT_ID); if (!isset($data['product_id'])) throw new InvalidFilterException('Missing product', InvalidFilterException::MISSING_PRODUCT_ID);
$filterData['product_id'] = $data['product_id']; $filterData['product_id'] = $data['product_id'];
} else { } else {
throw new InvalidFilterException("Unknown action " . $data['action'], InvalidFilterException::MISSING_ACTION); throw new InvalidFilterException("Unknown action " . $data['action'], InvalidFilterException::MISSING_ACTION);
} }
return new DynamicSegmentFilterData($filterData); return new DynamicSegmentFilterData($filterType, $action, $filterData);
} }
} }

View File

@ -81,7 +81,7 @@ class FilterFactory {
public function getFilterForFilterEntity(DynamicSegmentFilterEntity $filter): Filter { public function getFilterForFilterEntity(DynamicSegmentFilterEntity $filter): Filter {
$filterData = $filter->getFilterData(); $filterData = $filter->getFilterData();
$filterType = $filterData->getFilterType(); $filterType = $filterData->getFilterType();
$action = $filterData->getParam('action'); $action = $filterData->getAction();
switch ($filterType) { switch ($filterType) {
case DynamicSegmentFilterData::TYPE_USER_ROLE: case DynamicSegmentFilterData::TYPE_USER_ROLE:
return $this->userRole($action); return $this->userRole($action);

View File

@ -49,7 +49,7 @@ class EmailAction implements Filter {
public function apply(QueryBuilder $queryBuilder, DynamicSegmentFilterEntity $filter): QueryBuilder { public function apply(QueryBuilder $queryBuilder, DynamicSegmentFilterEntity $filter): QueryBuilder {
$filterData = $filter->getFilterData(); $filterData = $filter->getFilterData();
$action = $filterData->getParam('action'); $action = $filterData->getAction();
$newsletterId = (int)$filterData->getParam('newsletter_id'); $newsletterId = (int)$filterData->getParam('newsletter_id');
$linkId = $filterData->getParam('link_id') ? (int)$filterData->getParam('link_id') : null; $linkId = $filterData->getParam('link_id') ? (int)$filterData->getParam('link_id') : null;
$parameterSuffix = (string)($filter->getId() ?? Security::generateRandomString()); $parameterSuffix = (string)($filter->getId() ?? Security::generateRandomString());

View File

@ -28,7 +28,7 @@ class EmailOpensAbsoluteCountAction implements Filter {
$filterData = $filter->getFilterData(); $filterData = $filter->getFilterData();
$days = $filterData->getParam('days'); $days = $filterData->getParam('days');
$operator = $filterData->getParam('operator'); $operator = $filterData->getParam('operator');
$action = $filterData->getParam('action'); $action = $filterData->getAction();
$parameterSuffix = $filter->getId() ?? Security::generateRandomString(); $parameterSuffix = $filter->getId() ?? Security::generateRandomString();
$statsTable = $this->entityManager->getClassMetadata(StatisticsOpenEntity::class)->getTableName(); $statsTable = $this->entityManager->getClassMetadata(StatisticsOpenEntity::class)->getTableName();
$subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName(); $subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName();

View File

@ -110,10 +110,8 @@ class DynamicSegmentsResponseBuilderTest extends \MailPoetTest {
} }
private function addDynamicFilter(SegmentEntity $segment, string $wordpressRole): SegmentEntity { private function addDynamicFilter(SegmentEntity $segment, string $wordpressRole): SegmentEntity {
$dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData([ $dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'wordpressRole' => $wordpressRole, 'wordpressRole' => $wordpressRole,
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => UserRole::TYPE,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
])); ]));
$segment->getDynamicFilters()->add($dynamicFilter); $segment->getDynamicFilters()->add($dynamicFilter);

View File

@ -237,10 +237,12 @@ class DynamicSegmentsTest extends \MailPoetTest {
private function createDynamicSegmentEntity(string $name, string $description): SegmentEntity { private function createDynamicSegmentEntity(string $name, string $description): SegmentEntity {
$segment = new SegmentEntity($name, SegmentEntity::TYPE_DYNAMIC, $description); $segment = new SegmentEntity($name, SegmentEntity::TYPE_DYNAMIC, $description);
$dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(
'wordpressRole' => 'editor', DynamicSegmentFilterData::TYPE_USER_ROLE,
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE,
])); ['wordpressRole' => 'editor']
);
$dynamicFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$segment->getDynamicFilters()->add($dynamicFilter); $segment->getDynamicFilters()->add($dynamicFilter);
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$this->entityManager->persist($dynamicFilter); $this->entityManager->persist($dynamicFilter);

View File

@ -12,6 +12,7 @@ use MailPoet\Entities\StatisticsOpenEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Segments\DynamicSegments\Filters\EmailAction; use MailPoet\Segments\DynamicSegments\Filters\EmailAction;
use MailPoet\Segments\DynamicSegments\Filters\SubscriberSubscribedDate; use MailPoet\Segments\DynamicSegments\Filters\SubscriberSubscribedDate;
use MailPoet\Segments\DynamicSegments\Filters\UserRole;
use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\WP\Functions; use MailPoet\WP\Functions;
use MailPoetVendor\Carbon\Carbon; use MailPoetVendor\Carbon\Carbon;
@ -84,13 +85,11 @@ class FilterHandlerTest extends \MailPoetTest {
public function testItAppliesTwoFiltersWithoutSpecifyingConnection() { public function testItAppliesTwoFiltersWithoutSpecifyingConnection() {
$wp = $this->diContainer->get(Functions::class); $wp = $this->diContainer->get(Functions::class);
$segment = $this->getSegment('editor'); $segment = $this->getSegment('editor');
$filter = new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, SubscriberSubscribedDate::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => SubscriberSubscribedDate::TYPE,
'operator' => SubscriberSubscribedDate::IN_THE_LAST, 'operator' => SubscriberSubscribedDate::IN_THE_LAST,
'value' => 30, 'value' => 30,
]); ]);
$dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filter); $dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$this->entityManager->persist($dynamicSegmentFilter); $this->entityManager->persist($dynamicSegmentFilter);
$segment->addDynamicFilter($dynamicSegmentFilter); $segment->addDynamicFilter($dynamicSegmentFilter);
$this->entityManager->flush(); $this->entityManager->flush();
@ -103,16 +102,14 @@ class FilterHandlerTest extends \MailPoetTest {
public function testItAppliesTwoFiltersWithOr() { public function testItAppliesTwoFiltersWithOr() {
$segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description'); $segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description');
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$filterData = new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'administrator', 'wordpressRole' => 'administrator',
'connect' => 'or', 'connect' => 'or',
]); ]);
$dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filterData); $dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$this->entityManager->persist($dynamicSegmentFilter); $this->entityManager->persist($dynamicSegmentFilter);
$segment->addDynamicFilter($dynamicSegmentFilter); $segment->addDynamicFilter($dynamicSegmentFilter);
$filterData = new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'editor', 'wordpressRole' => 'editor',
'connect' => 'or', 'connect' => 'or',
]); ]);
@ -130,8 +127,7 @@ class FilterHandlerTest extends \MailPoetTest {
$segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description'); $segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description');
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
// filter user is an editor // filter user is an editor
$editorData = new DynamicSegmentFilterData([ $editorData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'editor', 'wordpressRole' => 'editor',
'connect' => 'and', 'connect' => 'and',
]); ]);
@ -157,9 +153,7 @@ class FilterHandlerTest extends \MailPoetTest {
$this->entityManager->persist($open); $this->entityManager->persist($open);
$this->entityManager->flush(); $this->entityManager->flush();
$openedData = new DynamicSegmentFilterData([ $openedData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_EMAIL, EmailAction::ACTION_OPENED, [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => EmailAction::ACTION_OPENED,
'newsletter_id' => $newsletter->getId(), 'newsletter_id' => $newsletter->getId(),
'connect' => 'and', 'connect' => 'and',
]); ]);
@ -175,12 +169,11 @@ class FilterHandlerTest extends \MailPoetTest {
} }
private function getSegment(string $role): SegmentEntity { private function getSegment(string $role): SegmentEntity {
$filter = new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => $role, 'wordpressRole' => $role,
]); ]);
$segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description'); $segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description');
$dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filter); $dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$segment->addDynamicFilter($dynamicSegmentFilter); $segment->addDynamicFilter($dynamicSegmentFilter);
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$this->entityManager->persist($dynamicSegmentFilter); $this->entityManager->persist($dynamicSegmentFilter);

View File

@ -222,9 +222,7 @@ class EmailActionTest extends \MailPoetTest {
} }
private function getSegmentFilter(string $action, int $newsletterId = null, int $linkId = null): DynamicSegmentFilterEntity { private function getSegmentFilter(string $action, int $newsletterId = null, int $linkId = null): DynamicSegmentFilterEntity {
$segmentFilterData = new DynamicSegmentFilterData([ $segmentFilterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_EMAIL, $action, [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $action,
'newsletter_id' => $newsletterId, 'newsletter_id' => $newsletterId,
'link_id' => $linkId, 'link_id' => $linkId,
]); ]);

View File

@ -155,9 +155,7 @@ class EmailOpensAbsoluteCountActionTest extends \MailPoetTest {
} }
private function getSegmentFilter(int $opens, string $operator, int $days, string $action = EmailOpensAbsoluteCountAction::TYPE): DynamicSegmentFilterEntity { private function getSegmentFilter(int $opens, string $operator, int $days, string $action = EmailOpensAbsoluteCountAction::TYPE): DynamicSegmentFilterEntity {
$segmentFilterData = new DynamicSegmentFilterData([ $segmentFilterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_EMAIL, $action, [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $action,
'operator' => $operator, 'operator' => $operator,
'opens' => $opens, 'opens' => $opens,
'days' => $days, 'days' => $days,

View File

@ -34,9 +34,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, 'some value')); $this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, 'some value'));
$this->entityManager->persist($customField); $this->entityManager->persist($customField);
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_TEXT, 'custom_field_type' => CustomFieldEntity::TYPE_TEXT,
'operator' => 'equals', 'operator' => 'equals',
@ -61,9 +59,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, 'some value')); $this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, 'some value'));
$this->entityManager->persist($customField); $this->entityManager->persist($customField);
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_TEXT, 'custom_field_type' => CustomFieldEntity::TYPE_TEXT,
'operator' => 'contains', 'operator' => 'contains',
@ -88,9 +84,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, 'Option 2')); $this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, 'Option 2'));
$this->entityManager->persist($customField); $this->entityManager->persist($customField);
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_RADIO, 'custom_field_type' => CustomFieldEntity::TYPE_RADIO,
'operator' => 'equals', 'operator' => 'equals',
@ -115,9 +109,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, '1')); $this->entityManager->persist(new SubscriberCustomFieldEntity($subscriber, $customField, '1'));
$this->entityManager->persist($customField); $this->entityManager->persist($customField);
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_CHECKBOX, 'custom_field_type' => CustomFieldEntity::TYPE_CHECKBOX,
'operator' => 'equals', 'operator' => 'equals',
@ -142,9 +134,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[0], $customField, '1')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[0], $customField, '1'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '0')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '0'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_CHECKBOX, 'custom_field_type' => CustomFieldEntity::TYPE_CHECKBOX,
'operator' => 'equals', 'operator' => 'equals',
@ -170,9 +160,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2020-04-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2020-04-01 00:00:00'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_DATE, 'custom_field_type' => CustomFieldEntity::TYPE_DATE,
'date_type' => 'month', 'date_type' => 'month',
@ -198,9 +186,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_DATE, 'custom_field_type' => CustomFieldEntity::TYPE_DATE,
'date_type' => 'year', 'date_type' => 'year',
@ -226,9 +212,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_DATE, 'custom_field_type' => CustomFieldEntity::TYPE_DATE,
'date_type' => 'year', 'date_type' => 'year',
@ -255,9 +239,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_DATE, 'custom_field_type' => CustomFieldEntity::TYPE_DATE,
'date_type' => 'year_month', 'date_type' => 'year_month',
@ -283,9 +265,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_DATE, 'custom_field_type' => CustomFieldEntity::TYPE_DATE,
'date_type' => 'year_month', 'date_type' => 'year_month',
@ -312,9 +292,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_DATE, 'custom_field_type' => CustomFieldEntity::TYPE_DATE,
'date_type' => 'year_month_day', 'date_type' => 'year_month_day',
@ -340,9 +318,7 @@ class MailPoetCustomFieldsTest extends \MailPoetTest {
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[1], $customField, '2017-04-01 00:00:00'));
$this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00')); $this->entityManager->persist(new SubscriberCustomFieldEntity($this->subscribers[2], $customField, '2020-05-01 00:00:00'));
$this->entityManager->flush(); $this->entityManager->flush();
$segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData([ $segmentFilter = $this->getSegmentFilter(new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, MailPoetCustomFields::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => MailPoetCustomFields::TYPE,
'custom_field_id' => $customField->getId(), 'custom_field_id' => $customField->getId(),
'custom_field_type' => CustomFieldEntity::TYPE_DATE, 'custom_field_type' => CustomFieldEntity::TYPE_DATE,
'date_type' => 'year_month_day', 'date_type' => 'year_month_day',

View File

@ -122,9 +122,7 @@ class SubscriberSubscribedDateTest extends \MailPoetTest {
} }
private function getSegmentFilter(string $operator, string $value): DynamicSegmentFilterEntity { private function getSegmentFilter(string $operator, string $value): DynamicSegmentFilterEntity {
$segmentFilterData = new DynamicSegmentFilterData([ $segmentFilterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, SubscriberSubscribedDate::TYPE, [
'segmentType' => 'userRole',
'action' => SubscriberSubscribedDate::TYPE,
'operator' => $operator, 'operator' => $operator,
'value' => $value, 'value' => $value,
]); ]);

View File

@ -50,8 +50,7 @@ class UserRoleTest extends \MailPoetTest {
} }
private function getSegmentFilter(string $role): DynamicSegmentFilterEntity { private function getSegmentFilter(string $role): DynamicSegmentFilterEntity {
$data = new DynamicSegmentFilterData([ $data = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => $role, 'wordpressRole' => $role,
]); ]);
$segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description'); $segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description');

View File

@ -65,9 +65,7 @@ class WooCommerceNumberOfOrdersTest extends \MailPoetTest {
} }
private function getSegmentFilter($comparisonType, $ordersCount, $days): DynamicSegmentFilterEntity { private function getSegmentFilter($comparisonType, $ordersCount, $days): DynamicSegmentFilterEntity {
$data = new DynamicSegmentFilterData([ $data = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_WOOCOMMERCE, WooCommerceNumberOfOrders::ACTION_NUMBER_OF_ORDERS, [
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => 'numberOfOrders',
'number_of_orders_type' => $comparisonType, 'number_of_orders_type' => $comparisonType,
'number_of_orders_count' => $ordersCount, 'number_of_orders_count' => $ordersCount,
'number_of_orders_days' => $days, 'number_of_orders_days' => $days,

View File

@ -87,9 +87,7 @@ class WooCommerceTotalSpentTest extends \MailPoetTest {
} }
private function getSegmentFilter(string $type, float $amount, int $days): DynamicSegmentFilterEntity { private function getSegmentFilter(string $type, float $amount, int $days): DynamicSegmentFilterEntity {
$data = new DynamicSegmentFilterData([ $data = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_WOOCOMMERCE, WooCommerceTotalSpent::ACTION_TOTAL_SPENT, [
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => WooCommerceTotalSpent::ACTION_TOTAL_SPENT,
'total_spent_type' => $type, 'total_spent_type' => $type,
'total_spent_amount' => $amount, 'total_spent_amount' => $amount,
'total_spent_days' => $days, 'total_spent_days' => $days,

View File

@ -36,10 +36,10 @@ class SegmentSaveControllerTest extends \MailPoetTest {
expect($segment->getType())->equals(SegmentEntity::TYPE_DYNAMIC); expect($segment->getType())->equals(SegmentEntity::TYPE_DYNAMIC);
$filter = $segment->getDynamicFilters()->first(); $filter = $segment->getDynamicFilters()->first();
assert($filter instanceof DynamicSegmentFilterEntity); assert($filter instanceof DynamicSegmentFilterEntity);
expect($filter->getFilterData()->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE);
expect($filter->getFilterData()->getAction())->equals(UserRole::TYPE);
expect($filter->getFilterData()->getData())->equals([ expect($filter->getFilterData()->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'editor', 'wordpressRole' => 'editor',
'action' => UserRole::TYPE,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);
} }
@ -70,18 +70,18 @@ class SegmentSaveControllerTest extends \MailPoetTest {
expect($segment->getType())->equals(SegmentEntity::TYPE_DYNAMIC); expect($segment->getType())->equals(SegmentEntity::TYPE_DYNAMIC);
$filter = $segment->getDynamicFilters()->first(); $filter = $segment->getDynamicFilters()->first();
assert($filter instanceof DynamicSegmentFilterEntity); assert($filter instanceof DynamicSegmentFilterEntity);
expect($filter->getFilterData()->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE);
expect($filter->getFilterData()->getAction())->equals(UserRole::TYPE);
expect($filter->getFilterData()->getData())->equals([ expect($filter->getFilterData()->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'administrator', 'wordpressRole' => 'administrator',
'action' => UserRole::TYPE,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_OR, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_OR,
]); ]);
$filter = $segment->getDynamicFilters()->next(); $filter = $segment->getDynamicFilters()->next();
assert($filter instanceof DynamicSegmentFilterEntity); assert($filter instanceof DynamicSegmentFilterEntity);
expect($filter->getFilterData()->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE);
expect($filter->getFilterData()->getAction())->equals(UserRole::TYPE);
expect($filter->getFilterData()->getData())->equals([ expect($filter->getFilterData()->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'editor', 'wordpressRole' => 'editor',
'action' => UserRole::TYPE,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_OR, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_OR,
]); ]);
} }
@ -110,10 +110,10 @@ class SegmentSaveControllerTest extends \MailPoetTest {
expect($segment->getType())->equals(SegmentEntity::TYPE_DYNAMIC); expect($segment->getType())->equals(SegmentEntity::TYPE_DYNAMIC);
$filter = $segment->getDynamicFilters()->first(); $filter = $segment->getDynamicFilters()->first();
assert($filter instanceof DynamicSegmentFilterEntity); assert($filter instanceof DynamicSegmentFilterEntity);
expect($filter->getFilterData()->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE);
expect($filter->getFilterData()->getAction())->equals(UserRole::TYPE);
expect($filter->getFilterData()->getData())->equals([ expect($filter->getFilterData()->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'subscriber', 'wordpressRole' => 'subscriber',
'action' => UserRole::TYPE,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_OR, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_OR,
]); ]);
} }
@ -159,12 +159,11 @@ class SegmentSaveControllerTest extends \MailPoetTest {
} }
private function addDynamicFilter(SegmentEntity $segment, string $wordpressRole): DynamicSegmentFilterEntity { private function addDynamicFilter(SegmentEntity $segment, string $wordpressRole): DynamicSegmentFilterEntity {
$dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'wordpressRole' => $wordpressRole, 'wordpressRole' => $wordpressRole,
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => UserRole::TYPE,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
])); ]);
$dynamicFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$segment->getDynamicFilters()->add($dynamicFilter); $segment->getDynamicFilters()->add($dynamicFilter);
$this->entityManager->persist($dynamicFilter); $this->entityManager->persist($dynamicFilter);
$this->entityManager->flush(); $this->entityManager->flush();

View File

@ -5,6 +5,7 @@ namespace MailPoet\Segments;
use MailPoet\Entities\DynamicSegmentFilterData; use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\DynamicSegmentFilterEntity; use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SegmentEntity;
use MailPoet\Segments\DynamicSegments\Filters\WooCommerceCategory;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class SegmentDependencyValidatorTest extends \MailPoetTest { class SegmentDependencyValidatorTest extends \MailPoetTest {
@ -14,11 +15,11 @@ class SegmentDependencyValidatorTest extends \MailPoetTest {
} }
public function testItMissingPluginsForWooCommerceDynamicSegment(): void { public function testItMissingPluginsForWooCommerceDynamicSegment(): void {
$dynamicSegment = $this->createSegment([ $dynamicSegment = $this->createSegment(
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE, DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => 'purchasedCategory', WooCommerceCategory::ACTION_CATEGORY,
'category_id' => 1, ['category_id' => 1]
]); );
// Plugin is not active // Plugin is not active
$validator = $this->createValidator(false); $validator = $this->createValidator(false);
$missingPlugins = $validator->getMissingPluginsBySegment($dynamicSegment); $missingPlugins = $validator->getMissingPluginsBySegment($dynamicSegment);
@ -30,10 +31,10 @@ class SegmentDependencyValidatorTest extends \MailPoetTest {
expect($missingPlugins)->equals([]); expect($missingPlugins)->equals([]);
} }
private function createSegment(array $filterData): SegmentEntity { private function createSegment(string $filterType, string $action, array $filterData): SegmentEntity {
$segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description'); $segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description');
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$filterData = new DynamicSegmentFilterData($filterData); $filterData = new DynamicSegmentFilterData($filterType, $action, $filterData);
$dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filterData); $dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$this->entityManager->persist($dynamicSegmentFilter); $this->entityManager->persist($dynamicSegmentFilter);
$segment->addDynamicFilter($dynamicSegmentFilter); $segment->addDynamicFilter($dynamicSegmentFilter);

View File

@ -7,6 +7,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity; use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Segments\DynamicSegments\Filters\UserRole;
use MailPoet\Subscribers\Source; use MailPoet\Subscribers\Source;
class SegmentSubscribersRepositoryTest extends \MailPoetTest { class SegmentSubscribersRepositoryTest extends \MailPoetTest {
@ -233,10 +234,12 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest {
private function createDynamicSegmentEntity(string $role = 'editor'): SegmentEntity { private function createDynamicSegmentEntity(string $role = 'editor'): SegmentEntity {
$segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description'); $segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description');
$dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(
'wordpressRole' => $role, DynamicSegmentFilterData::TYPE_USER_ROLE,
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE,
])); ['wordpressRole' => $role]
);
$dynamicFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$segment->getDynamicFilters()->add($dynamicFilter); $segment->getDynamicFilters()->add($dynamicFilter);
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$this->entityManager->persist($dynamicFilter); $this->entityManager->persist($dynamicFilter);

View File

@ -7,6 +7,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterSegmentEntity; use MailPoet\Entities\NewsletterSegmentEntity;
use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SegmentEntity;
use MailPoet\Segments\DynamicSegments\Filters\UserRole;
class SegmentsRepositoryTest extends \MailPoetTest { class SegmentsRepositoryTest extends \MailPoetTest {
/** @var SegmentsRepository */ /** @var SegmentsRepository */
@ -76,10 +77,12 @@ class SegmentsRepositoryTest extends \MailPoetTest {
private function createDynamicSegmentEntityForEditorUsers(): SegmentEntity { private function createDynamicSegmentEntityForEditorUsers(): SegmentEntity {
$segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description'); $segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description');
$dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(
'wordpressRole' => 'editor', DynamicSegmentFilterData::TYPE_USER_ROLE,
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE,
])); ['wordpressRole' => 'editor']
);
$dynamicFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$segment->getDynamicFilters()->add($dynamicFilter); $segment->getDynamicFilters()->add($dynamicFilter);
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$this->entityManager->persist($dynamicFilter); $this->entityManager->persist($dynamicFilter);

View File

@ -8,6 +8,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity; use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Segments\DynamicSegments\Filters\UserRole;
use MailPoet\Subscribers\Source; use MailPoet\Subscribers\Source;
class SegmentsSimpleListRepositoryTest extends \MailPoetTest { class SegmentsSimpleListRepositoryTest extends \MailPoetTest {
@ -141,10 +142,12 @@ class SegmentsSimpleListRepositoryTest extends \MailPoetTest {
private function createDynamicSegmentEntityForEditorUsers(): SegmentEntity { private function createDynamicSegmentEntityForEditorUsers(): SegmentEntity {
$segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description'); $segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description');
$dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData([ $dynamicFilterData = new DynamicSegmentFilterData(
'wordpressRole' => 'editor', DynamicSegmentFilterData::TYPE_USER_ROLE,
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE,
])); ['wordpressRole' => 'editor']
);
$dynamicFilter = new DynamicSegmentFilterEntity($segment, $dynamicFilterData);
$segment->getDynamicFilters()->add($dynamicFilter); $segment->getDynamicFilters()->add($dynamicFilter);
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$this->entityManager->persist($dynamicFilter); $this->entityManager->persist($dynamicFilter);

View File

@ -10,6 +10,7 @@ use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberCustomFieldEntity; use MailPoet\Entities\SubscriberCustomFieldEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity; use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Segments\DynamicSegments\Filters\UserRole;
use MailPoet\Segments\SegmentsRepository; use MailPoet\Segments\SegmentsRepository;
use MailPoet\Subscribers\SubscriberCustomFieldRepository; use MailPoet\Subscribers\SubscriberCustomFieldRepository;
use MailPoet\Subscribers\SubscriberSegmentRepository; use MailPoet\Subscribers\SubscriberSegmentRepository;
@ -289,10 +290,12 @@ class ImportExportRepositoryTest extends \MailPoetTest {
$user5 = $this->createSubscriber('user5@export-test.com', 'Five', 'User'); $user5 = $this->createSubscriber('user5@export-test.com', 'Five', 'User');
$segment1 = $this->createSegment('First', SegmentEntity::TYPE_DEFAULT); $segment1 = $this->createSegment('First', SegmentEntity::TYPE_DEFAULT);
$segment2 = $this->createSegment('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC); $segment2 = $this->createSegment('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC);
$this->createDynamicSegmentFilter($segment2, [ $this->createDynamicSegmentFilter(
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE, $segment2,
'wordpressRole' => 'editor', DynamicSegmentFilterData::TYPE_USER_ROLE,
]); UserRole::TYPE,
['wordpressRole' => 'editor']
);
$this->createSubscriberSegment($user4, $segment1, SubscriberEntity::STATUS_SUBSCRIBED); $this->createSubscriberSegment($user4, $segment1, SubscriberEntity::STATUS_SUBSCRIBED);
$this->createSubscriberSegment($user5, $segment1, SubscriberEntity::STATUS_SUBSCRIBED); $this->createSubscriberSegment($user5, $segment1, SubscriberEntity::STATUS_SUBSCRIBED);
@ -381,9 +384,11 @@ class ImportExportRepositoryTest extends \MailPoetTest {
private function createDynamicSegmentFilter( private function createDynamicSegmentFilter(
SegmentEntity $segment, SegmentEntity $segment,
string $filterType,
string $action,
array $filterData array $filterData
): DynamicSegmentFilterEntity { ): DynamicSegmentFilterEntity {
$filter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData($filterData)); $filter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData($filterType, $action, $filterData));
$this->entityManager->persist($filter); $this->entityManager->persist($filter);
$this->entityManager->flush(); $this->entityManager->flush();
return $filter; return $filter;

View File

@ -9,6 +9,7 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity; use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Listing\ListingDefinition; use MailPoet\Listing\ListingDefinition;
use MailPoet\Segments\DynamicSegments\FilterHandler; use MailPoet\Segments\DynamicSegments\FilterHandler;
use MailPoet\Segments\DynamicSegments\Filters\UserRole;
use MailPoet\Segments\SegmentsRepository; use MailPoet\Segments\SegmentsRepository;
use MailPoet\Segments\SegmentSubscribersRepository; use MailPoet\Segments\SegmentSubscribersRepository;
@ -292,10 +293,10 @@ class SubscriberListingRepositoryTest extends \MailPoetTest {
private function createDynamicSegmentEntity(): SegmentEntity { private function createDynamicSegmentEntity(): SegmentEntity {
$segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description'); $segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description');
$dynamicFilter = new DynamicSegmentFilterEntity($segment, new DynamicSegmentFilterData([ $filterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, UserRole::TYPE, [
'wordpressRole' => 'editor', 'wordpressRole' => 'editor',
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE, ]);
])); $dynamicFilter = new DynamicSegmentFilterEntity($segment, $filterData);
$segment->getDynamicFilters()->add($dynamicFilter); $segment->getDynamicFilters()->add($dynamicFilter);
$this->entityManager->persist($segment); $this->entityManager->persist($segment);
$this->entityManager->persist($dynamicFilter); $this->entityManager->persist($dynamicFilter);

View File

@ -58,9 +58,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL);
expect($filter->getAction())->equals(EmailAction::ACTION_OPENED);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => EmailAction::ACTION_OPENED,
'newsletter_id' => 1, 'newsletter_id' => 1,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);
@ -110,10 +109,9 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE);
expect($filter->getAction())->equals('userRole');
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'wordpressRole' => 'editor', 'wordpressRole' => 'editor',
'action' => 'userRole',
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);
} }
@ -148,9 +146,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_USER_ROLE);
expect($filter->getAction())->equals(SubscriberSubscribedDate::TYPE);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => SubscriberSubscribedDate::TYPE,
'value' => 2, 'value' => 2,
'operator' => SubscriberSubscribedDate::AFTER, 'operator' => SubscriberSubscribedDate::AFTER,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
@ -171,9 +168,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE);
expect($filter->getAction())->equals(WooCommerceCategory::ACTION_CATEGORY);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => WooCommerceCategory::ACTION_CATEGORY,
'category_id' => '1', 'category_id' => '1',
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);
@ -214,9 +210,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE);
expect($filter->getAction())->equals(WooCommerceProduct::ACTION_PRODUCT);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => WooCommerceProduct::ACTION_PRODUCT,
'product_id' => '10', 'product_id' => '10',
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);
@ -246,9 +241,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL);
expect($filter->getAction())->equals(EmailOpensAbsoluteCountAction::TYPE);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => EmailOpensAbsoluteCountAction::TYPE,
'opens' => 5, 'opens' => 5,
'days' => 3, 'days' => 3,
'operator' => 'more', 'operator' => 'more',
@ -269,9 +263,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL);
expect($filter->getAction())->equals(EmailAction::ACTION_CLICKED_ANY);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => EmailAction::ACTION_CLICKED_ANY,
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);
} }
@ -291,9 +284,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_EMAIL);
expect($filter->getAction())->equals(EmailOpensAbsoluteCountAction::TYPE);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => EmailOpensAbsoluteCountAction::TYPE,
'opens' => 5, 'opens' => 5,
'days' => 3, 'days' => 3,
'operator' => 'less', 'operator' => 'less',
@ -338,11 +330,12 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
$expectedResult = reset($data['filters']); $expectedResult = reset($data['filters']);
unset($expectedResult['some_mess']); unset($expectedResult['some_mess'], $expectedResult['segmentType'], $expectedResult['action']);
$expectedResult['connect'] = DynamicSegmentFilterData::CONNECT_TYPE_AND; $expectedResult['connect'] = DynamicSegmentFilterData::CONNECT_TYPE_AND;
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE);
expect($filter->getAction())->equals(WooCommerceNumberOfOrders::ACTION_NUMBER_OF_ORDERS);
expect($filter->getData())->equals($expectedResult); expect($filter->getData())->equals($expectedResult);
} }
@ -371,9 +364,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION);
expect($filter->getAction())->equals(WooCommerceSubscription::ACTION_HAS_ACTIVE);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION,
'action' => WooCommerceSubscription::ACTION_HAS_ACTIVE,
'product_id' => '10', 'product_id' => '10',
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);
@ -415,9 +407,8 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
assert($filter instanceof DynamicSegmentFilterData); assert($filter instanceof DynamicSegmentFilterData);
expect($filter)->isInstanceOf(DynamicSegmentFilterData::class); expect($filter)->isInstanceOf(DynamicSegmentFilterData::class);
expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE); expect($filter->getFilterType())->equals(DynamicSegmentFilterData::TYPE_WOOCOMMERCE);
expect($filter->getAction())->equals(WooCommerceCountry::ACTION_CUSTOMER_COUNTRY);
expect($filter->getData())->equals([ expect($filter->getData())->equals([
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => WooCommerceCountry::ACTION_CUSTOMER_COUNTRY,
'country_code' => 'UK', 'country_code' => 'UK',
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND, 'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
]); ]);