Let the statisticsForms model return the total signups instead of the form model

- added unit test for getTotalSignups() method
This commit is contained in:
Jonathan Labreuille
2016-07-19 17:38:45 +02:00
parent 515515ba9f
commit 362ee49ce4
4 changed files with 22 additions and 8 deletions

View File

@ -39,11 +39,6 @@ class Form extends Model {
return parent::save();
}
function withSignups() {
$this->signups = StatisticsForms::where('form_id', $this->id)->count();
return $this;
}
static function search($orm, $search = '') {
return $orm->whereLike('name', '%'.$search.'%');
}

View File

@ -6,6 +6,10 @@ if(!defined('ABSPATH')) exit;
class StatisticsForms extends Model {
public static $_table = MP_STATISTICS_FORMS_TABLE;
public static function getTotalSignups($form_id = false) {
return self::where('form_id', $form_id)->count();
}
public static function record($form_id, $subscriber_id) {
if($form_id > 0 && $subscriber_id > 0) {
// check if we already have a record for today

View File

@ -1,6 +1,7 @@
<?php
namespace MailPoet\Router;
use \MailPoet\Models\Form;
use \MailPoet\Models\StatisticsForms;
use \MailPoet\Form\Renderer as FormRenderer;
use \MailPoet\Listing;
use \MailPoet\Form\Util;
@ -29,9 +30,9 @@ class Forms {
// fetch segments relations for each returned item
foreach($listing_data['items'] as $key => $form) {
$form = $form
->withSignups()
->asArray();
$form = $form->asArray();
$form['signups'] = StatisticsForms::getTotalSignups($form['id']);
$form['segments'] = (
!empty($form['settings']['segments'])

View File

@ -36,6 +36,20 @@ class StatisticsFormsTest extends MailPoetTest {
expect($record)->false();
}
function testItCanReturnTheTotalSignupsOfAForm() {
// simulate 2 signups for form #1
StatisticsForms::record($form_id = 1, $subscriber_id = 2);
StatisticsForms::record($form_id = 1, $subscriber_id = 1);
// simulate 1 signup for form #2
StatisticsForms::record($form_id = 2, $subscriber_id = 2);
$form_1_signups = StatisticsForms::getTotalSignups($form_id = 1);
expect($form_1_signups)->equals(2);
$form_2_signups = StatisticsForms::getTotalSignups($form_id = 2);
expect($form_2_signups)->equals(1);
}
function _after() {
StatisticsForms::deleteMany();
}