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(); return parent::save();
} }
function withSignups() {
$this->signups = StatisticsForms::where('form_id', $this->id)->count();
return $this;
}
static function search($orm, $search = '') { static function search($orm, $search = '') {
return $orm->whereLike('name', '%'.$search.'%'); return $orm->whereLike('name', '%'.$search.'%');
} }

View File

@ -6,6 +6,10 @@ if(!defined('ABSPATH')) exit;
class StatisticsForms extends Model { class StatisticsForms extends Model {
public static $_table = MP_STATISTICS_FORMS_TABLE; 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) { public static function record($form_id, $subscriber_id) {
if($form_id > 0 && $subscriber_id > 0) { if($form_id > 0 && $subscriber_id > 0) {
// check if we already have a record for today // check if we already have a record for today

View File

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

View File

@ -36,6 +36,20 @@ class StatisticsFormsTest extends MailPoetTest {
expect($record)->false(); 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() { function _after() {
StatisticsForms::deleteMany(); StatisticsForms::deleteMany();
} }