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\SubscriberTagEntity;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
|
||||
class SubscriberSaveControllerTest extends \MailPoetTest {
|
||||
@@ -162,6 +163,36 @@ class SubscriberSaveControllerTest extends \MailPoetTest {
|
||||
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 {
|
||||
$subscriber = new SubscriberEntity();
|
||||
$subscriber->setEmail($email);
|
||||
|
Reference in New Issue
Block a user