Use CustomFieldRepository in integration APITest
[MAILPOET-3032]
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user