Use new signature of the dynamicSegmentFilterData constructor
[MAILPOET-3427]
This commit is contained in:
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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());
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
]);
|
]);
|
||||||
|
@ -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,
|
||||||
|
@ -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',
|
||||||
|
@ -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,
|
||||||
]);
|
]);
|
||||||
|
@ -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');
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
]);
|
]);
|
||||||
|
Reference in New Issue
Block a user