- Updates statistics SQL query

- Fixes tests + expands coverage
- Removes leftover console command
This commit is contained in:
Vlad
2016-04-27 14:10:21 -04:00
committed by Tautvidas Sipavičius
parent 18f35b5e91
commit ae358ce13e
4 changed files with 33 additions and 15 deletions

View File

@ -16,7 +16,7 @@ define(
MailPoet
) {
var Link = Router.Link;
console.log(MailPoet)
var columns = [
{
name: 'subject',

View File

@ -68,7 +68,7 @@ class Newsletter extends Model {
function getQueue() {
return SendingQueue::where('newsletter_id', $this->id)
->whereNotEqual('status', 'scheduled')
->whereRaw(('`status` IS NULL OR `status` != "scheduled"'))
->orderByDesc('updated_at')
->findOne();
}
@ -103,17 +103,17 @@ class Newsletter extends Model {
'count(DISTINCT(opens.id)) as opened, ' .
'count(DISTINCT(unsubscribes.id)) as unsubscribed '
)
->join(
->leftOuterJoin(
MP_STATISTICS_CLICKS_TABLE,
'queues.id = clicks.queue_id',
'clicks'
)
->join(
->leftOuterJoin(
MP_STATISTICS_OPENS_TABLE,
'queues.id = opens.queue_id',
'opens'
)
->join(
->leftOuterJoin(
MP_STATISTICS_UNSUBSCRIBES_TABLE,
'queues.id = unsubscribes.queue_id',
'unsubscribes'
@ -122,7 +122,6 @@ class Newsletter extends Model {
->findOne();
}
static function search($orm, $search = '') {
return $orm->where_like('subject', '%' . $search . '%');
}

View File

@ -20,7 +20,11 @@ $models = array(
'Setting',
'Subscriber',
'SubscriberCustomField',
'SubscriberSegment'
'SubscriberSegment',
'StatisticsOpens',
'StatisticsClicks',
'StatisticsNewsletters',
'StatisticsUnsubscribes'
);
$destroy = function ($model) {
$class = new \ReflectionClass('\MailPoet\Models\\' . $model);

View File

@ -6,6 +6,7 @@ use MailPoet\Models\SendingQueue;
use MailPoet\Models\NewsletterSegment;
use MailPoet\Models\NewsletterOptionField;
use MailPoet\Models\NewsletterOption;
use MailPoet\Models\StatisticsOpens;
class NewsletterTest extends MailPoetTest {
function _before() {
@ -89,11 +90,9 @@ class NewsletterTest extends MailPoetTest {
function testItCanBeQueued() {
$queue = $this->newsletter->getQueue();
expect($queue)->false();
$sending_queue = SendingQueue::create();
$sending_queue->newsletter_id = $this->newsletter->id;
$sending_queue->save();
$queue = $this->newsletter->getQueue();
expect($queue->id() > 0)->true();
}
@ -107,6 +106,22 @@ class NewsletterTest extends MailPoetTest {
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() {
$is_created = Newsletter::createOrUpdate(
array(
@ -281,11 +296,11 @@ class NewsletterTest extends MailPoetTest {
}
function _after() {
NewsletterOption::deleteMany();
NewsletterOptionField::deleteMany();
Newsletter::deleteMany();
Segment::deleteMany();
NewsletterSegment::deleteMany();
SendingQueue::deleteMany();
ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
ORM::raw_execute('TRUNCATE ' . Segment::$_table);
ORM::raw_execute('TRUNCATE ' . NewsletterSegment::$_table);
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
}
}