Move lists testing to the separate class
[MAILPOET-4292]
This commit is contained in:
@ -7,6 +7,7 @@ use Codeception\Stub\Expected;
|
||||
use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder;
|
||||
use MailPoet\API\MP\v1\API;
|
||||
use MailPoet\API\MP\v1\CustomFields;
|
||||
use MailPoet\API\MP\v1\Segments;
|
||||
use MailPoet\API\MP\v1\Subscribers;
|
||||
use MailPoet\Config\Changelog;
|
||||
use MailPoet\CustomFields\CustomFieldsRepository;
|
||||
@ -72,6 +73,7 @@ class APITest extends \MailPoetTest {
|
||||
return new API(
|
||||
$this->diContainer->get(RequiredCustomFieldValidator::class),
|
||||
$this->diContainer->get(CustomFields::class),
|
||||
$this->diContainer->get(Segments::class),
|
||||
$subscriberActions,
|
||||
$this->diContainer->get(Changelog::class)
|
||||
);
|
||||
@ -103,23 +105,6 @@ class APITest extends \MailPoetTest {
|
||||
);
|
||||
}
|
||||
|
||||
public function testItGetsSegments() {
|
||||
$segment = $this->getSegment();
|
||||
$result = $this->getApi()->getLists();
|
||||
expect($result)->count(1);
|
||||
expect($result[0]['id'])->equals($segment->getId());
|
||||
}
|
||||
|
||||
public function testItExcludesWPUsersAndWooCommerceCustomersSegmentsWhenGettingSegments() {
|
||||
$defaultSegment = $this->getSegment();
|
||||
$this->getSegment('WordPress', SegmentEntity::TYPE_WP_USERS);
|
||||
$this->getSegment('WooCommerce', SegmentEntity::TYPE_WC_USERS);
|
||||
|
||||
$result = $this->getApi()->getLists();
|
||||
expect($result)->count(1);
|
||||
expect($result[0]['id'])->equals($defaultSegment->getId());
|
||||
}
|
||||
|
||||
public function testItRequiresEmailAddressToAddSubscriber() {
|
||||
try {
|
||||
$this->getApi()->addSubscriber([]);
|
||||
|
80
mailpoet/tests/integration/API/MP/SegmentsTest.php
Normal file
80
mailpoet/tests/integration/API/MP/SegmentsTest.php
Normal file
@ -0,0 +1,80 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\Test\API\MP;
|
||||
|
||||
use MailPoet\API\MP\v1\API;
|
||||
use MailPoet\API\MP\v1\CustomFields;
|
||||
use MailPoet\API\MP\v1\Segments;
|
||||
use MailPoet\API\MP\v1\Subscribers;
|
||||
use MailPoet\Config\Changelog;
|
||||
use MailPoet\Entities\SegmentEntity;
|
||||
use MailPoet\Subscribers\RequiredCustomFieldValidator;
|
||||
use MailPoet\Test\DataFactories\Segment as SegmentFactory;
|
||||
|
||||
class SegmentsTest extends \MailPoetTest {
|
||||
/** @var SegmentFactory */
|
||||
private $segmentFactory;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->segmentFactory = new SegmentFactory();
|
||||
}
|
||||
|
||||
public function testItGetsAllDefaultSegments(): void {
|
||||
$segments = [
|
||||
$this->createOrUpdateSegment('Segment 1'),
|
||||
$this->createOrUpdateSegment('Segment 2'),
|
||||
];
|
||||
|
||||
$result = $this->getApi()->getLists();
|
||||
|
||||
$this->assertCount(2, $result);
|
||||
foreach ($result as $key => $item) {
|
||||
$this->validateResponseItem($segments[$key], $item);
|
||||
}
|
||||
}
|
||||
|
||||
public function testItExcludesWPUsersAndWooCommerceCustomersSegmentsWhenGettingSegments(): void {
|
||||
$this->createOrUpdateSegment('WordPress', SegmentEntity::TYPE_WP_USERS);
|
||||
$this->createOrUpdateSegment('WooCommerce', SegmentEntity::TYPE_WC_USERS);
|
||||
$defaultSegment = $this->createOrUpdateSegment('Segment 1', SegmentEntity::TYPE_DEFAULT, 'My default segment');
|
||||
|
||||
$result = $this->getApi()->getLists();
|
||||
|
||||
$this->assertCount(1, $result);
|
||||
$resultItem = reset($result);
|
||||
$this->validateResponseItem($defaultSegment, $resultItem);
|
||||
}
|
||||
|
||||
private function getApi(): API {
|
||||
return new API(
|
||||
$this->makeEmpty(RequiredCustomFieldValidator::class),
|
||||
$this->diContainer->get(CustomFields::class),
|
||||
$this->diContainer->get(Segments::class),
|
||||
$this->diContainer->get(Subscribers::class),
|
||||
$this->diContainer->get(Changelog::class)
|
||||
);
|
||||
}
|
||||
|
||||
private function validateResponseItem(SegmentEntity $segment, array $item): void {
|
||||
$this->assertEquals($segment->getId(), $item['id']);
|
||||
$this->assertEquals($segment->getName(), $item['name']);
|
||||
$this->assertEquals($segment->getDescription(), $item['description']);
|
||||
$this->assertEquals($segment->getType(), $item['type']);
|
||||
$this->assertArrayHasKey('created_at', $item);
|
||||
$this->assertArrayHasKey('updated_at', $item);
|
||||
$this->assertNull($item['deleted_at']);
|
||||
}
|
||||
|
||||
private function createOrUpdateSegment(string $name, string $type = SegmentEntity::TYPE_DEFAULT, string $description = ''): SegmentEntity {
|
||||
return $this->segmentFactory
|
||||
->withName($name)
|
||||
->withType($type)
|
||||
->withDescription($description)
|
||||
->create();
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
$this->truncateEntity(SegmentEntity::class);
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ use Codeception\Stub\Expected;
|
||||
use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder;
|
||||
use MailPoet\API\MP\v1\API;
|
||||
use MailPoet\API\MP\v1\CustomFields;
|
||||
use MailPoet\API\MP\v1\Segments;
|
||||
use MailPoet\API\MP\v1\Subscribers;
|
||||
use MailPoet\Config\Changelog;
|
||||
use MailPoet\Entities\SegmentEntity;
|
||||
@ -62,6 +63,7 @@ class SubscribersTest extends \MailPoetTest {
|
||||
return new API(
|
||||
$this->makeEmpty(RequiredCustomFieldValidator::class),
|
||||
$this->diContainer->get(CustomFields::class),
|
||||
$this->diContainer->get(Segments::class),
|
||||
$subscriberActions,
|
||||
$this->diContainer->get(Changelog::class)
|
||||
);
|
||||
|
Reference in New Issue
Block a user