Skip to content

Commit

Permalink
Merge branch 'master' of github.com:cross-solution/YAWIK
Browse files Browse the repository at this point in the history
  • Loading branch information
cbleek committed Jul 9, 2020
2 parents 84aa147 + 8113279 commit 4aef6ee
Show file tree
Hide file tree
Showing 4 changed files with 182 additions and 14 deletions.
10 changes: 7 additions & 3 deletions module/Core/src/Form/View/Helper/FormDatePicker.php
Expand Up @@ -21,6 +21,8 @@
*/
class FormDatePicker extends FormText
{
const DEFAULT_DATE_FORMAT = 'yyyy-mm-dd';

/**
* Language of the datepicker
*
Expand All @@ -44,16 +46,18 @@ public function render(ElementInterface $element = null)
$basePath = $view->plugin('basePath');
$params = $view->plugin('params'); /* @var \Core\View\Helper\Params $params */
$lang = $params('lang');
$dataDateFormat = $element->getAttribute('data-date-format') ?? self::DEFAULT_DATE_FORMAT;

//$headScript->appendFile($basePath('/assets/bootstrap-datepicker/js/bootstrap-datepicker.min.js'));
//if (in_array($this->language, ['de'])) {
// $headScript->appendFile($basePath('assets/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js'));
//}

$element->setAttributes([
'data-date-language' => $lang,
'data-provide' => 'datepicker',
'data-date-format' => 'yyyy-mm-dd']);
'data-date-language' => $lang,
'data-provide' => 'datepicker',
'data-date-format' => $dataDateFormat
]);
$input = parent::render($element);

/*
Expand Down
66 changes: 66 additions & 0 deletions module/Core/test/CoreTest/Form/View/Helper/FormDatePickerTest.php
@@ -0,0 +1,66 @@
<?php
namespace CoreTest\Form\View\Helper;

use Core\Form\View\Helper\FormDatePicker;
use PHPUnit\Framework\TestCase;
use Core\Form\View\Helper\FormDatePicker as DatePickerHelper;
use Core\Form\Element\DatePicker as DatePickerElement;
use Laminas\View\Renderer\PhpRenderer as View;
use Laminas\I18n\Translator\TranslatorInterface as Translator;

/**
* @coversDefaultClass Core\Form\View\Helper\FormDatePicker
*/
class FormDatePickerTest extends TestCase
{

/**
* @var DatePickerHelper
*/
protected $datePickerHelper;

/**
* @see PHPUnit\Framework\TestCase::setUp()
*/
protected function setUp(): void
{
$view = new View();

$paramsPluginMock = $this->getMockBuilder('\Core\View\Helper\Params')->disableOriginalConstructor()->getMock();
$pluginManager = $view->getHelperPluginManager();
$pluginManager->setService('params', $paramsPluginMock);
$view->setHelperPluginManager($pluginManager);

$translator = $this->getMockBuilder(Translator::class)
->getMock();
$translator->method('translate')
->willReturnArgument(0);

$this->datePickerHelper = new DatePickerHelper();
$this->datePickerHelper->setView($view);
$this->datePickerHelper->setTranslator($translator);
}

/**
* @covers ::render
*/
public function testRenderDateFormatAttribute()
{
$element = new DatePickerElement('elementName');

// test default date forma
$expectedResultString = $this->datePickerHelper->createAttributesString(['data-date-format' => FormDatePicker::DEFAULT_DATE_FORMAT]);
$result = $this->datePickerHelper->render($element);

$this->assertIsString($result);
$this->assertContains($expectedResultString, $result);

// test different date format
$element->setAttribute('data-date-format', 'dd/m/yyyy');
$expectedResultString = $this->datePickerHelper->createAttributesString(['data-date-format' => 'dd/m/yyyy']);
$result = $this->datePickerHelper->render($element);

$this->assertIsString($result);
$this->assertContains($expectedResultString, $result);
}
}
28 changes: 17 additions & 11 deletions module/Jobs/src/Controller/ConsoleController.php
Expand Up @@ -16,13 +16,14 @@
use Interop\Container\ContainerInterface;
use Jobs\Entity\StatusInterface;
use Jobs\Queue\FindJobsWithExternalImageJob;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Mvc\Console\Controller\AbstractConsoleController;
use Laminas\ProgressBar\ProgressBar;
use Core\Console\ProgressBar as CoreProgressBar;
use Laminas\ProgressBar\Adapter\Console as ConsoleAdapter;
use Laminas\Console\ColorInterface as ConsoleColor;
use Auth\Entity\UserInterface;

class ConsoleController extends AbstractActionController
class ConsoleController extends AbstractConsoleController
{
/**
* @var RepositoryService
Expand Down Expand Up @@ -50,6 +51,7 @@ public function expireJobsAction()
$days = (int) $this->params('days');
$limit = (string) $this->params('limit');
$info = $this->params('info');
$console = $this->console;

if (!$days) {
return 'Invalid value for --days. Must be integer.';
Expand Down Expand Up @@ -81,15 +83,15 @@ public function expireJobsAction()
$count = count($jobs);

if (0 === $count) {
return 'No jobs found.';
$console->writeLine('No jobs found.', ConsoleColor::GREEN);
}

if ($info) {
echo count($jobs) , ' Jobs';
$output = count($jobs).' Jobs';
if ($offset) {
echo ' starting from ' . $offset;
$output .= ' starting from ' . $offset;
}
echo PHP_EOL . PHP_EOL;
$console->writeLine($output, ConsoleColor::YELLOW);
$this->listExpiredJobs($jobs);
return;
}
Expand All @@ -98,7 +100,7 @@ public function expireJobsAction()
// $repositories->getEventManager()->removeEventListener('preUpdate', $listener);
// }
//
echo "$count jobs found, which have to expire ...\n";
$console->writeLine("$count jobs found, which have to expire ...\n", ConsoleColor::GREEN);

$progress = new ProgressBar(
new ConsoleAdapter(
Expand Down Expand Up @@ -188,6 +190,7 @@ public function setpermissionsAction()

private function listExpiredJobs($jobs)
{
$console = $this->console;
/* @var \Jobs\Entity\JobInterface $job */
foreach ($jobs as $job) {
$id = $job->getId();
Expand All @@ -197,16 +200,19 @@ private function listExpiredJobs($jobs)
} else {
$org = $job->getCompany();
}
printf(

$publishStart = is_null($job->getDatePublishStart()) ? 'N/A':$job->getDatePublishStart()->format('Y-m-d');
$publishEnd = is_null($job->getDatePublishEnd()) ? 'N/A':$job->getDatePublishEnd()->format('Y-m-d');
$output = sprintf(
'%s %s %s %-30s %-20s' . PHP_EOL,
$id,
$job->getDatePublishStart()->format('Y-m-d'),
$job->getDatePublishEnd()->format('Y-m-d'),
$publishStart,
$publishEnd,
substr($job->getTitle(), 0, 30),
substr($org, 0, 20)
);
$console->writeLine($output, ConsoleColor::GREEN);
}
return count($jobs) . ' Jobs.';
}

public function pushFetchExternalImagesJobAction()
Expand Down
92 changes: 92 additions & 0 deletions module/Jobs/test/JobsTest/Controller/ConsoleControllerTest.php
@@ -0,0 +1,92 @@
<?php
/*
* This file is part of the Omed Project.
*
* (c) Anthonius Munthi <me@itstoni.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace JobsTest\Controller;

use Core\Repository\RepositoryService;
use Jobs\Controller\ConsoleController;
use Jobs\Entity\Job;
use Jobs\Repository\Job as JobRepository;
use Laminas\Console\Adapter\AdapterInterface as ConsoleAdapter;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

class ConsoleControllerTest extends TestCase
{
/**
* @var ConsoleController
*/
private $target;

/**
* @var JobRepository
*/
private $jobRepo;

/**
* @var MockObject|ConsoleAdapter
*/
private $console;

protected function setUp()
{
$this->jobRepo = $this->createMock(JobRepository::class);

$repositories = $this->createMock(RepositoryService::class);
$repositories->expects($this->once())
->method('get')
->with('Jobs/Job')
->willReturn($this->jobRepo);

$this->console = $this->createMock(ConsoleAdapter::class);
$this->target = $this->getMockBuilder(ConsoleController::class)
->setConstructorArgs([$repositories])
->setMethods(['params'])
->getMock()
;
$this->target->setConsole($this->console);
}

/**
* @see https://github.com/cross-solution/YAWIK/issues/442
*/
public function testExpireJobsInfoAction()
{
$jobRepo = $this->jobRepo;
$console = $this->console;
$controller = $this->target;
$controller->method('params')
->willReturnMap([
['days',30],
['limit',10],
['info',true]
]);

$job = new Job();
$job->setId('some-id');
$job->setTitle('Some Title');
$job->setCompany('Some Company');

$jobRepo->expects($this->once())
->method('findBy')
->with($this->isType('array'),null,10,0)
->willReturn([$job]);

$console->expects($this->exactly(2))
->method('writeLine')
->withConsecutive(
['1 Jobs',4,null],
[$this->stringContains('some-id'),3,null]
);

$controller->expireJobsAction();

}
}

0 comments on commit 4aef6ee

Please sign in to comment.