Remove usages of StatisticsUnsubscribes model
[MAILPOET-3819]
This commit is contained in:
@@ -3,7 +3,11 @@
|
||||
namespace MailPoet\Statistics;
|
||||
|
||||
use MailPoet\Doctrine\Repository;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\SendingQueueEntity;
|
||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
|
||||
/**
|
||||
* @extends Repository<StatisticsUnsubscribeEntity>
|
||||
@@ -12,4 +16,27 @@ class StatisticsUnsubscribesRepository extends Repository {
|
||||
protected function getEntityClassName() {
|
||||
return StatisticsUnsubscribeEntity::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
* @return StatisticsUnsubscribeEntity
|
||||
*/
|
||||
public function createOrUpdate($data) {
|
||||
if (isset($data['id'])) {
|
||||
$entity = $this->findOneById((int)$data['id']);
|
||||
}
|
||||
if (!isset($entity)) {
|
||||
if (!isset($data['newsletter'], $data['queue'], $data['subscriber'])) {
|
||||
throw new \Exception('Newsletter, SendingQueue and Subscriber entities are required for creation');
|
||||
}
|
||||
assert($data['newsletter'] instanceof NewsletterEntity);
|
||||
assert($data['queue'] instanceof SendingQueueEntity);
|
||||
assert($data['subscriber'] instanceof SubscriberEntity);
|
||||
$entity = new StatisticsUnsubscribeEntity($data['newsletter'], $data['queue'], $data['subscriber']);
|
||||
$this->entityManager->persist($entity);
|
||||
}
|
||||
if (isset($data['created_at'])) $entity->setCreatedAt(new Carbon($data['created_at']));
|
||||
$this->entityManager->flush();
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
|
@@ -4,8 +4,9 @@ namespace MailPoet\Cron\Workers\StatsNotifications;
|
||||
|
||||
use MailPoet\Config\Renderer;
|
||||
use MailPoet\Cron\CronHelper;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoet\Entities\StatsNotificationEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Mailer\MetaInfo;
|
||||
use MailPoet\Models\Newsletter;
|
||||
@@ -14,9 +15,11 @@ use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\StatisticsClicks;
|
||||
use MailPoet\Models\StatisticsOpens;
|
||||
use MailPoet\Models\StatisticsUnsubscribes;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Statistics\StatisticsUnsubscribesRepository;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
|
||||
use MailPoetVendor\Idiorm\ORM;
|
||||
@@ -51,19 +54,28 @@ class WorkerTest extends \MailPoetTest {
|
||||
/** @var NewsletterLinkRepository */
|
||||
private $newsletterLinkRepository;
|
||||
|
||||
/** @var NewslettersRepository */
|
||||
private $newslettersRepository;
|
||||
|
||||
/** @var SendingQueuesRepository */
|
||||
private $sendingQueuesRepository;
|
||||
|
||||
/** @var StatisticsUnsubscribesRepository */
|
||||
private $statisticsUnsubscribesRepository;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . StatisticsClicks::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
$this->repository = ContainerWrapper::getInstance()->get(StatsNotificationsRepository::class);
|
||||
$this->newsletterLinkRepository = ContainerWrapper::getInstance()->get(NewsletterLinkRepository::class);
|
||||
$this->cleanup();
|
||||
$this->repository = $this->diContainer->get(StatsNotificationsRepository::class);
|
||||
$this->newsletterLinkRepository = $this->diContainer->get(NewsletterLinkRepository::class);
|
||||
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
||||
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||
$this->statisticsUnsubscribesRepository = $this->diContainer->get(StatisticsUnsubscribesRepository::class);
|
||||
$this->repository->truncate();
|
||||
$this->mailer = $this->createMock(Mailer::class);
|
||||
$this->renderer = $this->createMock(Renderer::class);
|
||||
$this->settings = SettingsController::getInstance();
|
||||
$this->cronHelper = ContainerWrapper::getInstance()->get(CronHelper::class);
|
||||
$this->cronHelper = $this->diContainer->get(CronHelper::class);
|
||||
$this->statsNotifications = new Worker(
|
||||
$this->mailer,
|
||||
$this->renderer,
|
||||
@@ -72,10 +84,10 @@ class WorkerTest extends \MailPoetTest {
|
||||
new MetaInfo,
|
||||
$this->repository,
|
||||
$this->newsletterLinkRepository,
|
||||
ContainerWrapper::getInstance()->get(NewsletterStatisticsRepository::class),
|
||||
$this->diContainer->get(NewsletterStatisticsRepository::class),
|
||||
$this->entityManager,
|
||||
ContainerWrapper::getInstance()->get(SubscribersFeature::class),
|
||||
ContainerWrapper::getInstance()->get(SubscribersRepository::class)
|
||||
$this->diContainer->get(SubscribersFeature::class),
|
||||
$this->diContainer->get(SubscribersRepository::class)
|
||||
);
|
||||
$this->settings->set(Worker::SETTINGS_KEY, [
|
||||
'enabled' => true,
|
||||
@@ -156,10 +168,10 @@ class WorkerTest extends \MailPoetTest {
|
||||
'queue_id' => $this->queue->id(),
|
||||
'created_at' => '2017-01-02 21:23:45',
|
||||
]);
|
||||
StatisticsUnsubscribes::createOrUpdate([
|
||||
'subscriber_id' => '12',
|
||||
'newsletter_id' => $this->newsletter->id(),
|
||||
'queue_id' => $this->queue->id(),
|
||||
$this->statisticsUnsubscribesRepository->createOrUpdate([
|
||||
'subscriber' => $this->createSubscriber(),
|
||||
'newsletter' => $this->newslettersRepository->findOneById($this->newsletter->id()),
|
||||
'queue' => $this->sendingQueuesRepository->findOneById($this->queue->id()),
|
||||
'created_at' => '2017-01-02 21:23:45',
|
||||
]);
|
||||
}
|
||||
@@ -311,4 +323,25 @@ class WorkerTest extends \MailPoetTest {
|
||||
|
||||
$this->statsNotifications->process();
|
||||
}
|
||||
|
||||
private function createSubscriber(): SubscriberEntity {
|
||||
$subscriber = new SubscriberEntity();
|
||||
$subscriber->setStatus(SubscriberEntity::STATUS_SUBSCRIBED);
|
||||
$subscriber->setEmail('subscriber' . rand(0, 10000) . '@example.com');
|
||||
$this->entityManager->persist($subscriber);
|
||||
return $subscriber;
|
||||
}
|
||||
|
||||
private function cleanup() {
|
||||
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . StatisticsClicks::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
$this->truncateEntity(StatisticsUnsubscribeEntity::class);
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
parent::_after();
|
||||
$this->cleanup();
|
||||
}
|
||||
}
|
||||
|
@@ -2,6 +2,9 @@
|
||||
|
||||
namespace MailPoet\Test\Models;
|
||||
|
||||
use MailPoet\Entities\StatisticsClickEntity;
|
||||
use MailPoet\Entities\StatisticsOpenEntity;
|
||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
@@ -9,9 +12,6 @@ use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\StatisticsClicks;
|
||||
use MailPoet\Models\StatisticsOpens;
|
||||
use MailPoet\Models\StatisticsUnsubscribes;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\Util\Security;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
@@ -539,8 +539,8 @@ class NewsletterTest extends \MailPoetTest {
|
||||
ORM::raw_execute('TRUNCATE ' . NewsletterSegment::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . StatisticsOpens::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . StatisticsClicks::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . StatisticsUnsubscribes::$_table);
|
||||
$this->truncateEntity(StatisticsClickEntity::class);
|
||||
$this->truncateEntity(StatisticsOpenEntity::class);
|
||||
$this->truncateEntity(StatisticsUnsubscribeEntity::class);
|
||||
}
|
||||
}
|
||||
|
@@ -1,31 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Test\Models;
|
||||
|
||||
use MailPoet\Models\StatisticsUnsubscribes;
|
||||
|
||||
class StatisticsUnsubscribesTest extends \MailPoetTest {
|
||||
public function testItCanGetExistingStatisticsRecord() {
|
||||
$unsubscribeStatistics = StatisticsUnsubscribes::create();
|
||||
$unsubscribeStatistics->newsletterId = 123;
|
||||
$unsubscribeStatistics->subscriberId = 456;
|
||||
$unsubscribeStatistics->queueId = 789;
|
||||
$unsubscribeStatistics->save();
|
||||
$unsubscribeStatistics = StatisticsUnsubscribes::getOrCreate(456, 123, 789);
|
||||
expect($unsubscribeStatistics->newsletterId)->equals(123);
|
||||
expect($unsubscribeStatistics->subscriberId)->equals(456);
|
||||
expect($unsubscribeStatistics->queueId)->equals(789);
|
||||
}
|
||||
|
||||
public function testItCanCreateNewStatisticsRecord() {
|
||||
expect(count(StatisticsUnsubscribes::findMany()))->equals(0);
|
||||
$unsubscribeStatistics = StatisticsUnsubscribes::getOrCreate(456, 123, 789);
|
||||
expect($unsubscribeStatistics->newsletterId)->equals(123);
|
||||
expect($unsubscribeStatistics->subscriberId)->equals(456);
|
||||
expect($unsubscribeStatistics->queueId)->equals(789);
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
StatisticsUnsubscribes::deleteMany();
|
||||
}
|
||||
}
|
@@ -2,11 +2,11 @@
|
||||
|
||||
namespace MailPoet\Test\Statistics\Track;
|
||||
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\StatisticsUnsubscribes;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Statistics\StatisticsUnsubscribesRepository;
|
||||
use MailPoet\Statistics\Track\Unsubscribes;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoetVendor\Idiorm\ORM;
|
||||
@@ -15,6 +15,9 @@ class UnsubscribesTest extends \MailPoetTest {
|
||||
/** @var Unsubscribes */
|
||||
private $unsubscribes;
|
||||
|
||||
/** @var StatisticsUnsubscribesRepository */
|
||||
private $statisticsUnsubscribesRepository;
|
||||
|
||||
public $queue;
|
||||
public $subscriber;
|
||||
public $newsletter;
|
||||
@@ -38,7 +41,8 @@ class UnsubscribesTest extends \MailPoetTest {
|
||||
$queue->updateProcessedSubscribers([$subscriber->id]);
|
||||
$this->queue = $queue->save();
|
||||
// instantiate class
|
||||
$this->unsubscribes = ContainerWrapper::getInstance()->get(Unsubscribes::class);
|
||||
$this->unsubscribes = $this->diContainer->get(Unsubscribes::class);
|
||||
$this->statisticsUnsubscribesRepository = $this->diContainer->get(StatisticsUnsubscribesRepository::class);
|
||||
}
|
||||
|
||||
public function testItTracksUnsubscribeEvent() {
|
||||
@@ -47,7 +51,7 @@ class UnsubscribesTest extends \MailPoetTest {
|
||||
'source',
|
||||
$this->queue->id
|
||||
);
|
||||
expect(count(StatisticsUnsubscribes::findMany()))->equals(1);
|
||||
expect(count($this->statisticsUnsubscribesRepository->findAll()))->equals(1);
|
||||
}
|
||||
|
||||
public function testItDoesNotTrackRepeatedUnsubscribeEvents() {
|
||||
@@ -58,13 +62,13 @@ class UnsubscribesTest extends \MailPoetTest {
|
||||
$this->queue->id
|
||||
);
|
||||
}
|
||||
expect(count(StatisticsUnsubscribes::findMany()))->equals(1);
|
||||
expect(count($this->statisticsUnsubscribesRepository->findAll()))->equals(1);
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . StatisticsUnsubscribes::$_table);
|
||||
$this->truncateEntity(StatisticsUnsubscribeEntity::class);
|
||||
}
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ namespace MailPoet\Test\Subscription;
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Config\Renderer;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Form\AssetsController;
|
||||
use MailPoet\Models\Newsletter;
|
||||
@@ -13,7 +14,6 @@ use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\StatisticsUnsubscribes;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||
@@ -193,7 +193,7 @@ class PagesTest extends \MailPoetTest {
|
||||
ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||
ORM::raw_execute('TRUNCATE ' . StatisticsUnsubscribes::$_table);
|
||||
$this->truncateEntity(StatisticsUnsubscribeEntity::class);
|
||||
}
|
||||
|
||||
private function getPages(
|
||||
|
Reference in New Issue
Block a user