From cf9c90bd04686ab1f9a5d48af83b0c33eafc2055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Mon, 2 Sep 2019 16:16:38 +0200 Subject: [PATCH] Rewrite UserFlags data factory to create-or-update logic [MAILPOET-2302] --- lib/DI/ContainerConfigurator.php | 2 +- tests/DataFactories/UserFlags.php | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 35728b3be5..2f15a6a889 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -169,7 +169,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Settings\SettingsController::class)->setPublic(true); // User Flags $container->autowire(\MailPoet\Settings\UserFlagsController::class); - $container->autowire(\MailPoet\Settings\UserFlagsRepository::class); + $container->autowire(\MailPoet\Settings\UserFlagsRepository::class)->setPublic(true); // Subscription $container->autowire(\MailPoet\Subscription\Captcha::class)->setPublic(true); $container->autowire(\MailPoet\Subscription\CaptchaRenderer::class)->setPublic(true); diff --git a/tests/DataFactories/UserFlags.php b/tests/DataFactories/UserFlags.php index ca6b2c6cc2..110bda624b 100644 --- a/tests/DataFactories/UserFlags.php +++ b/tests/DataFactories/UserFlags.php @@ -2,7 +2,7 @@ namespace MailPoet\Test\DataFactories; -use MailPoetVendor\Doctrine\ORM\EntityManager; +use MailPoet\Settings\UserFlagsRepository; use MailPoet\DI\ContainerWrapper; use MailPoet\Entities\UserFlagEntity; @@ -10,12 +10,12 @@ class UserFlags { /** @var int */ private $user_id; - /** @var EntityManager */ - private $entity_manager; + /** @var UserFlagsRepository */ + private $user_flags_repository; function __construct($user_id) { $this->user_id = $user_id; - $this->entity_manager = ContainerWrapper::getInstance()->get(EntityManager::class); + $this->user_flags_repository = ContainerWrapper::getInstance()->get(UserFlagsRepository::class); } function withDefaultFlags() { @@ -28,12 +28,21 @@ class UserFlags { } function withFlag($name, $value) { - $user_flag = new UserFlagEntity(); - $user_flag->setUserId($this->user_id); - $user_flag->setName($name); + $user_flag = $this->user_flags_repository->findOneBy([ + 'user_id' => $this->user_id, + 'name' => $name, + ]); + + if (!$user_flag) { + $user_flag = new UserFlagEntity(); + $user_flag->setUserId($this->user_id); + $user_flag->setName($name); + $this->user_flags_repository->persist($user_flag); + } + $user_flag->setValue($value); - $this->entity_manager->persist($user_flag); - $this->entity_manager->flush(); + $this->user_flags_repository->persist($user_flag); + $this->user_flags_repository->flush(); return $this; } }