132 lines
4.0 KiB
PHP
132 lines
4.0 KiB
PHP
<?php
|
|
use MailPoet\Models\Subscriber;
|
|
|
|
class SubscriberCest {
|
|
|
|
function _before() {
|
|
$this->before_time = time();
|
|
$this->data = array(
|
|
'first_name' => 'John',
|
|
'last_name' => 'Mailer',
|
|
'email' => 'john@mailpoet.com'
|
|
);
|
|
|
|
$this->subscriber = Subscriber::create();
|
|
$this->subscriber->hydrate($this->data);
|
|
$this->subscriber->save();
|
|
}
|
|
|
|
function itCanBeCreated() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
expect($subscriber->id)->notNull();
|
|
}
|
|
|
|
function itHasAFirstName() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
expect($subscriber->first_name)->equals($this->data['first_name']);
|
|
}
|
|
|
|
function itHasALastName() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
expect($subscriber->last_name)->equals($this->data['last_name']);
|
|
}
|
|
|
|
function itHasAnEmail() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
expect($subscriber->email)->equals($this->data['email']);
|
|
}
|
|
|
|
function emailMustBeUnique() {
|
|
$conflict_subscriber = Subscriber::create();
|
|
$conflict_subscriber->hydrate($this->data);
|
|
$conflicted = false;
|
|
try {
|
|
$conflict_subscriber->save();
|
|
} catch (Exception $e) {
|
|
$conflicted = true;
|
|
}
|
|
expect($conflicted)->equals(true);
|
|
}
|
|
|
|
function emailShouldValidate() {
|
|
$conflict_subscriber = Subscriber::create();
|
|
$conflict_subscriber->validateField('email', '');
|
|
expect($conflict_subscriber->getValidationErrors()[0])->equals('email_is_blank');
|
|
|
|
$conflict_subscriber = Subscriber::create();
|
|
$conflict_subscriber->validateField('email', 'some @ email . com');
|
|
expect($conflict_subscriber->getValidationErrors()[0])->equals('email_is_invalid');
|
|
}
|
|
|
|
function firstNameShouldValidate() {
|
|
$conflict_subscriber = Subscriber::create();
|
|
$conflict_subscriber->validateField('first_name', '');
|
|
expect($conflict_subscriber->getValidationErrors()[0])->equals('first_name_is_blank');
|
|
|
|
$conflict_subscriber = Subscriber::create();
|
|
$conflict_subscriber->validateField('first_name', 'a');
|
|
expect($conflict_subscriber->getValidationErrors()[0])->equals('first_name_is_short');
|
|
}
|
|
|
|
|
|
function lastNameShouldValidate() {
|
|
$conflict_subscriber = Subscriber::create();
|
|
$conflict_subscriber->validateField('last_name', '');
|
|
expect($conflict_subscriber->getValidationErrors()[0])->equals('last_name_is_blank');
|
|
|
|
$conflict_subscriber = Subscriber::create();
|
|
$conflict_subscriber->validateField('last_name', 'a');
|
|
expect($conflict_subscriber->getValidationErrors()[0])->equals('last_name_is_short');
|
|
}
|
|
|
|
function itHasACreatedAtOnCreation() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
$time_difference = strtotime($subscriber->created_at) >= $this->before_time;
|
|
expect($time_difference)->equals(true);
|
|
}
|
|
|
|
function itHasAnUpdatedAtOnCreation() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
$time_difference = strtotime($subscriber->updated_at) >= $this->before_time;
|
|
expect($time_difference)->equals(true);
|
|
}
|
|
|
|
function itKeepsTheCreatedAtOnUpdate() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
|
|
$old_created_at = $subscriber->created_at;
|
|
|
|
$subscriber->first_name = 'New Name';
|
|
$subscriber->save();
|
|
|
|
expect($old_created_at)->equals($subscriber->created_at);
|
|
}
|
|
|
|
function itUpdatesTheUpdatedAtOnUpdate() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne();
|
|
|
|
$update_time = time();
|
|
$subscriber->first_name = 'New Name';
|
|
$subscriber->save();
|
|
|
|
$time_difference = strtotime($subscriber->updated_at) >= $update_time;
|
|
|
|
expect($time_difference)->equals(true);
|
|
}
|
|
|
|
function _after() {
|
|
$subscriber = Subscriber::where('email', $this->data['email'])
|
|
->findOne()
|
|
->delete();
|
|
}
|
|
|
|
}
|