Skip to content

Commit 4a849e5

Browse files
committed
Merge remote-tracking branch 'origin/MAUT-11515' into development
2 parents 92b6977 + 1740895 commit 4a849e5

File tree

1 file changed

+67
-19
lines changed

1 file changed

+67
-19
lines changed

Tests/Functional/EventListener/FilterOperatorSubscriberTest.php

+67-19
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,22 @@
66

77
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
88
use Mautic\LeadBundle\Entity\Lead;
9+
use Mautic\LeadBundle\Entity\LeadField;
910
use Mautic\LeadBundle\Entity\LeadList;
1011
use Mautic\LeadBundle\Entity\ListLead;
12+
use MauticPlugin\CustomObjectsBundle\CustomFieldType\CustomFieldTypeInterface;
13+
use MauticPlugin\CustomObjectsBundle\Entity\CustomField;
1114
use MauticPlugin\CustomObjectsBundle\Entity\CustomItem;
1215
use MauticPlugin\CustomObjectsBundle\Entity\CustomObject;
16+
use MauticPlugin\CustomObjectsBundle\Provider\CustomFieldTypeProvider;
1317
use Symfony\Component\HttpFoundation\Request;
1418

1519
class FilterOperatorSubscriberTest extends MauticMysqlTestCase
1620
{
1721
public function testIfNewOperatorNotInCustomObjectsAddedinSegmentFilter()
1822
{
19-
// Create a segment
20-
$segment = new LeadList();
21-
$segment->setName('Test Segment A');
22-
$segment->setPublicName('Test Segment A');
23-
$segment->setAlias('test-segment-a');
24-
25-
$this->em->persist($segment);
26-
$this->em->flush();
27-
28-
$crawler = $this->client->request(Request::METHOD_GET, '/s/segments/edit/'.$segment->getId());
29-
23+
$crawler = $this->client->request(Request::METHOD_GET, '/s/segments/new/');
3024
$segment_filters = $crawler->filter('#available_segment_filters')->html();
31-
3225
$this->assertStringContainsString('not in custom objects', $segment_filters);
3326
}
3427

@@ -44,13 +37,7 @@ public function testIfProperContactsAreAddedinSegmentWithNotInCustomObjectsFilte
4437
$this->em->persist($contact2);
4538

4639
// 2) create custom object "Email List" with "[email protected]" and "[email protected]" as items
47-
$customObject = new CustomObject();
48-
$customObject->setNameSingular('Email List');
49-
$customObject->setNamePlural('Emai List');
50-
$customObject->setAlias('emails');
51-
$customObject->setType(CustomObject::TYPE_MASTER);
52-
$this->em->persist($customObject);
53-
40+
$customObject = $this->createCustomObject('emails');
5441
$customItem1 = new CustomItem($customObject);
5542
$customItem1->setName('[email protected]');
5643
$this->em->persist($customItem1);
@@ -94,4 +81,65 @@ public function testIfProperContactsAreAddedinSegmentWithNotInCustomObjectsFilte
9481
$this->assertSame($contact2->getLastname(), $leads[0]->getLead()->getLastname());
9582
$this->assertSame($contact2->getEmail(), $leads[0]->getLead()->getEmail());
9683
}
84+
85+
public function testCustomObjectSegmentFilterOperatorForDateField(): void
86+
{
87+
$leadField = $this->createField('date_field', 'date');
88+
89+
$fieldTypeProvider = self::$container->get('custom_field.type.provider');
90+
\assert($fieldTypeProvider instanceof CustomFieldTypeProvider);
91+
$objectType = $fieldTypeProvider->getType('date');
92+
$dateField = $this->createCustomField('co_date_field', $objectType);
93+
94+
$this->createCustomObject('obj', $dateField);
95+
96+
$this->em->flush();
97+
$crawler = $this->client->request(Request::METHOD_GET, '/s/segments/new/');
98+
99+
$coDateFilterOperators = $crawler
100+
->filter('#available_segment_filters option[id="available_custom_object_cmf_'.$dateField->getId().'"]')
101+
->attr('data-field-operators');
102+
103+
$leadDateFilterOperators = $crawler
104+
->filter('#available_segment_filters option[id="available_lead_'.$leadField->getAlias().'"]')
105+
->attr('data-field-operators');
106+
107+
$this->assertSame($coDateFilterOperators, $leadDateFilterOperators);
108+
}
109+
110+
private function createField(string $alias, string $type): LeadField
111+
{
112+
$field = new LeadField();
113+
$field->setName($alias);
114+
$field->setAlias($alias);
115+
$field->setType($type);
116+
$this->em->persist($field);
117+
118+
return $field;
119+
}
120+
121+
private function createCustomObject(string $alias, ?CustomField $dateField = null): CustomObject
122+
{
123+
$customObject = new CustomObject();
124+
$customObject->setNameSingular($alias);
125+
$customObject->setNamePlural($alias.'s');
126+
$customObject->setAlias($alias);
127+
if ($dateField) {
128+
$customObject->addCustomField($dateField);
129+
}
130+
$this->em->persist($customObject);
131+
132+
return $customObject;
133+
}
134+
135+
private function createCustomField(string $alias, CustomFieldTypeInterface $objectType): CustomField
136+
{
137+
$dateField = new CustomField();
138+
$dateField->setTypeObject($objectType);
139+
$dateField->setType($objectType->getKey());
140+
$dateField->setLabel($alias);
141+
$dateField->setAlias($alias);
142+
143+
return $dateField;
144+
}
97145
}

0 commit comments

Comments
 (0)