Add unit test for ProjectMetricJob

This commit is contained in:
Frederic Guillot 2016-07-23 20:30:06 -04:00
parent 8e6e335c9d
commit adb5023cfc
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
4 changed files with 55 additions and 5 deletions

View File

@ -157,6 +157,7 @@ use Pimple\Container;
* @property \Kanboard\Job\TaskLinkEventJob $taskLinkEventJob
* @property \Kanboard\Job\ProjectFileEventJob $projectFileEventJob
* @property \Kanboard\Job\NotificationJob $notificationJob
* @property \Kanboard\Job\ProjectMetricJob $projectMetricJob
* @property \Psr\Log\LoggerInterface $logger
* @property \PicoDb\Database $db
* @property \Symfony\Component\EventDispatcher\EventDispatcher $dispatcher

View File

@ -5,6 +5,7 @@ namespace Kanboard\ServiceProvider;
use Kanboard\Job\CommentEventJob;
use Kanboard\Job\NotificationJob;
use Kanboard\Job\ProjectFileEventJob;
use Kanboard\Job\ProjectMetricJob;
use Kanboard\Job\SubtaskEventJob;
use Kanboard\Job\TaskEventJob;
use Kanboard\Job\TaskFileEventJob;
@ -57,6 +58,10 @@ class JobProvider implements ServiceProviderInterface
return new NotificationJob($c);
});
$container['projectMetricJob'] = $container->factory(function ($c) {
return new ProjectMetricJob($c);
});
return $container;
}
}

View File

@ -3,7 +3,6 @@
namespace Kanboard\Subscriber;
use Kanboard\Event\TaskEvent;
use Kanboard\Job\ProjectMetricJob;
use Kanboard\Model\TaskModel;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@ -22,9 +21,7 @@ class ProjectDailySummarySubscriber extends BaseSubscriber implements EventSubsc
public function execute(TaskEvent $event)
{
if (isset($event['project_id'])) {
$this->logger->debug('Subscriber executed: '.__METHOD__);
$this->queueManager->push(ProjectMetricJob::getInstance($this->container)->withParams($event['project_id']));
}
$this->logger->debug('Subscriber executed: '.__METHOD__);
$this->queueManager->push($this->projectMetricJob->withParams($event['task']['project_id']));
}
}

View File

@ -0,0 +1,47 @@
<?php
use Kanboard\Job\ProjectMetricJob;
require_once __DIR__.'/../Base.php';
class ProjectMetricJobTest extends Base
{
public function testJobParams()
{
$projectMetricJob = new ProjectMetricJob($this->container);
$projectMetricJob->withParams(123);
$this->assertSame(
array(123),
$projectMetricJob->getJobParams()
);
}
public function testJob()
{
$this->container['projectDailyColumnStatsModel'] = $this
->getMockBuilder('\Kanboard\Model\ProjectDailyColumnStatsModel')
->setConstructorArgs(array($this->container))
->setMethods(array('updateTotals'))
->getMock();
$this->container['projectDailyStatsModel'] = $this
->getMockBuilder('\Kanboard\Model\ProjectDailyStatsModel')
->setConstructorArgs(array($this->container))
->setMethods(array('updateTotals'))
->getMock();
$this->container['projectDailyColumnStatsModel']
->expects($this->once())
->method('updateTotals')
->with(42, date('Y-m-d'));
$this->container['projectDailyStatsModel']
->expects($this->once())
->method('updateTotals')
->with(42, date('Y-m-d'));
$job = new ProjectMetricJob($this->container);
$job->execute(42);
}
}