Files
piratepoet/mailpoet/tests/integration/Models/CustomFieldTest.php
Rodrigo Primo 525495409c Replace expect()->notNull() with verify()->notNull()
codeception/verify 2.1 removed support for expect()->notNull() so we need
to replace it with verify()->notNull().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00

147 lines
4.5 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Test\Models;
use MailPoet\Models\CustomField;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberCustomField;
class CustomFieldTest extends \MailPoetTest {
public $data;
public $subscribers;
public $customField;
public function _before() {
parent::_before();
$this->data = [
'name' => 'City',
'type' => CustomField::TYPE_TEXT,
'params' => [
'label' => 'What is your city?',
],
];
$this->customField = CustomField::createOrUpdate($this->data);
$this->subscribers = [
[
'first_name' => 'John',
'last_name' => 'Mailer',
'email' => 'john@mailpoet.com',
],
[
'first_name' => 'Mike',
'last_name' => 'Smith',
'email' => 'mike@maipoet.com',
],
];
}
public function testItCanBeCreated() {
verify($this->customField->id() > 0)->true();
verify($this->customField->getErrors())->false();
}
public function testItCanBeUpdated() {
verify($this->customField->name)->equals($this->data['name']);
$updatedCustomField = CustomField::createOrUpdate([
'id' => $this->customField->id,
'name' => 'Country',
]);
verify($updatedCustomField->getErrors())->false();
verify($updatedCustomField->name)->equals('Country');
verify($updatedCustomField->id)->equals($this->customField->id);
}
public function testItHasAName() {
verify($this->customField->name)->equals($this->data['name']);
}
public function testItHasAType() {
verify($this->customField->type)->equals($this->data['type']);
}
public function testItHasSerializedParams() {
$params = unserialize($this->customField->params);
verify($params)->equals($this->data['params']);
}
public function testItCanDecodeParams() {
$customField = $this->customField->asArray();
verify($customField['params'])->equals($this->data['params']);
}
public function testItHasToBeValid() {
$invalidCustomField = CustomField::create();
$result = $invalidCustomField->save();
$errors = $result->getErrors();
verify(is_array($errors))->true();
verify($errors[0])->equals('Please specify a name.');
verify($errors[1])->equals('Please specify a type.');
}
public function testItHasACreatedAtOnCreation() {
$customField = CustomField::findOne($this->customField->id);
$this->assertInstanceOf(CustomField::class, $customField);
verify($customField->createdAt)->notNull();
}
public function testItHasAnUpdatedAtOnCreation() {
$customField = CustomField::findOne($this->customField->id);
$this->assertInstanceOf(CustomField::class, $customField);
verify($customField->updatedAt)->equals($customField->createdAt);
}
public function testItUpdatesTheUpdatedAtOnUpdate() {
$customField = CustomField::findOne($this->customField->id);
$this->assertInstanceOf(CustomField::class, $customField);
$createdAt = $customField->createdAt;
sleep(1);
$customField->name = 'Country';
$customField->save();
$updatedCustomField = CustomField::findOne($customField->id);
$this->assertInstanceOf(CustomField::class, $updatedCustomField);
verify($updatedCustomField->createdAt)->equals($createdAt);
$isTimeUpdated = (
$updatedCustomField->updatedAt > $updatedCustomField->createdAt
);
verify($isTimeUpdated)->true();
}
public function testItCanHaveManySubscribers() {
foreach ($this->subscribers as $subscriber) {
$subscriber = Subscriber::createOrUpdate($subscriber);
$association = SubscriberCustomField::create();
$association->subscriberId = $subscriber->id;
$association->customFieldId = $this->customField->id;
$association->value = '';
$association->save();
}
$customField = CustomField::findOne($this->customField->id);
$this->assertInstanceOf(CustomField::class, $customField);
$subscribers = $customField->subscribers()->findArray();
verify(count($subscribers))->equals(2);
}
public function testItCanHaveAValue() {
$subscriber = Subscriber::createOrUpdate($this->subscribers[0]);
$association = SubscriberCustomField::create();
$association->subscriberId = $subscriber->id;
$association->customFieldId = $this->customField->id;
$association->value = '12/12/2012';
$association->save();
$customField = CustomField::findOne($this->customField->id);
$this->assertInstanceOf(CustomField::class, $customField);
$subscriber = $customField->subscribers()->findOne();
verify($subscriber->value)->equals($association->value);
}
}