Use CustomFieldRepository in integration APITest

[MAILPOET-3032]
This commit is contained in:
Jan Lysý
2021-04-02 09:15:01 +02:00
committed by Veljko V
parent e1994e64b8
commit 66a0834a37

View File

@@ -6,7 +6,8 @@ use Codeception\Stub;
use Codeception\Stub\Expected; use Codeception\Stub\Expected;
use Codeception\Util\Fixtures; use Codeception\Util\Fixtures;
use MailPoet\CustomFields\ApiDataSanitizer; use MailPoet\CustomFields\ApiDataSanitizer;
use MailPoet\Models\CustomField; use MailPoet\CustomFields\CustomFieldsRepository;
use MailPoet\Entities\CustomFieldEntity;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
use MailPoet\Models\Segment; use MailPoet\Models\Segment;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
@@ -22,11 +23,21 @@ use MailPoetVendor\Idiorm\ORM;
class APITest extends \MailPoetTest { class APITest extends \MailPoetTest {
const VERSION = 'v1'; const VERSION = 'v1';
/** @var CustomFieldsRepository */
private $customFieldRepository;
public function _before(): void {
parent::_before();
$settings = SettingsController::getInstance();
$settings->set('signup_confirmation.enabled', true);
$this->customFieldRepository = $this->diContainer->get(CustomFieldsRepository::class);
}
private function getApi() { private function getApi() {
return new \MailPoet\API\MP\v1\API( return new \MailPoet\API\MP\v1\API(
Stub::makeEmpty(NewSubscriberNotificationMailer::class, ['send']), Stub::makeEmpty(NewSubscriberNotificationMailer::class, ['send']),
Stub::makeEmpty(ConfirmationEmailMailer::class, ['sendConfirmationEmail']), Stub::makeEmpty(ConfirmationEmailMailer::class, ['sendConfirmationEmail']),
Stub::makeEmptyExcept(RequiredCustomFieldValidator::class, 'validate'), $this->diContainer->get(RequiredCustomFieldValidator::class),
Stub::makeEmpty(ApiDataSanitizer::class), Stub::makeEmpty(ApiDataSanitizer::class),
Stub::makeEmpty(WelcomeScheduler::class), Stub::makeEmpty(WelcomeScheduler::class),
SettingsController::getInstance() SettingsController::getInstance()
@@ -63,19 +74,19 @@ class APITest extends \MailPoetTest {
} }
public function testItReturnsCustomFields() { public function testItReturnsCustomFields() {
$customField1 = CustomField::createOrUpdate([ $customField1 = $this->customFieldRepository->createOrUpdate([
'name' => 'text custom field', 'name' => 'text custom field',
'type' => CustomField::TYPE_TEXT, 'type' => CustomFieldEntity::TYPE_TEXT,
'params' => ['required' => '1', 'date_type' => 'year_month_day'], 'params' => ['required' => '1', 'date_type' => 'year_month_day'],
]); ]);
$customField2 = CustomField::createOrUpdate([ $customField2 = $this->customFieldRepository->createOrUpdate([
'name' => 'checkbox custom field', 'name' => 'checkbox custom field',
'type' => CustomField::TYPE_CHECKBOX, 'type' => CustomFieldEntity::TYPE_CHECKBOX,
'params' => ['required' => ''], 'params' => ['required' => ''],
]); ]);
$response = $this->getApi()->getSubscriberFields(); $response = $this->getApi()->getSubscriberFields();
expect($response)->contains([ expect($response)->contains([
'id' => 'cf_' . $customField1->id, 'id' => 'cf_' . $customField1->getId(),
'name' => 'text custom field', 'name' => 'text custom field',
'type' => 'text', 'type' => 'text',
'params' => [ 'params' => [
@@ -85,7 +96,7 @@ class APITest extends \MailPoetTest {
], ],
]); ]);
expect($response)->contains([ expect($response)->contains([
'id' => 'cf_' . $customField2->id, 'id' => 'cf_' . $customField2->getId(),
'name' => 'checkbox custom field', 'name' => 'checkbox custom field',
'type' => 'checkbox', 'type' => 'checkbox',
'params' => [ 'params' => [
@@ -440,21 +451,21 @@ class APITest extends \MailPoetTest {
} }
public function testItAddsSubscriber() { public function testItAddsSubscriber() {
$customField = CustomField::create(); $customField = $this->customFieldRepository->createOrUpdate([
$customField->name = 'test custom field'; 'name' => 'test custom field',
$customField->type = CustomField::TYPE_TEXT; 'type' => CustomFieldEntity::TYPE_TEXT,
$customField->save(); ]);
$subscriber = [ $subscriber = [
'email' => 'test@example.com', 'email' => 'test@example.com',
'cf_' . $customField->id => 'test', 'cf_' . $customField->getId() => 'test',
]; ];
$_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$result = $this->getApi()->addSubscriber($subscriber); $result = $this->getApi()->addSubscriber($subscriber);
expect($result['id'])->greaterThan(0); expect($result['id'])->greaterThan(0);
expect($result['email'])->equals($subscriber['email']); expect($result['email'])->equals($subscriber['email']);
expect($result['cf_' . $customField->id])->equals('test'); expect($result['cf_' . $customField->getId()])->equals('test');
expect($result['source'])->equals('api'); expect($result['source'])->equals('api');
expect($result['subscribed_ip'])->equals($_SERVER['REMOTE_ADDR']); expect($result['subscribed_ip'])->equals($_SERVER['REMOTE_ADDR']);
expect(strlen($result['unsubscribe_token']))->equals(15); expect(strlen($result['unsubscribe_token']))->equals(15);
@@ -471,9 +482,9 @@ class APITest extends \MailPoetTest {
} }
public function testItChecksForMandatoryCustomFields() { public function testItChecksForMandatoryCustomFields() {
CustomField::createOrUpdate([ $this->customFieldRepository->createOrUpdate([
'name' => 'custom field', 'name' => 'custom field',
'type' => 'text', 'type' => CustomFieldEntity::TYPE_TEXT,
'params' => ['required' => '1'], 'params' => ['required' => '1'],
]); ]);
@@ -548,7 +559,7 @@ class APITest extends \MailPoetTest {
$API = new \MailPoet\API\MP\v1\API( $API = new \MailPoet\API\MP\v1\API(
Stub::makeEmpty(NewSubscriberNotificationMailer::class, ['send']), Stub::makeEmpty(NewSubscriberNotificationMailer::class, ['send']),
Stub::makeEmpty(ConfirmationEmailMailer::class, ['sendConfirmationEmailOnce']), Stub::makeEmpty(ConfirmationEmailMailer::class, ['sendConfirmationEmailOnce']),
Stub::makeEmptyExcept(RequiredCustomFieldValidator::class, 'validate'), $this->diContainer->get(RequiredCustomFieldValidator::class),
Stub::makeEmpty(ApiDataSanitizer::class), Stub::makeEmpty(ApiDataSanitizer::class),
$welcomeScheduler, $welcomeScheduler,
Stub::makeEmpty(SettingsController::class) Stub::makeEmpty(SettingsController::class)
@@ -863,14 +874,9 @@ class APITest extends \MailPoetTest {
} }
} }
public function _before() {
$settings = SettingsController::getInstance();
$settings->set('signup_confirmation.enabled', true);
}
public function _after() { public function _after() {
ORM::raw_execute('TRUNCATE ' . Subscriber::$_table); ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
ORM::raw_execute('TRUNCATE ' . CustomField::$_table); $this->truncateEntity(CustomFieldEntity::class);
ORM::raw_execute('TRUNCATE ' . Segment::$_table); ORM::raw_execute('TRUNCATE ' . Segment::$_table);
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table); ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
} }