- Updates statistics SQL query
- Fixes tests + expands coverage - Removes leftover console command
This commit is contained in:
committed by
Tautvidas Sipavičius
parent
18f35b5e91
commit
ae358ce13e
@ -16,7 +16,7 @@ define(
|
|||||||
MailPoet
|
MailPoet
|
||||||
) {
|
) {
|
||||||
var Link = Router.Link;
|
var Link = Router.Link;
|
||||||
console.log(MailPoet)
|
|
||||||
var columns = [
|
var columns = [
|
||||||
{
|
{
|
||||||
name: 'subject',
|
name: 'subject',
|
||||||
|
@ -68,7 +68,7 @@ class Newsletter extends Model {
|
|||||||
|
|
||||||
function getQueue() {
|
function getQueue() {
|
||||||
return SendingQueue::where('newsletter_id', $this->id)
|
return SendingQueue::where('newsletter_id', $this->id)
|
||||||
->whereNotEqual('status', 'scheduled')
|
->whereRaw(('`status` IS NULL OR `status` != "scheduled"'))
|
||||||
->orderByDesc('updated_at')
|
->orderByDesc('updated_at')
|
||||||
->findOne();
|
->findOne();
|
||||||
}
|
}
|
||||||
@ -103,17 +103,17 @@ class Newsletter extends Model {
|
|||||||
'count(DISTINCT(opens.id)) as opened, ' .
|
'count(DISTINCT(opens.id)) as opened, ' .
|
||||||
'count(DISTINCT(unsubscribes.id)) as unsubscribed '
|
'count(DISTINCT(unsubscribes.id)) as unsubscribed '
|
||||||
)
|
)
|
||||||
->join(
|
->leftOuterJoin(
|
||||||
MP_STATISTICS_CLICKS_TABLE,
|
MP_STATISTICS_CLICKS_TABLE,
|
||||||
'queues.id = clicks.queue_id',
|
'queues.id = clicks.queue_id',
|
||||||
'clicks'
|
'clicks'
|
||||||
)
|
)
|
||||||
->join(
|
->leftOuterJoin(
|
||||||
MP_STATISTICS_OPENS_TABLE,
|
MP_STATISTICS_OPENS_TABLE,
|
||||||
'queues.id = opens.queue_id',
|
'queues.id = opens.queue_id',
|
||||||
'opens'
|
'opens'
|
||||||
)
|
)
|
||||||
->join(
|
->leftOuterJoin(
|
||||||
MP_STATISTICS_UNSUBSCRIBES_TABLE,
|
MP_STATISTICS_UNSUBSCRIBES_TABLE,
|
||||||
'queues.id = unsubscribes.queue_id',
|
'queues.id = unsubscribes.queue_id',
|
||||||
'unsubscribes'
|
'unsubscribes'
|
||||||
@ -122,7 +122,6 @@ class Newsletter extends Model {
|
|||||||
->findOne();
|
->findOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static function search($orm, $search = '') {
|
static function search($orm, $search = '') {
|
||||||
return $orm->where_like('subject', '%' . $search . '%');
|
return $orm->where_like('subject', '%' . $search . '%');
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,11 @@ $models = array(
|
|||||||
'Setting',
|
'Setting',
|
||||||
'Subscriber',
|
'Subscriber',
|
||||||
'SubscriberCustomField',
|
'SubscriberCustomField',
|
||||||
'SubscriberSegment'
|
'SubscriberSegment',
|
||||||
|
'StatisticsOpens',
|
||||||
|
'StatisticsClicks',
|
||||||
|
'StatisticsNewsletters',
|
||||||
|
'StatisticsUnsubscribes'
|
||||||
);
|
);
|
||||||
$destroy = function ($model) {
|
$destroy = function ($model) {
|
||||||
$class = new \ReflectionClass('\MailPoet\Models\\' . $model);
|
$class = new \ReflectionClass('\MailPoet\Models\\' . $model);
|
||||||
|
@ -6,6 +6,7 @@ use MailPoet\Models\SendingQueue;
|
|||||||
use MailPoet\Models\NewsletterSegment;
|
use MailPoet\Models\NewsletterSegment;
|
||||||
use MailPoet\Models\NewsletterOptionField;
|
use MailPoet\Models\NewsletterOptionField;
|
||||||
use MailPoet\Models\NewsletterOption;
|
use MailPoet\Models\NewsletterOption;
|
||||||
|
use MailPoet\Models\StatisticsOpens;
|
||||||
|
|
||||||
class NewsletterTest extends MailPoetTest {
|
class NewsletterTest extends MailPoetTest {
|
||||||
function _before() {
|
function _before() {
|
||||||
@ -89,11 +90,9 @@ class NewsletterTest extends MailPoetTest {
|
|||||||
function testItCanBeQueued() {
|
function testItCanBeQueued() {
|
||||||
$queue = $this->newsletter->getQueue();
|
$queue = $this->newsletter->getQueue();
|
||||||
expect($queue)->false();
|
expect($queue)->false();
|
||||||
|
|
||||||
$sending_queue = SendingQueue::create();
|
$sending_queue = SendingQueue::create();
|
||||||
$sending_queue->newsletter_id = $this->newsletter->id;
|
$sending_queue->newsletter_id = $this->newsletter->id;
|
||||||
$sending_queue->save();
|
$sending_queue->save();
|
||||||
|
|
||||||
$queue = $this->newsletter->getQueue();
|
$queue = $this->newsletter->getQueue();
|
||||||
expect($queue->id() > 0)->true();
|
expect($queue->id() > 0)->true();
|
||||||
}
|
}
|
||||||
@ -107,6 +106,22 @@ class NewsletterTest extends MailPoetTest {
|
|||||||
expect($newsletter_segments[1]['name'])->equals('Segment 2');
|
expect($newsletter_segments[1]['name'])->equals('Segment 2');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItCanHaveStatistics() {
|
||||||
|
$newsletter = $this->newsletter;
|
||||||
|
$sending_queue = SendingQueue::create();
|
||||||
|
$sending_queue->newsletter_id = $this->newsletter->id;
|
||||||
|
$sending_queue->save();
|
||||||
|
$opens = StatisticsOpens::create();
|
||||||
|
$opens->newsletter_id = $this->newsletter->id;
|
||||||
|
$opens->queue_id = $sending_queue->id;
|
||||||
|
$opens->save();
|
||||||
|
$newsletter->queue = $newsletter->getQueue()->asArray();
|
||||||
|
$statistics = $newsletter->getStatistics();
|
||||||
|
expect($statistics->opened)->equals(1);
|
||||||
|
expect($statistics->clicked)->equals(0);
|
||||||
|
expect($statistics->unsubscribed)->equals(0);
|
||||||
|
}
|
||||||
|
|
||||||
function testItCanCreateOrUpdate() {
|
function testItCanCreateOrUpdate() {
|
||||||
$is_created = Newsletter::createOrUpdate(
|
$is_created = Newsletter::createOrUpdate(
|
||||||
array(
|
array(
|
||||||
@ -281,11 +296,11 @@ class NewsletterTest extends MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
NewsletterOption::deleteMany();
|
ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||||
NewsletterOptionField::deleteMany();
|
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||||
Newsletter::deleteMany();
|
ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||||
Segment::deleteMany();
|
ORM::raw_execute('TRUNCATE ' . Segment::$_table);
|
||||||
NewsletterSegment::deleteMany();
|
ORM::raw_execute('TRUNCATE ' . NewsletterSegment::$_table);
|
||||||
SendingQueue::deleteMany();
|
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user