Rewrite UserFlag entity to Doctrine
[MAILPOET-2014]
This commit is contained in:
@ -7,6 +7,8 @@ use MailPoet\Cron\CronTrigger;
|
|||||||
use MailPoet\Cron\Workers\AuthorizedSendingEmailsCheck;
|
use MailPoet\Cron\Workers\AuthorizedSendingEmailsCheck;
|
||||||
use MailPoet\Cron\Workers\Beamer;
|
use MailPoet\Cron\Workers\Beamer;
|
||||||
use MailPoet\Cron\Workers\InactiveSubscribers;
|
use MailPoet\Cron\Workers\InactiveSubscribers;
|
||||||
|
use MailPoet\Doctrine\Entities\UserFlag;
|
||||||
|
use MailPoet\Settings\UserFlagsRepository;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
use MailPoet\Models\NewsletterTemplate;
|
use MailPoet\Models\NewsletterTemplate;
|
||||||
use MailPoet\Models\Form;
|
use MailPoet\Models\Form;
|
||||||
@ -15,7 +17,6 @@ use MailPoet\Models\Segment;
|
|||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
use MailPoet\Models\StatisticsForms;
|
use MailPoet\Models\StatisticsForms;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Models\UserFlag;
|
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Segments\WP;
|
use MailPoet\Segments\WP;
|
||||||
use MailPoet\Services\Bridge;
|
use MailPoet\Services\Bridge;
|
||||||
@ -281,11 +282,7 @@ class Populator {
|
|||||||
$last_announcement_seen = $this->settings->fetch('last_announcement_seen');
|
$last_announcement_seen = $this->settings->fetch('last_announcement_seen');
|
||||||
if (!empty($last_announcement_seen)) {
|
if (!empty($last_announcement_seen)) {
|
||||||
foreach ($last_announcement_seen as $user_id => $value) {
|
foreach ($last_announcement_seen as $user_id => $value) {
|
||||||
UserFlag::createOrUpdate([
|
$this->createOrUpdateUserFlag($user_id, 'last_announcement_seen', $value);
|
||||||
'user_id' => $user_id,
|
|
||||||
'name' => 'last_announcement_seen',
|
|
||||||
'value' => $value,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
$this->settings->delete('last_announcement_seen');
|
$this->settings->delete('last_announcement_seen');
|
||||||
}
|
}
|
||||||
@ -296,16 +293,29 @@ class Populator {
|
|||||||
if (!empty($users_seen_editor_tutorial)) {
|
if (!empty($users_seen_editor_tutorial)) {
|
||||||
foreach ($users_seen_editor_tutorial as $setting) {
|
foreach ($users_seen_editor_tutorial as $setting) {
|
||||||
$user_id = substr($setting->name, $prefix_length);
|
$user_id = substr($setting->name, $prefix_length);
|
||||||
UserFlag::createOrUpdate([
|
$this->createOrUpdateUserFlag($user_id, 'editor_tutorial_seen', $setting->value);
|
||||||
'user_id' => $user_id,
|
|
||||||
'name' => 'editor_tutorial_seen',
|
|
||||||
'value' => $setting->value,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
Setting::whereLike('name', $prefix . '%')->deleteMany();
|
Setting::whereLike('name', $prefix . '%')->deleteMany();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function createOrUpdateUserFlag($user_id, $name, $value) {
|
||||||
|
$user_flags_repository = \MailPoet\DI\ContainerWrapper::getInstance(WP_DEBUG)->get(UserFlagsRepository::class);
|
||||||
|
$flag = $user_flags_repository->findOneBy([
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'name' => $name,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (!$flag) {
|
||||||
|
$flag = new UserFlag();
|
||||||
|
$flag->setUserId($user_id);
|
||||||
|
$flag->setName($name);
|
||||||
|
$user_flags_repository->persist($flag);
|
||||||
|
}
|
||||||
|
$flag->setValue($value);
|
||||||
|
$user_flags_repository->flush();
|
||||||
|
}
|
||||||
|
|
||||||
private function createDefaultSegments() {
|
private function createDefaultSegments() {
|
||||||
// WP Users segment
|
// WP Users segment
|
||||||
Segment::getWPSegment();
|
Segment::getWPSegment();
|
||||||
|
@ -156,6 +156,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);
|
||||||
// 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);
|
||||||
|
65
lib/Doctrine/Entities/UserFlag.php
Normal file
65
lib/Doctrine/Entities/UserFlag.php
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Doctrine\Entities;
|
||||||
|
|
||||||
|
use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait;
|
||||||
|
use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
|
||||||
|
use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Entity()
|
||||||
|
* @Table(name="user_flags")
|
||||||
|
*/
|
||||||
|
class UserFlag {
|
||||||
|
use AutoincrementedIdTrait;
|
||||||
|
use CreatedAtTrait;
|
||||||
|
use UpdatedAtTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Column(type="integer")
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
private $user_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Column(type="string")
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Column(type="string")
|
||||||
|
* @var string|null
|
||||||
|
*/
|
||||||
|
private $value;
|
||||||
|
|
||||||
|
/** @return int */
|
||||||
|
public function getUserId() {
|
||||||
|
return $this->user_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param int $user_id */
|
||||||
|
public function setUserId($user_id) {
|
||||||
|
$this->user_id = $user_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @return string */
|
||||||
|
public function getName() {
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param string $name */
|
||||||
|
public function setName($name) {
|
||||||
|
$this->name = $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @return string|null */
|
||||||
|
public function getValue() {
|
||||||
|
return $this->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param string|null $value */
|
||||||
|
public function setValue($value) {
|
||||||
|
$this->value = $value;
|
||||||
|
}
|
||||||
|
}
|
@ -1,24 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace MailPoet\Models;
|
|
||||||
|
|
||||||
if (!defined('ABSPATH')) exit;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @property int $user_id
|
|
||||||
* @property string $name
|
|
||||||
* @property string $value
|
|
||||||
*/
|
|
||||||
class UserFlag extends Model {
|
|
||||||
public static $_table = MP_USER_FLAGS_TABLE;
|
|
||||||
|
|
||||||
public static function createOrUpdate($data = []) {
|
|
||||||
$keys = false;
|
|
||||||
if (!empty($data['user_id']) && !empty($data['name'])) {
|
|
||||||
$keys = [
|
|
||||||
'user_id' => $data['user_id'],
|
|
||||||
'name' => $data['name'],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
return parent::_createOrUpdate($data, $keys);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +1,26 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Settings;
|
namespace MailPoet\Settings;
|
||||||
|
|
||||||
use MailPoet\Models\UserFlag;
|
use MailPoet\Doctrine\Entities\UserFlag;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
class UserFlagsController {
|
class UserFlagsController {
|
||||||
|
|
||||||
/**
|
/** @var array|null */
|
||||||
* @var array|null
|
|
||||||
*/
|
|
||||||
private $data = null;
|
private $data = null;
|
||||||
|
|
||||||
/**
|
/** @var array */
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $defaults;
|
private $defaults;
|
||||||
|
|
||||||
function __construct() {
|
/** @var UserFlagsRepository */
|
||||||
|
private $user_flags_repository;
|
||||||
|
|
||||||
|
function __construct(UserFlagsRepository $user_flags_repository) {
|
||||||
$this->defaults = [
|
$this->defaults = [
|
||||||
'last_announcement_seen' => false,
|
'last_announcement_seen' => false,
|
||||||
'editor_tutorial_seen' => false,
|
'editor_tutorial_seen' => false,
|
||||||
];
|
];
|
||||||
|
$this->user_flags_repository = $user_flags_repository;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get($name) {
|
function get($name) {
|
||||||
@ -38,11 +38,20 @@ class UserFlagsController {
|
|||||||
|
|
||||||
function set($name, $value) {
|
function set($name, $value) {
|
||||||
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
||||||
UserFlag::createOrUpdate([
|
$flag = $this->user_flags_repository->findOneBy([
|
||||||
'user_id' => $current_user_id,
|
'user_id' => $current_user_id,
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'value' => $value,
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (!$flag) {
|
||||||
|
$flag = new UserFlag();
|
||||||
|
$flag->setUserId($current_user_id);
|
||||||
|
$flag->setName($name);
|
||||||
|
$this->user_flags_repository->persist($flag);
|
||||||
|
}
|
||||||
|
$flag->setValue($value);
|
||||||
|
$this->user_flags_repository->flush();
|
||||||
|
|
||||||
if ($this->isLoaded()) {
|
if ($this->isLoaded()) {
|
||||||
$this->data[$name] = $value;
|
$this->data[$name] = $value;
|
||||||
}
|
}
|
||||||
@ -50,9 +59,18 @@ class UserFlagsController {
|
|||||||
|
|
||||||
function delete($name) {
|
function delete($name) {
|
||||||
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
||||||
UserFlag::where('user_id', $current_user_id)
|
$flag = $this->user_flags_repository->findOneBy([
|
||||||
->where('name', $name)
|
'user_id' => $current_user_id,
|
||||||
->deleteMany();
|
'name' => $name,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (!$flag) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->user_flags_repository->remove($flag);
|
||||||
|
$this->user_flags_repository->flush();
|
||||||
|
|
||||||
if ($this->isLoaded()) {
|
if ($this->isLoaded()) {
|
||||||
unset($this->data[$name]);
|
unset($this->data[$name]);
|
||||||
}
|
}
|
||||||
@ -60,10 +78,10 @@ class UserFlagsController {
|
|||||||
|
|
||||||
private function load() {
|
private function load() {
|
||||||
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
||||||
$flags = UserFlag::where('user_id', $current_user_id)->findMany();
|
$flags = $this->user_flags_repository->findBy(['user_id' => $current_user_id]);
|
||||||
$this->data = [];
|
$this->data = [];
|
||||||
foreach ($flags as $flag) {
|
foreach ($flags as $flag) {
|
||||||
$this->data[$flag->name] = $flag->value;
|
$this->data[$flag->getName()] = $flag->getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,4 +94,4 @@ class UserFlagsController {
|
|||||||
$this->load();
|
$this->load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
19
lib/Settings/UserFlagsRepository.php
Normal file
19
lib/Settings/UserFlagsRepository.php
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Settings;
|
||||||
|
|
||||||
|
use MailPoet\Doctrine\Entities\UserFlag;
|
||||||
|
use MailPoet\Doctrine\Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method UserFlag[] findBy(array $criteria, array $order_by = null, int $limit = null, int $offset = null)
|
||||||
|
* @method UserFlag|null findOneBy(array $criteria, array $order_by = null)
|
||||||
|
* @method UserFlag|null findOneById(mixed $id)
|
||||||
|
* @method void persist(UserFlag $entity)
|
||||||
|
* @method void remove(UserFlag $entity)
|
||||||
|
*/
|
||||||
|
class UserFlagsRepository extends Repository {
|
||||||
|
protected function getEntityClassName() {
|
||||||
|
return UserFlag::class;
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace MailPoet\Test\API\JSON\v1;
|
namespace MailPoet\Test\API\JSON\v1;
|
||||||
|
|
||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
use MailPoet\API\JSON\Response as APIResponse;
|
use MailPoet\API\JSON\Response as APIResponse;
|
||||||
use MailPoet\API\JSON\Error as APIError;
|
use MailPoet\API\JSON\Error as APIError;
|
||||||
use MailPoet\API\JSON\v1\UserFlags;
|
use MailPoet\API\JSON\v1\UserFlags;
|
||||||
use MailPoet\Models\UserFlag;
|
use MailPoet\Doctrine\Entities\UserFlag;
|
||||||
|
use MailPoet\Settings\UserFlagsRepository;
|
||||||
use MailPoet\Settings\UserFlagsController;
|
use MailPoet\Settings\UserFlagsController;
|
||||||
|
|
||||||
class UserFlagsTest extends \MailPoetTest {
|
class UserFlagsTest extends \MailPoetTest {
|
||||||
@ -17,9 +19,9 @@ class UserFlagsTest extends \MailPoetTest {
|
|||||||
private $user_flags;
|
private $user_flags;
|
||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
parent::_before();
|
$this->cleanup();
|
||||||
UserFlag::deleteMany();
|
$this->user_flags = Stub::make(UserFlagsController::class, [
|
||||||
$this->user_flags = Stub::make(new UserFlagsController, [
|
'user_flags_repository' => $this->di_container->get(UserFlagsRepository::class),
|
||||||
'defaults' => [
|
'defaults' => [
|
||||||
'flag_1' => 'default_value_1',
|
'flag_1' => 'default_value_1',
|
||||||
'flag_2' => 'default_value_2',
|
'flag_2' => 'default_value_2',
|
||||||
@ -53,4 +55,13 @@ class UserFlagsTest extends \MailPoetTest {
|
|||||||
'flag_3' => 'new_value_3',
|
'flag_3' => 'new_value_3',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
$this->cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function cleanup() {
|
||||||
|
$table_name = $this->entity_manager->getClassMetadata(UserFlag::class)->getTableName();
|
||||||
|
$this->entity_manager->getConnection()->executeUpdate("TRUNCATE $table_name");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace MailPoet\Test\Models;
|
|
||||||
|
|
||||||
use MailPoet\Models\UserFlag;
|
|
||||||
|
|
||||||
class UserFlagTest extends \MailPoetTest {
|
|
||||||
|
|
||||||
function _before() {
|
|
||||||
UserFlag::deleteMany();
|
|
||||||
}
|
|
||||||
|
|
||||||
function testCreateOrUpdateCreatesNewFlags() {
|
|
||||||
$created_flag = UserFlag::createOrUpdate([
|
|
||||||
'user_id' => 3,
|
|
||||||
'name' => 'first_flag',
|
|
||||||
'value' => 'foo',
|
|
||||||
]);
|
|
||||||
$other_flag = UserFlag::createOrUpdate([
|
|
||||||
'user_id' => 3,
|
|
||||||
'name' => 'second_flag',
|
|
||||||
'value' => 'bar',
|
|
||||||
]);
|
|
||||||
expect($created_flag->id > 0)->true();
|
|
||||||
expect($created_flag->getErrors())->false();
|
|
||||||
expect($other_flag->id != $created_flag->id)->true();
|
|
||||||
expect(UserFlag::count())->equals(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
function testCreateOrUpdateUpdatesExistingFlags() {
|
|
||||||
$created_flag = UserFlag::createOrUpdate([
|
|
||||||
'user_id' => 3,
|
|
||||||
'name' => 'first_flag',
|
|
||||||
'value' => 'foo',
|
|
||||||
]);
|
|
||||||
$updated_flag = UserFlag::createOrUpdate([
|
|
||||||
'user_id' => 3,
|
|
||||||
'name' => 'first_flag',
|
|
||||||
'value' => 'bar',
|
|
||||||
]);
|
|
||||||
expect($updated_flag->id)->equals($created_flag->id);
|
|
||||||
expect($updated_flag->value)->equals('bar');
|
|
||||||
expect(UserFlag::count())->equals(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -2,7 +2,8 @@
|
|||||||
namespace MailPoet\Test\Settings;
|
namespace MailPoet\Test\Settings;
|
||||||
|
|
||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
use MailPoet\Models\UserFlag;
|
use MailPoet\Doctrine\Entities\UserFlag;
|
||||||
|
use MailPoet\Settings\UserFlagsRepository;
|
||||||
use MailPoet\Settings\UserFlagsController;
|
use MailPoet\Settings\UserFlagsController;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
@ -11,46 +12,37 @@ class UserFlagsControllerTest extends \MailPoetTest {
|
|||||||
/** @var UserFlagsController */
|
/** @var UserFlagsController */
|
||||||
private $user_flags;
|
private $user_flags;
|
||||||
|
|
||||||
|
/** @var UserFlagsRepository */
|
||||||
|
private $user_flags_repository;
|
||||||
|
|
||||||
/** @var int */
|
/** @var int */
|
||||||
private $current_user_id;
|
private $current_user_id;
|
||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
UserFlag::deleteMany();
|
$this->cleanup();
|
||||||
|
|
||||||
$current_user_id = 1;
|
$current_user_id = 1;
|
||||||
$other_user_id = 2;
|
$other_user_id = 2;
|
||||||
|
|
||||||
WPFunctions::set(Stub::make(new WPFunctions, [
|
WPFunctions::set(Stub::make(new WPFunctions, [
|
||||||
'getCurrentUserId' => $current_user_id,
|
'getCurrentUserId' => $current_user_id,
|
||||||
]));
|
]));
|
||||||
$this->current_user_id = $current_user_id;
|
$this->current_user_id = $current_user_id;
|
||||||
$this->user_flags = Stub::make(new UserFlagsController(), [
|
$this->user_flags_repository = $this->di_container->get(UserFlagsRepository::class);
|
||||||
|
$this->user_flags = Stub::make(UserFlagsController::class, [
|
||||||
|
'user_flags_repository' => $this->user_flags_repository,
|
||||||
'defaults' => [
|
'defaults' => [
|
||||||
'flag_1' => 'default_value_1',
|
'flag_1' => 'default_value_1',
|
||||||
'flag_2' => 'default_value_2',
|
'flag_2' => 'default_value_2',
|
||||||
'flag_3' => 'default_value_3',
|
'flag_3' => 'default_value_3',
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
UserFlag::createOrUpdate([
|
|
||||||
'user_id' => $this->current_user_id,
|
$this->createUserFlag($this->current_user_id, 'flag_1', 'value_1');
|
||||||
'name' => 'flag_1',
|
$this->createUserFlag($this->current_user_id, 'flag_3', 'value_3');
|
||||||
'value' => 'value_1',
|
$this->createUserFlag($other_user_id, 'flag_1', 'other_value_1');
|
||||||
]);
|
$this->createUserFlag($other_user_id, 'flag_2', 'other_value_2');
|
||||||
UserFlag::createOrUpdate([
|
|
||||||
'user_id' => $this->current_user_id,
|
|
||||||
'name' => 'flag_3',
|
|
||||||
'value' => 'value_3',
|
|
||||||
]);
|
|
||||||
UserFlag::createOrUpdate([
|
|
||||||
'user_id' => $other_user_id,
|
|
||||||
'name' => 'flag_1',
|
|
||||||
'value' => 'other_value_1',
|
|
||||||
]);
|
|
||||||
UserFlag::createOrUpdate([
|
|
||||||
'user_id' => $other_user_id,
|
|
||||||
'name' => 'flag_2',
|
|
||||||
'value' => 'other_value_2',
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItGetsFlagsOfCurrentUser() {
|
function testItGetsFlagsOfCurrentUser() {
|
||||||
@ -64,17 +56,9 @@ class UserFlagsControllerTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItLoadsDataOnlyOnceWhenNeeded() {
|
function testItLoadsDataOnlyOnceWhenNeeded() {
|
||||||
UserFlag::createOrUpdate([
|
$this->updateUserFlag($this->current_user_id, 'flag_1', 'new_value_1');
|
||||||
'user_id' => $this->current_user_id,
|
|
||||||
'name' => 'flag_1',
|
|
||||||
'value' => 'new_value_1',
|
|
||||||
]);
|
|
||||||
expect($this->user_flags->get('flag_1'))->equals('new_value_1');
|
expect($this->user_flags->get('flag_1'))->equals('new_value_1');
|
||||||
UserFlag::createOrUpdate([
|
$this->updateUserFlag($this->current_user_id, 'flag_1', 'newer_value_1');
|
||||||
'user_id' => $this->current_user_id,
|
|
||||||
'name' => 'flag_1',
|
|
||||||
'value' => 'newer_value_1',
|
|
||||||
]);
|
|
||||||
expect($this->user_flags->get('flag_1'))->equals('new_value_1');
|
expect($this->user_flags->get('flag_1'))->equals('new_value_1');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,23 +66,55 @@ class UserFlagsControllerTest extends \MailPoetTest {
|
|||||||
expect($this->user_flags->get('flag_1'))->equals('value_1');
|
expect($this->user_flags->get('flag_1'))->equals('value_1');
|
||||||
$this->user_flags->set('flag_1', 'updated_value');
|
$this->user_flags->set('flag_1', 'updated_value');
|
||||||
expect($this->user_flags->get('flag_1'))->equals('updated_value');
|
expect($this->user_flags->get('flag_1'))->equals('updated_value');
|
||||||
$flag = UserFlag::where('user_id', $this->current_user_id)
|
$flag = $this->user_flags_repository->findOneBy([
|
||||||
->where('name', 'flag_1')
|
'user_id' => $this->current_user_id,
|
||||||
->findOne();
|
'name' => 'flag_1',
|
||||||
expect($flag->value)->equals('updated_value');
|
]);
|
||||||
|
expect($flag->getValue())->equals('updated_value');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDeletesAFlag() {
|
function testItDeletesAFlag() {
|
||||||
expect($this->user_flags->get('flag_1'))->equals('value_1');
|
expect($this->user_flags->get('flag_1'))->equals('value_1');
|
||||||
$this->user_flags->delete('flag_1');
|
$this->user_flags->delete('flag_1');
|
||||||
expect($this->user_flags->get('flag_1'))->equals('default_value_1');
|
expect($this->user_flags->get('flag_1'))->equals('default_value_1');
|
||||||
$flag = UserFlag::where('user_id', $this->current_user_id)
|
$flag = $this->user_flags_repository->findOneBy([
|
||||||
->where('name', 'flag_1')
|
'user_id' => $this->current_user_id,
|
||||||
->findOne();
|
'name' => 'flag_1',
|
||||||
expect($flag)->equals(false);
|
]);
|
||||||
|
expect($flag)->null();
|
||||||
}
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
|
$this->cleanup();
|
||||||
WPFunctions::set(new WPFunctions);
|
WPFunctions::set(new WPFunctions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function createUserFlag($user_id, $name, $value) {
|
||||||
|
$flag = new UserFlag();
|
||||||
|
$flag->setUserId($user_id);
|
||||||
|
$flag->setName($name);
|
||||||
|
$flag->setValue($value);
|
||||||
|
$this->user_flags_repository->persist($flag);
|
||||||
|
$this->user_flags_repository->flush();
|
||||||
|
return $flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function updateUserFlag($user_id, $name, $value) {
|
||||||
|
$flag = $this->user_flags_repository->findOneBy([
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'name' => $name,
|
||||||
|
]);
|
||||||
|
if (!$flag) {
|
||||||
|
throw new \Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
$flag->setValue($value);
|
||||||
|
$this->user_flags_repository->flush();
|
||||||
|
return $flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function cleanup() {
|
||||||
|
$table_name = $this->entity_manager->getClassMetadata(UserFlag::class)->getTableName();
|
||||||
|
$this->connection->executeUpdate("TRUNCATE $table_name");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user