Rewrite UserFlags data factory to create-or-update logic

[MAILPOET-2302]
This commit is contained in:
Jan Jakeš
2019-09-02 16:16:38 +02:00
committed by M. Shull
parent 0e5c903da9
commit cf9c90bd04
2 changed files with 19 additions and 10 deletions

View File

@ -169,7 +169,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Settings\SettingsController::class)->setPublic(true); $container->autowire(\MailPoet\Settings\SettingsController::class)->setPublic(true);
// User Flags // User Flags
$container->autowire(\MailPoet\Settings\UserFlagsController::class); $container->autowire(\MailPoet\Settings\UserFlagsController::class);
$container->autowire(\MailPoet\Settings\UserFlagsRepository::class); $container->autowire(\MailPoet\Settings\UserFlagsRepository::class)->setPublic(true);
// Subscription // Subscription
$container->autowire(\MailPoet\Subscription\Captcha::class)->setPublic(true); $container->autowire(\MailPoet\Subscription\Captcha::class)->setPublic(true);
$container->autowire(\MailPoet\Subscription\CaptchaRenderer::class)->setPublic(true); $container->autowire(\MailPoet\Subscription\CaptchaRenderer::class)->setPublic(true);

View File

@ -2,7 +2,7 @@
namespace MailPoet\Test\DataFactories; namespace MailPoet\Test\DataFactories;
use MailPoetVendor\Doctrine\ORM\EntityManager; use MailPoet\Settings\UserFlagsRepository;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\UserFlagEntity; use MailPoet\Entities\UserFlagEntity;
@ -10,12 +10,12 @@ class UserFlags {
/** @var int */ /** @var int */
private $user_id; private $user_id;
/** @var EntityManager */ /** @var UserFlagsRepository */
private $entity_manager; private $user_flags_repository;
function __construct($user_id) { function __construct($user_id) {
$this->user_id = $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() { function withDefaultFlags() {
@ -28,12 +28,21 @@ class UserFlags {
} }
function withFlag($name, $value) { function withFlag($name, $value) {
$user_flag = new UserFlagEntity(); $user_flag = $this->user_flags_repository->findOneBy([
$user_flag->setUserId($this->user_id); 'user_id' => $this->user_id,
$user_flag->setName($name); '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); $user_flag->setValue($value);
$this->entity_manager->persist($user_flag); $this->user_flags_repository->persist($user_flag);
$this->entity_manager->flush(); $this->user_flags_repository->flush();
return $this; return $this;
} }
} }