Add a test for "mailpoet_segment_subscribed" hook being triggered
[MAILPOET-5992]
This commit is contained in:
@@ -8,6 +8,7 @@ use MailPoet\Entities\SubscriberEntity;
|
|||||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||||
use MailPoet\Entities\SubscriberTagEntity;
|
use MailPoet\Entities\SubscriberTagEntity;
|
||||||
use MailPoet\Segments\SegmentsRepository;
|
use MailPoet\Segments\SegmentsRepository;
|
||||||
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
|
|
||||||
class SubscriberSaveControllerTest extends \MailPoetTest {
|
class SubscriberSaveControllerTest extends \MailPoetTest {
|
||||||
@@ -162,6 +163,36 @@ class SubscriberSaveControllerTest extends \MailPoetTest {
|
|||||||
verify($subscriberSegments)->arrayCount(2);
|
verify($subscriberSegments)->arrayCount(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItTriggersSegmentSubscribedHook(): void {
|
||||||
|
$segmentOne = $this->segmentsRepository->createOrUpdate('Segment One');
|
||||||
|
$segmentTwo = $this->segmentsRepository->createOrUpdate('Segment Two');
|
||||||
|
$data = [
|
||||||
|
'email' => 'test@test.com',
|
||||||
|
'status' => SubscriberEntity::STATUS_SUBSCRIBED,
|
||||||
|
'segments' => [$segmentOne->getId(), $segmentTwo->getId()],
|
||||||
|
];
|
||||||
|
|
||||||
|
$count = 0;
|
||||||
|
$this->diContainer->get(WPFunctions::class)->addAction('mailpoet_segment_subscribed', function () use (&$count) {
|
||||||
|
$count++;
|
||||||
|
});
|
||||||
|
|
||||||
|
// create subscriber with subscribed status
|
||||||
|
$count = 0;
|
||||||
|
$this->saveController->save($data);
|
||||||
|
$this->assertSame(2, $count); // @phpstan-ignore-line -- PHPStan doesn't get the $count side effect
|
||||||
|
|
||||||
|
// update subscriber to non-subscribed status
|
||||||
|
$count = 0;
|
||||||
|
$this->saveController->save(array_merge($data, ['status' => SubscriberEntity::STATUS_UNCONFIRMED]));
|
||||||
|
$this->assertSame(0, $count);
|
||||||
|
|
||||||
|
// update subscriber to subscribed status
|
||||||
|
$count = 0;
|
||||||
|
$this->saveController->save($data);
|
||||||
|
$this->assertSame(2, $count); // @phpstan-ignore-line -- PHPStan doesn't get the $count side effect
|
||||||
|
}
|
||||||
|
|
||||||
private function createSubscriber(string $email, string $status): SubscriberEntity {
|
private function createSubscriber(string $email, string $status): SubscriberEntity {
|
||||||
$subscriber = new SubscriberEntity();
|
$subscriber = new SubscriberEntity();
|
||||||
$subscriber->setEmail($email);
|
$subscriber->setEmail($email);
|
||||||
|
Reference in New Issue
Block a user