Files
piratepoet/mailpoet/tests/integration/Statistics/StatisticsFormsRepositoryTest.php
Rodrigo Primo afe378ba22 Replace expect()->equals() with verify()->equals()
codeception/verify 2.1 removed support for expect()->equals() so we need
to replace it with verify()->equals().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00

84 lines
3.0 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Statistics;
use MailPoet\Entities\FormEntity;
use MailPoet\Entities\StatisticsFormEntity;
use MailPoet\Entities\SubscriberEntity;
class StatisticsFormsRepositoryTest extends \MailPoetTest {
/** @var StatisticsFormsRepository */
private $repository;
public function _before() {
parent::_before();
$this->repository = $this->diContainer->get(StatisticsFormsRepository::class);
}
public function testItCanRecordStats(): void {
$form = $this->createForm();
$subscriber = $this->createSubscriber();
$record = $this->repository->record($form, $subscriber);
$this->assertInstanceOf(StatisticsFormEntity::class, $record);
verify($record->getForm())->equals($form);
verify($record->getSubscriber())->equals($subscriber);
expect($this->repository->findOneBy(['form' => $form, 'subscriber' => $subscriber]))->isInstanceOf(StatisticsFormEntity::class);
}
public function testItDoesNotOverrideStats(): void {
$form = $this->createForm();
$subscriber = $this->createSubscriber();
$record = $this->repository->record($form, $subscriber);
$this->assertInstanceOf(StatisticsFormEntity::class, $record);
verify($record->getForm())->equals($form);
verify($record->getSubscriber())->equals($subscriber);
$this->repository->record($form, $subscriber);
expect($this->repository->findAll())->count(1);
}
public function testItCanRecordMultipleStats(): void {
$form1 = $this->createForm();
$form2 = $this->createForm();
$subscriber1 = $this->createSubscriber();
$subscriber2 = $this->createSubscriber();
$this->repository->record($form1, $subscriber2);
$this->repository->record($form2, $subscriber2);
$this->repository->record($form1, $subscriber1);
expect($this->repository->findAll())->count(3);
}
public function testItCanReturnTheTotalSignupsOfAForm(): void {
$form1 = $this->createForm();
$form2 = $this->createForm();
$subscriber1 = $this->createSubscriber();
$subscriber2 = $this->createSubscriber();
// simulate 2 signups for form #1
$this->repository->record($form1, $subscriber2);
$this->repository->record($form1, $subscriber1);
// simulate 1 signup for form #2
$this->repository->record($form2, $subscriber2);
verify($this->repository->getTotalSignups((int)$form1->getId()))->equals(2);
verify($this->repository->getTotalSignups((int)$form2->getId()))->equals(1);
expect($this->repository->findAll())->count(3);
}
private function createSubscriber(): SubscriberEntity {
$subscriber = new SubscriberEntity();
$subscriber->setStatus(SubscriberEntity::STATUS_SUBSCRIBED);
$subscriber->setEmail('subscriber' . rand(0, 10000) . '@example.com');
$this->entityManager->persist($subscriber);
$this->entityManager->flush();
return $subscriber;
}
private function createForm(): FormEntity {
$form = new FormEntity('Form' . rand(0, 10000));
$this->entityManager->persist($form);
$this->entityManager->flush();
return $form;
}
}