Let the statisticsForms model return the total signups instead of the form model
- added unit test for getTotalSignups() method
This commit is contained in:
@ -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.'%');
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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'])
|
||||
|
@ -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();
|
||||
}
|
||||
|
Reference in New Issue
Block a user