Files
piratepoet/tests/integration/Models/NewsletterOptionFieldTest.php
Jan Jakeš 8c848cfa28 Convert property names to camel case
[MAILPOET-1796]
2020-01-14 15:22:42 +01:00

129 lines
3.7 KiB
PHP

<?php
namespace MailPoet\Test\Models;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterOption;
use MailPoet\Models\NewsletterOptionField;
use MailPoetVendor\Idiorm\ORM;
class NewsletterOptionFieldTest extends \MailPoetTest {
public $data;
public $newsletterData;
public $optionField;
public function _before() {
parent::_before();
$this->data = [
'name' => 'event',
'newsletter_type' => 'welcome',
];
$option = NewsletterOptionField::create();
$option->hydrate($this->data);
$option->save();
$this->optionField = NewsletterOptionField::findOne($option->id);
$this->newsletterData = [
[
'subject' => 'Test newsletter 1',
'type' => 'standard',
'preheader' => '',
'body' => '{}',
],
[
'subject' => 'Test newsletter 2',
'type' => 'standard',
'preheader' => 'A newsletter',
'body' => '{}',
],
];
}
public function testItCanBeCreated() {
expect($this->optionField->id() > 0)->equals(true);
expect($this->optionField->getErrors())->false();
}
public function testItHasName() {
expect($this->optionField->name)->equals($this->data['name']);
}
public function testItHasNewsletterType() {
expect($this->optionField->newsletter_type)
->equals($this->data['newsletter_type']);
}
public function testItHasToBeValid() {
$invalidNewsletterOption = NewsletterOptionField::create();
$result = $invalidNewsletterOption->save();
$errors = $result->getErrors();
expect(is_array($errors))->true();
expect($errors[0])->equals('Please specify a name.');
expect($errors[1])->equals('Please specify a newsletter type.');
}
public function testItHasACreatedAtOnCreation() {
expect($this->optionField->created_at)->notNull();
}
public function testItHasAnUpdatedAtOnCreation() {
$optionField = NewsletterOptionField::findOne($this->optionField->id);
expect($optionField->updatedAt)
->equals($optionField->createdAt);
}
public function testItUpdatesTheUpdatedAtOnUpdate() {
$optionField = NewsletterOptionField::findOne($this->optionField->id);
$createdAt = $optionField->createdAt;
sleep(1);
$optionField->name = 'new name';
$optionField->save();
$updatedOptionField = NewsletterOptionField::findOne($optionField->id);
$isTimeUpdated = (
$updatedOptionField->updatedAt > $updatedOptionField->createdAt
);
expect($isTimeUpdated)->true();
}
public function testItCanHaveManyNewsletters() {
foreach ($this->newsletterData as $data) {
$newsletter = Newsletter::create();
$newsletter->hydrate($data);
$newsletter->save();
$association = NewsletterOption::create();
$association->newsletterId = $newsletter->id;
$association->optionFieldId = $this->optionField->id;
$association->save();
}
$optionField = NewsletterOptionField::findOne($this->optionField->id);
$newsletters = $optionField->newsletters()
->findArray();
expect(count($newsletters))->equals(2);
}
public function testItCanStoreOptionValue() {
$newsletter = Newsletter::create();
$newsletter->hydrate($this->newsletterData[0]);
$newsletter->save();
$association = NewsletterOption::create();
$association->newsletterId = $newsletter->id;
$association->optionFieldId = $this->optionField->id;
$association->value = 'list';
$association->save();
$optionField = NewsletterOptionField::findOne($this->optionField->id);
$newsletter = $optionField->newsletters()
->findOne();
expect($newsletter->value)->equals($association->value);
}
public function _after() {
NewsletterOption::deleteMany();
NewsletterOptionField::deleteMany();
Newsletter::deleteMany();
}
}