Next major version 2 with PHP 8.1, Symfony 6, Tabler UI, 2FA ... (#2902)
This commit is contained in:
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Renderer;
|
||||
|
||||
use App\Widget\Renderer\CompoundChartRenderer;
|
||||
use App\Widget\Type\CompoundChart;
|
||||
use App\Widget\Type\CompoundRow;
|
||||
use App\Widget\Type\More;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Renderer\CompoundChartRenderer
|
||||
* @covers \App\Widget\Renderer\AbstractTwigRenderer
|
||||
*/
|
||||
class CompoundChartRendererTest extends TestCase
|
||||
{
|
||||
public function testSupports()
|
||||
{
|
||||
$twig = $this->createMock(Environment::class);
|
||||
$sut = new CompoundChartRenderer($twig);
|
||||
self::assertTrue($sut->supports(new CompoundChart()));
|
||||
self::assertFalse($sut->supports(new CompoundRow()));
|
||||
}
|
||||
|
||||
public function testRenderWithCounter()
|
||||
{
|
||||
$twig = $this->getMockBuilder(Environment::class)->disableOriginalConstructor()->onlyMethods(['render'])->getMock();
|
||||
$twig->expects($this->once())->method('render')->willReturnCallback(function ($name, $options) {
|
||||
return json_encode([$name, $options]);
|
||||
});
|
||||
|
||||
$sut = new CompoundChartRenderer($twig);
|
||||
$row = new CompoundChart();
|
||||
$row->setTitle('foo-bar');
|
||||
$row->addWidget(new More());
|
||||
|
||||
$result = $sut->render($row);
|
||||
$result = json_decode($result, true);
|
||||
self::assertEquals('widget/section-chart.html.twig', $result[0]);
|
||||
self::assertArrayHasKey('title', $result[1]);
|
||||
self::assertEquals('foo-bar', $result[1]['title']);
|
||||
self::assertArrayHasKey('widgets', $result[1]);
|
||||
self::assertIsArray($result[1]['widgets']);
|
||||
self::assertCount(1, $result[1]['widgets']);
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Renderer;
|
||||
|
||||
use App\Widget\Renderer\CompoundRowRenderer;
|
||||
use App\Widget\Type\CompoundChart;
|
||||
use App\Widget\Type\CompoundRow;
|
||||
use App\Widget\Type\More;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Renderer\CompoundRowRenderer
|
||||
* @covers \App\Widget\Renderer\AbstractTwigRenderer
|
||||
*/
|
||||
class CompoundRowRendererTest extends TestCase
|
||||
{
|
||||
public function testSupports()
|
||||
{
|
||||
$twig = $this->createMock(Environment::class);
|
||||
$sut = new CompoundRowRenderer($twig);
|
||||
self::assertTrue($sut->supports(new CompoundRow()));
|
||||
self::assertFalse($sut->supports(new CompoundChart()));
|
||||
}
|
||||
|
||||
public function testRenderWithCounter()
|
||||
{
|
||||
$twig = $this->getMockBuilder(Environment::class)->disableOriginalConstructor()->onlyMethods(['render'])->getMock();
|
||||
$twig->expects($this->once())->method('render')->willReturnCallback(function ($name, $options) {
|
||||
return json_encode([$name, $options]);
|
||||
});
|
||||
|
||||
$sut = new CompoundRowRenderer($twig);
|
||||
$row = new CompoundRow();
|
||||
$row->setTitle('foo-bar');
|
||||
$row->addWidget(new More());
|
||||
|
||||
$result = $sut->render($row);
|
||||
$result = json_decode($result, true);
|
||||
self::assertEquals('widget/section-simple.html.twig', $result[0]);
|
||||
self::assertArrayHasKey('title', $result[1]);
|
||||
self::assertEquals('foo-bar', $result[1]['title']);
|
||||
self::assertArrayHasKey('widgets', $result[1]);
|
||||
self::assertIsArray($result[1]['widgets']);
|
||||
self::assertCount(1, $result[1]['widgets']);
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Renderer;
|
||||
|
||||
use App\Widget\Renderer\SimpleWidgetRenderer;
|
||||
use App\Widget\Type\More;
|
||||
use App\Widget\Type\SimpleWidget;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Renderer\SimpleWidgetRenderer
|
||||
* @covers \App\Widget\Renderer\AbstractTwigRenderer
|
||||
*/
|
||||
class SimpleWidgetRendererTest extends TestCase
|
||||
{
|
||||
public function testSupports()
|
||||
{
|
||||
$twig = $this->createMock(Environment::class);
|
||||
$sut = new SimpleWidgetRenderer($twig);
|
||||
self::assertTrue($sut->supports(new SimpleWidget()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getSimpleWidgetsData
|
||||
*/
|
||||
public function testRenderWithCounter(SimpleWidget $widget, $template, $color)
|
||||
{
|
||||
$twig = $this->getMockBuilder(Environment::class)->disableOriginalConstructor()->onlyMethods(['render'])->getMock();
|
||||
$twig->expects($this->once())->method('render')->willReturnCallback(function ($name, $options) {
|
||||
return json_encode([$name, $options]);
|
||||
});
|
||||
|
||||
$sut = new SimpleWidgetRenderer($twig);
|
||||
|
||||
$data = uniqid(\get_class($widget));
|
||||
$widget->setData($data);
|
||||
$result = $sut->render($widget, ['color' => $color]);
|
||||
$result = json_decode($result, true);
|
||||
|
||||
self::assertEquals($template, $result[0]);
|
||||
self::assertArrayHasKey('data', $result[1]);
|
||||
self::assertEquals($data, $result[1]['data']);
|
||||
self::assertArrayHasKey('title', $result[1]);
|
||||
self::assertArrayHasKey('options', $result[1]);
|
||||
self::assertIsArray($result[1]['options']);
|
||||
self::assertArrayHasKey('color', $result[1]['options']);
|
||||
self::assertEquals($color, $result[1]['options']['color']);
|
||||
}
|
||||
|
||||
public function getSimpleWidgetsData()
|
||||
{
|
||||
return [
|
||||
[new SimpleWidget(), 'widget/widget-simplewidget.html.twig', 'yellow'],
|
||||
[new More(), 'widget/widget-more.html.twig', '#123456'],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\AbstractContainer;
|
||||
use App\Widget\Type\More;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\AbstractContainer
|
||||
*/
|
||||
abstract class AbstractContainerTest extends TestCase
|
||||
{
|
||||
abstract public function createSut(): AbstractContainer;
|
||||
|
||||
public function testDefaultValues()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertInstanceOf(AbstractContainer::class, $sut);
|
||||
|
||||
self::assertEquals('', $sut->getId());
|
||||
self::assertEquals('', $sut->getTitle());
|
||||
|
||||
self::assertEquals(0, $sut->getOrder());
|
||||
self::assertEquals([], $sut->getOptions());
|
||||
self::assertEquals([], $sut->getWidgets());
|
||||
self::assertEquals([], $sut->getData());
|
||||
}
|
||||
|
||||
public function testSetter()
|
||||
{
|
||||
$widget = (new More())->setTitle('bar')->setId('foo');
|
||||
|
||||
$sut = $this->createSut();
|
||||
$sut->setTitle('hello-world');
|
||||
$sut->setOrder(13);
|
||||
$sut->addWidget($widget);
|
||||
|
||||
self::assertEquals('hello-world', $sut->getTitle());
|
||||
self::assertEquals('hello-world', $sut->getId());
|
||||
|
||||
self::assertCount(1, $sut->getWidgets());
|
||||
self::assertCount(1, $sut->getData());
|
||||
self::assertEquals([$widget], $sut->getWidgets());
|
||||
self::assertEquals([$widget], $sut->getData());
|
||||
|
||||
self::assertEquals(13, $sut->getOrder());
|
||||
self::assertEquals('bar', $sut->getWidgets()[0]->getTitle());
|
||||
}
|
||||
|
||||
public function testSetOptionNotImplemented()
|
||||
{
|
||||
$this->expectException(\BadMethodCallException::class);
|
||||
|
||||
$sut = $this->createSut();
|
||||
$sut->setOption('dfsdf', []);
|
||||
}
|
||||
}
|
||||
@@ -9,21 +9,9 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\SimpleStatisticChart
|
||||
* @covers \App\Widget\Type\AbstractSimpleStatisticChart
|
||||
*/
|
||||
abstract class AbstractSimpleStatisticsWidgetTypeTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
public function testData()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut->setData(10);
|
||||
}
|
||||
}
|
||||
|
||||
46
tests/Widget/Type/AbstractWidgetTest.php
Normal file
46
tests/Widget/Type/AbstractWidgetTest.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\AbstractWidget
|
||||
*/
|
||||
abstract class AbstractWidgetTest extends TestCase
|
||||
{
|
||||
abstract public function createSut(): AbstractWidget;
|
||||
|
||||
abstract public function getDefaultOptions(): array;
|
||||
|
||||
public function testDefaultData()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(AbstractWidget::class, $sut);
|
||||
self::assertEquals($this->getDefaultOptions(), $sut->getOptions());
|
||||
}
|
||||
|
||||
public function testSetter()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
// options
|
||||
$sut->setOption('föööö', 'trääääää');
|
||||
self::assertEquals(array_merge($this->getDefaultOptions(), ['föööö' => 'trääääää']), $sut->getOptions());
|
||||
|
||||
$sut->setOption('blub', 'blab');
|
||||
$sut->setOption('dataType', 'money');
|
||||
$options = $sut->getOptions();
|
||||
self::assertEquals('blab', $options['blub']);
|
||||
self::assertEquals('money', $options['dataType']);
|
||||
self::assertEquals('trääääää', $options['föööö']);
|
||||
}
|
||||
}
|
||||
@@ -10,12 +10,11 @@
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\AbstractWidgetType
|
||||
*/
|
||||
abstract class AbstractWidgetTypeTest extends TestCase
|
||||
abstract class AbstractWidgetTypeTest extends AbstractWidgetTest
|
||||
{
|
||||
abstract public function createSut(): AbstractWidgetType;
|
||||
|
||||
@@ -32,7 +31,6 @@ abstract class AbstractWidgetTypeTest extends TestCase
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut);
|
||||
self::assertEquals($this->getDefaultOptions(), $sut->getOptions());
|
||||
$this->assertDefaultData($sut);
|
||||
self::assertEquals('bar', $sut->getOption('foo', 'bar'));
|
||||
}
|
||||
|
||||
public function testFluentInterface()
|
||||
@@ -49,8 +47,6 @@ abstract class AbstractWidgetTypeTest extends TestCase
|
||||
|
||||
// options
|
||||
$sut->setOption('föööö', 'trääääää');
|
||||
self::assertEquals('trääääää', $sut->getOption('föööö', 'tröööö'));
|
||||
self::assertEquals('trääääää', $sut->getOption('föööö', 'tröööö'));
|
||||
self::assertEquals(array_merge($this->getDefaultOptions(), ['föööö' => 'trääääää']), $sut->getOptions());
|
||||
|
||||
$sut->setOptions(['blub' => 'blab', 'dataType' => 'money']);
|
||||
@@ -59,18 +55,4 @@ abstract class AbstractWidgetTypeTest extends TestCase
|
||||
self::assertEquals('money', $options['dataType']);
|
||||
self::assertEquals('trääääää', $options['föööö']);
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setData(''));
|
||||
|
||||
$sut->setData('slkudfhalksjdhfkljsahdf');
|
||||
self::assertEquals('slkudfhalksjdhfkljsahdf', $sut->getData());
|
||||
|
||||
$data = new \stdClass();
|
||||
$sut->setData($data);
|
||||
self::assertSame($data, $sut->getData());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,49 +9,41 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Configuration\SystemConfiguration;
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
use App\Widget\Type\AbstractCounterYear;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\ActiveUsersYear;
|
||||
use App\Widget\Type\CounterYear;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\ActiveUsersYear
|
||||
* @covers \App\Widget\Type\CounterYear
|
||||
* @covers \App\Widget\Type\AbstractCounterYear
|
||||
*/
|
||||
class ActiveUsersYearTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
/**
|
||||
* @return CounterYear
|
||||
* @return AbstractCounterYear
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$configuration = SystemConfigurationFactory::createStub();
|
||||
|
||||
return new ActiveUsersYear($repository, $configuration);
|
||||
$sut = new ActiveUsersYear($repository, $configuration);
|
||||
$sut->setUser(new User());
|
||||
|
||||
return $sut;
|
||||
}
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'int',
|
||||
'icon' => 'user',
|
||||
'icon' => 'users',
|
||||
'color' => 'yellow',
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
@@ -11,9 +11,8 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\AmountMonth;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
@@ -21,9 +20,9 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
* @covers \App\Widget\Type\AmountMonth
|
||||
* @covers \App\Widget\Type\AbstractAmountPeriod
|
||||
*/
|
||||
class AmountMonthTest extends AbstractWidgetTypeTest
|
||||
class AmountMonthTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
@@ -31,7 +30,7 @@ class AmountMonthTest extends AbstractWidgetTypeTest
|
||||
/**
|
||||
* @return AbstractAmountPeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -42,27 +41,16 @@ class AmountMonthTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_MONTH,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('amountMonth', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('AmountMonth', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,8 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\AmountToday;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
@@ -21,9 +20,9 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
* @covers \App\Widget\Type\AmountToday
|
||||
* @covers \App\Widget\Type\AbstractAmountPeriod
|
||||
*/
|
||||
class AmountTodayTest extends AbstractWidgetTypeTest
|
||||
class AmountTodayTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
@@ -31,7 +30,7 @@ class AmountTodayTest extends AbstractWidgetTypeTest
|
||||
/**
|
||||
* @return AbstractAmountPeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -42,27 +41,16 @@ class AmountTodayTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_TODAY,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('amountToday', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('AmountToday', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,8 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\AmountTotal;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
@@ -21,9 +20,9 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
* @covers \App\Widget\Type\AmountTotal
|
||||
* @covers \App\Widget\Type\AbstractAmountPeriod
|
||||
*/
|
||||
class AmountTotalTest extends AbstractWidgetTypeTest
|
||||
class AmountTotalTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
@@ -31,7 +30,7 @@ class AmountTotalTest extends AbstractWidgetTypeTest
|
||||
/**
|
||||
* @return AbstractAmountPeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -42,27 +41,16 @@ class AmountTotalTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_TOTAL,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('amountTotal', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,8 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\AmountWeek;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
@@ -21,9 +20,9 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
* @covers \App\Widget\Type\AmountWeek
|
||||
* @covers \App\Widget\Type\AbstractAmountPeriod
|
||||
*/
|
||||
class AmountWeekTest extends AbstractWidgetTypeTest
|
||||
class AmountWeekTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
@@ -31,7 +30,7 @@ class AmountWeekTest extends AbstractWidgetTypeTest
|
||||
/**
|
||||
* @return AbstractAmountPeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -42,27 +41,16 @@ class AmountWeekTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_WEEK,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('amountWeek', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('AmountWeek', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,62 +9,55 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Configuration\SystemConfiguration;
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
use App\Widget\Type\AbstractCounterYear;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\AmountYear;
|
||||
use App\Widget\Type\CounterYear;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\AmountYear
|
||||
* @covers \App\Widget\Type\CounterYear
|
||||
* @covers \App\Widget\Type\AbstractCounterYear
|
||||
*/
|
||||
class AmountYearTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
self::assertEquals([], $sut->getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CounterYear
|
||||
* @return AbstractCounterYear
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$repository->method('getStatistic')->willReturn([]);
|
||||
$configuration = SystemConfigurationFactory::createStub();
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
|
||||
return new AmountYear($repository, $configuration, $dispatcher);
|
||||
$sut = new AmountYear($repository, $configuration, $dispatcher);
|
||||
$sut->setUser(new User());
|
||||
|
||||
return $sut;
|
||||
}
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_YEAR,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('amountYear', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('AmountYear', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\AbstractContainer;
|
||||
use App\Widget\Type\CompoundChart;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\CompoundChart
|
||||
* @covers \App\Widget\Type\AbstractContainer
|
||||
*/
|
||||
class CompoundChartTest extends AbstractContainerTest
|
||||
{
|
||||
public function createSut(): AbstractContainer
|
||||
{
|
||||
return new CompoundChart();
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\AbstractContainer;
|
||||
use App\Widget\Type\CompoundRow;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\CompoundRow
|
||||
* @covers \App\Widget\Type\AbstractContainer
|
||||
*/
|
||||
class CompoundRowTest extends AbstractContainerTest
|
||||
{
|
||||
public function createSut(): AbstractContainer
|
||||
{
|
||||
return new CompoundRow();
|
||||
}
|
||||
}
|
||||
@@ -13,20 +13,18 @@ use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\Counter;
|
||||
use App\Widget\Type\SimpleWidget;
|
||||
use DateTime;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\Counter
|
||||
* @covers \App\Widget\Type\SimpleStatisticChart
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
* @covers \App\Widget\Type\AbstractSimpleStatisticChart
|
||||
*/
|
||||
class CounterTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
{
|
||||
public function createSut(): AbstractWidgetType
|
||||
{
|
||||
$sut = new Counter($this->createMock(TimesheetRepository::class));
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
|
||||
|
||||
return $sut;
|
||||
}
|
||||
@@ -38,13 +36,12 @@ class CounterTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
|
||||
self::assertEquals($type, 'active');
|
||||
self::assertNull($begin);
|
||||
self::assertNull($end);
|
||||
self::assertNull($user);
|
||||
});
|
||||
$sut = new Counter($repository);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
|
||||
$sut->setUser($user);
|
||||
$sut->getData([]);
|
||||
|
||||
@@ -53,14 +50,13 @@ class CounterTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
|
||||
self::assertEquals($type, 'active');
|
||||
self::assertNull($begin);
|
||||
self::assertNull($end);
|
||||
self::assertNotNull($user);
|
||||
self::assertEquals('bar', $user->getAlias());
|
||||
});
|
||||
$sut = new Counter($repository);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
|
||||
$sut->setUser($user);
|
||||
$sut->setQueryWithUser(true);
|
||||
$sut->getData([]);
|
||||
@@ -68,13 +64,7 @@ class CounterTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return ['dataType' => 'int'];
|
||||
}
|
||||
|
||||
public function testExtendsSimpleWidget()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleWidget::class, $sut);
|
||||
return [];
|
||||
}
|
||||
|
||||
public function testTemplateName()
|
||||
|
||||
@@ -9,32 +9,28 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Configuration\SystemConfiguration;
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\Counter;
|
||||
use App\Widget\Type\CounterYear;
|
||||
use App\Widget\Type\SimpleWidget;
|
||||
use App\Widget\Type\DurationYear;
|
||||
use DateTime;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\CounterYear
|
||||
* @covers \App\Widget\Type\SimpleStatisticChart
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
* @covers \App\Widget\Type\DurationYear
|
||||
* @covers \App\Widget\Type\AbstractCounterYear
|
||||
* @covers \App\Widget\Type\AbstractSimpleStatisticChart
|
||||
*/
|
||||
class CounterYearTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
{
|
||||
public function createSut(?string $financialYear = null): AbstractWidgetType
|
||||
{
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$configuration = SystemConfigurationFactory::createStub(['company' => ['financial_year' => $financialYear]]);
|
||||
|
||||
if (null !== $financialYear) {
|
||||
$configuration->method('getFinancialYearStart')->willReturn($financialYear);
|
||||
}
|
||||
|
||||
$sut = new CounterYear($this->createMock(TimesheetRepository::class), $configuration);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
|
||||
$sut = new DurationYear($this->createMock(TimesheetRepository::class), $configuration);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
|
||||
$sut->setUser(new User());
|
||||
|
||||
return $sut;
|
||||
}
|
||||
@@ -46,13 +42,12 @@ class CounterYearTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
|
||||
self::assertEquals($type, 'active');
|
||||
self::assertNull($begin);
|
||||
self::assertNull($end);
|
||||
self::assertNull($user);
|
||||
});
|
||||
$sut = new Counter($repository);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
|
||||
$sut->setUser($user);
|
||||
$sut->getData([]);
|
||||
|
||||
@@ -61,14 +56,13 @@ class CounterYearTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
|
||||
self::assertEquals($type, 'active');
|
||||
self::assertNull($begin);
|
||||
self::assertNull($end);
|
||||
self::assertNotNull($user);
|
||||
self::assertEquals('bar', $user->getAlias());
|
||||
});
|
||||
$sut = new Counter($repository);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
|
||||
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
|
||||
$sut->setUser($user);
|
||||
$sut->setQueryWithUser(true);
|
||||
$sut->getData([]);
|
||||
@@ -76,26 +70,20 @@ class CounterYearTest extends AbstractSimpleStatisticsWidgetTypeTest
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return ['dataType' => 'int'];
|
||||
}
|
||||
|
||||
public function testExtendsSimpleWidget()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleWidget::class, $sut);
|
||||
return ['icon' => 'duration', 'color' => 'yellow'];
|
||||
}
|
||||
|
||||
public function testTemplateName()
|
||||
{
|
||||
/** @var Counter $sut */
|
||||
$sut = $this->createSut();
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('widget/widget-counter-duration.html.twig', $sut->getTemplateName());
|
||||
}
|
||||
|
||||
public function testTemplateNameWithFinancialYear()
|
||||
{
|
||||
/** @var Counter $sut */
|
||||
$sut = $this->createSut('2020-01-01');
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('widget/widget-counter-duration.html.twig', $sut->getTemplateName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,23 +13,21 @@ use App\Entity\Activity;
|
||||
use App\Entity\Project;
|
||||
use App\Entity\User;
|
||||
use App\Model\Statistic\Day;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\DataProvider\DailyWorkingTimeChartProvider;
|
||||
use App\Widget\Type\DailyWorkingTimeChart;
|
||||
use App\Widget\Type\SimpleWidget;
|
||||
use App\Widget\WidgetInterface;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\DailyWorkingTimeChart
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
* @covers \App\Widget\Type\AbstractWidgetType
|
||||
* @covers \App\Repository\TimesheetRepository
|
||||
*/
|
||||
class DailyWorkingTimeChartTest extends TestCase
|
||||
{
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): DailyWorkingTimeChart
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$repository = $this->createMock(DailyWorkingTimeChartProvider::class);
|
||||
|
||||
$sut = new DailyWorkingTimeChart($repository);
|
||||
$sut->setUser(new User());
|
||||
@@ -37,32 +35,16 @@ class DailyWorkingTimeChartTest extends TestCase
|
||||
return $sut;
|
||||
}
|
||||
|
||||
public function testExtendsSimpleWidget()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleWidget::class, $sut);
|
||||
}
|
||||
|
||||
public function testDefaultValues()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut);
|
||||
self::assertInstanceOf(WidgetInterface::class, $sut);
|
||||
self::assertEquals('DailyWorkingTimeChart', $sut->getId());
|
||||
self::assertEquals('stats.yourWorkingHours', $sut->getTitle());
|
||||
self::assertNull($sut->getOption('begin', 'xxx'));
|
||||
self::assertNull($sut->getOption('end', 'xxx'));
|
||||
self::assertEquals('', $sut->getOption('color', 'xxx'));
|
||||
self::assertInstanceOf(User::class, $sut->getOption('user', 'xxx'));
|
||||
self::assertEquals('bar', $sut->getOption('type', 'xxx'));
|
||||
}
|
||||
|
||||
public function testFluentInterface()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setOptions([]));
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setId(''));
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setTitle(''));
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setData(''));
|
||||
$options = $sut->getOptions();
|
||||
self::assertNull($options['begin']);
|
||||
self::assertNull($options['end']);
|
||||
self::assertEquals('', $options['color']);
|
||||
}
|
||||
|
||||
public function testSetter()
|
||||
@@ -71,22 +53,7 @@ class DailyWorkingTimeChartTest extends TestCase
|
||||
|
||||
// options
|
||||
$sut->setOption('föööö', 'trääääää');
|
||||
self::assertEquals('trääääää', $sut->getOption('föööö', 'tröööö'));
|
||||
|
||||
// check default values
|
||||
self::assertEquals('xxxxx', $sut->getOption('blub', 'xxxxx'));
|
||||
self::assertEquals('xxxxx', $sut->getOption('dataType', 'xxxxx'));
|
||||
|
||||
$sut->setOptions(['blub' => 'blab', 'dataType' => 'money']);
|
||||
// check option still exists
|
||||
self::assertEquals('trääääää', $sut->getOption('föööö', 'tröööö'));
|
||||
// check options are now existing
|
||||
self::assertEquals('blab', $sut->getOption('blub', 'xxxxx'));
|
||||
self::assertEquals('money', $sut->getOption('dataType', 'xxxxx'));
|
||||
|
||||
// id
|
||||
$sut->setId('cvbnmyx');
|
||||
self::assertEquals('cvbnmyx', $sut->getId());
|
||||
self::assertEquals('trääääää', $sut->getOptions()['föööö']);
|
||||
}
|
||||
|
||||
public function testGetOptions()
|
||||
@@ -95,7 +62,7 @@ class DailyWorkingTimeChartTest extends TestCase
|
||||
|
||||
$options = $sut->getOptions(['type' => 'xxx']);
|
||||
self::assertStringStartsWith('DailyWorkingTimeChart_', $options['id']);
|
||||
self::assertEquals('bar', $options['type']);
|
||||
self::assertEquals('xxx', $options['type']);
|
||||
}
|
||||
|
||||
public function testGetData()
|
||||
@@ -106,7 +73,7 @@ class DailyWorkingTimeChartTest extends TestCase
|
||||
$project = $this->createMock(Project::class);
|
||||
$project->method('getId')->willReturn(4711);
|
||||
|
||||
$repository = $this->getMockBuilder(TimesheetRepository::class)->disableOriginalConstructor()->onlyMethods(['getDailyData'])->getMock();
|
||||
$repository = $this->getMockBuilder(DailyWorkingTimeChartProvider::class)->disableOriginalConstructor()->onlyMethods(['getDailyData'])->getMock();
|
||||
$repository->expects($this->once())->method('getDailyData')->willReturnCallback(function ($begin, $end, $user) use ($activity, $project) {
|
||||
return [
|
||||
[
|
||||
@@ -129,7 +96,7 @@ class DailyWorkingTimeChartTest extends TestCase
|
||||
|
||||
$sut = new DailyWorkingTimeChart($repository);
|
||||
$sut->setUser(new User());
|
||||
$data = $sut->getData([]);
|
||||
$data = $sut->getData($sut->getOptions());
|
||||
self::assertCount(2, $data);
|
||||
self::assertArrayHasKey('activities', $data);
|
||||
self::assertArrayHasKey('data', $data);
|
||||
|
||||
@@ -9,54 +9,46 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Configuration\SystemConfiguration;
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
use App\Widget\Type\AbstractCounterYear;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\CounterYear;
|
||||
use App\Widget\Type\DurationYear;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\DurationYear
|
||||
* @covers \App\Widget\Type\CounterYear
|
||||
* @covers \App\Widget\Type\AbstractCounterYear
|
||||
*/
|
||||
class DurationYearTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
/**
|
||||
* @return CounterYear
|
||||
* @return AbstractCounterYear
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$configuration = SystemConfigurationFactory::createStub();
|
||||
|
||||
return new DurationYear($repository, $configuration);
|
||||
$sut = new DurationYear($repository, $configuration);
|
||||
$sut->setUser(new User());
|
||||
|
||||
return $sut;
|
||||
}
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'duration',
|
||||
'icon' => 'duration',
|
||||
'color' => 'yellow',
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('durationYear', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-duration.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('DurationYear', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,28 +11,20 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\More;
|
||||
use App\Widget\Type\SimpleWidget;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\More
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
*/
|
||||
class MoreTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): More
|
||||
{
|
||||
return new More();
|
||||
}
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return ['dataType' => 'int'];
|
||||
}
|
||||
|
||||
public function testExtendsSimpleWidget()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleWidget::class, $sut);
|
||||
return [];
|
||||
}
|
||||
|
||||
public function testTemplateName()
|
||||
@@ -40,4 +32,18 @@ class MoreTest extends AbstractWidgetTypeTest
|
||||
$sut = new More();
|
||||
self::assertEquals('widget/widget-more.html.twig', $sut->getTemplateName());
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setData(''));
|
||||
|
||||
$sut->setData('slkudfhalksjdhfkljsahdf');
|
||||
self::assertEquals('slkudfhalksjdhfkljsahdf', $sut->getData());
|
||||
|
||||
$data = new \stdClass();
|
||||
$sut->setData($data);
|
||||
self::assertSame($data, $sut->getData());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,19 +9,16 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Configuration\SystemConfiguration;
|
||||
use App\Entity\Activity;
|
||||
use App\Entity\Project;
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
use App\Widget\Type\PaginatedWorkingTimeChart;
|
||||
use App\Widget\Type\SimpleWidget;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\PaginatedWorkingTimeChart
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
* @covers \App\Widget\Type\AbstractWidgetType
|
||||
* @covers \App\Repository\TimesheetRepository
|
||||
*/
|
||||
@@ -30,10 +27,10 @@ class PaginatedWorkingTimeChartTest extends TestCase
|
||||
/**
|
||||
* @return PaginatedWorkingTimeChart
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): PaginatedWorkingTimeChart
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$configuration = SystemConfigurationFactory::createStub();
|
||||
|
||||
$sut = new PaginatedWorkingTimeChart($repository, $configuration);
|
||||
$sut->setUser(new User());
|
||||
@@ -41,32 +38,11 @@ class PaginatedWorkingTimeChartTest extends TestCase
|
||||
return $sut;
|
||||
}
|
||||
|
||||
public function testExtendsSimpleWidget()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleWidget::class, $sut);
|
||||
}
|
||||
|
||||
public function testDefaultValues()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut);
|
||||
self::assertEquals('PaginatedWorkingTimeChart', $sut->getId());
|
||||
self::assertEquals('stats.yourWorkingHours', $sut->getTitle());
|
||||
//self::assertNull($sut->getOption('begin', 'xxx'));
|
||||
// self::assertNull($sut->getOption('end', 'xxx'));
|
||||
// self::assertEquals('', $sut->getOption('color', 'xxx'));
|
||||
self::assertInstanceOf(User::class, $sut->getOption('user', 'xxx'));
|
||||
// self::assertEquals('bar', $sut->getOption('type', 'xxx'));
|
||||
}
|
||||
|
||||
public function testFluentInterface()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setOptions([]));
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setId(''));
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setTitle(''));
|
||||
self::assertInstanceOf(AbstractWidgetType::class, $sut->setData(''));
|
||||
}
|
||||
|
||||
public function testSetter()
|
||||
@@ -75,22 +51,7 @@ class PaginatedWorkingTimeChartTest extends TestCase
|
||||
|
||||
// options
|
||||
$sut->setOption('föööö', 'trääääää');
|
||||
self::assertEquals('trääääää', $sut->getOption('föööö', 'tröööö'));
|
||||
|
||||
// check default values
|
||||
self::assertEquals('xxxxx', $sut->getOption('blub', 'xxxxx'));
|
||||
self::assertEquals('xxxxx', $sut->getOption('dataType', 'xxxxx'));
|
||||
|
||||
$sut->setOptions(['blub' => 'blab', 'dataType' => 'money']);
|
||||
// check option still exists
|
||||
self::assertEquals('trääääää', $sut->getOption('föööö', 'tröööö'));
|
||||
// check options are now existing
|
||||
self::assertEquals('blab', $sut->getOption('blub', 'xxxxx'));
|
||||
self::assertEquals('money', $sut->getOption('dataType', 'xxxxx'));
|
||||
|
||||
// id
|
||||
$sut->setId('cvbnmyx');
|
||||
self::assertEquals('cvbnmyx', $sut->getId());
|
||||
self::assertEquals('trääääää', $sut->getOptions()['föööö']);
|
||||
}
|
||||
|
||||
public function testGetOptions()
|
||||
@@ -110,37 +71,17 @@ class PaginatedWorkingTimeChartTest extends TestCase
|
||||
$project->method('getId')->willReturn(4711);
|
||||
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$repository->expects($this->once())->method('getDailyStats')->willReturnCallback(function ($user, $begin, $end) use ($activity, $project) {
|
||||
return [
|
||||
[
|
||||
'year' => $begin->format('Y'),
|
||||
'month' => $begin->format('n'),
|
||||
'day' => $begin->format('j'),
|
||||
'rate' => 13.75,
|
||||
'duration' => 1234,
|
||||
'billable' => 1234,
|
||||
'details' => [
|
||||
[
|
||||
'activity' => $activity,
|
||||
'project' => $project,
|
||||
'billable' => 1234,
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
});
|
||||
|
||||
$expectedKeys = [
|
||||
'begin', 'end', 'stats', 'thisMonth', 'lastWeekInYear', 'lastWeekInLastYear', 'day', 'week', 'month', 'year', 'financial', 'financialBegin'
|
||||
'begin', 'end', 'thisMonth', 'lastWeekInYear', 'lastWeekInLastYear', 'day', 'week', 'month', 'year', 'financial', 'financialBegin'
|
||||
];
|
||||
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$configuration->expects($this->once())->method('getFinancialYearStart')->willReturn(null);
|
||||
$configuration = SystemConfigurationFactory::createStub(['company' => ['financial_year' => null]]);
|
||||
|
||||
$sut = new PaginatedWorkingTimeChart($repository, $configuration);
|
||||
|
||||
$sut->setUser(new User());
|
||||
$data = $sut->getData([]);
|
||||
$data = $sut->getData($sut->getOptions());
|
||||
|
||||
self::assertCount(\count($expectedKeys), $data);
|
||||
foreach ($expectedKeys as $key) {
|
||||
@@ -158,37 +99,17 @@ class PaginatedWorkingTimeChartTest extends TestCase
|
||||
$project->method('getId')->willReturn(4711);
|
||||
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$repository->expects($this->once())->method('getDailyStats')->willReturnCallback(function ($user, $begin, $end) use ($activity, $project) {
|
||||
return [
|
||||
[
|
||||
'year' => $begin->format('Y'),
|
||||
'month' => $begin->format('n'),
|
||||
'day' => $begin->format('j'),
|
||||
'rate' => 13.75,
|
||||
'duration' => 1234,
|
||||
'billable' => 1234,
|
||||
'details' => [
|
||||
[
|
||||
'activity' => $activity,
|
||||
'project' => $project,
|
||||
'billable' => 1234,
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
});
|
||||
|
||||
$expectedKeys = [
|
||||
'begin', 'end', 'stats', 'thisMonth', 'lastWeekInYear', 'lastWeekInLastYear', 'day', 'week', 'month', 'year', 'financial', 'financialBegin'
|
||||
'begin', 'end', 'thisMonth', 'lastWeekInYear', 'lastWeekInLastYear', 'day', 'week', 'month', 'year', 'financial', 'financialBegin'
|
||||
];
|
||||
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$configuration->expects($this->once())->method('getFinancialYearStart')->willReturn('2020-01-01');
|
||||
$configuration = SystemConfigurationFactory::createStub(['company' => ['financial_year' => '2020-01-01']]);
|
||||
|
||||
$sut = new PaginatedWorkingTimeChart($repository, $configuration);
|
||||
|
||||
$sut->setUser(new User());
|
||||
$data = $sut->getData([]);
|
||||
$data = $sut->getData($sut->getOptions());
|
||||
|
||||
self::assertCount(\count($expectedKeys), $data);
|
||||
foreach ($expectedKeys as $key) {
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\SimpleWidget;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
*/
|
||||
class SimpleWidgetTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
public function createSut(): AbstractWidgetType
|
||||
{
|
||||
return new SimpleWidget();
|
||||
}
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -16,9 +16,8 @@ use App\Widget\Type\TotalsActivity;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\TotalsActivity
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
*/
|
||||
class TotalsActivityTest extends AbstractWidgetTypeTest
|
||||
class TotalsActivityTest extends AbstractWidgetTest
|
||||
{
|
||||
/** @var User */
|
||||
private $user;
|
||||
@@ -32,7 +31,7 @@ class TotalsActivityTest extends AbstractWidgetTypeTest
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): TotalsActivity
|
||||
{
|
||||
return $this->createWidget();
|
||||
}
|
||||
@@ -53,9 +52,7 @@ class TotalsActivityTest extends AbstractWidgetTypeTest
|
||||
return [
|
||||
'route' => 'admin_activity',
|
||||
'icon' => 'activity',
|
||||
'color' => 'primary',
|
||||
'dataType' => 'int',
|
||||
'user' => $this->user,
|
||||
'color' => 'red',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,8 @@ use App\Widget\Type\TotalsCustomer;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\TotalsCustomer
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
*/
|
||||
class TotalsCustomerTest extends AbstractWidgetTypeTest
|
||||
class TotalsCustomerTest extends AbstractWidgetTest
|
||||
{
|
||||
/** @var User */
|
||||
private $user;
|
||||
@@ -32,7 +31,7 @@ class TotalsCustomerTest extends AbstractWidgetTypeTest
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): TotalsCustomer
|
||||
{
|
||||
return $this->createWidget();
|
||||
}
|
||||
@@ -53,9 +52,7 @@ class TotalsCustomerTest extends AbstractWidgetTypeTest
|
||||
return [
|
||||
'route' => 'admin_customer',
|
||||
'icon' => 'customer',
|
||||
'color' => 'primary',
|
||||
'dataType' => 'int',
|
||||
'user' => $this->user,
|
||||
'color' => 'red',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,8 @@ use App\Widget\Type\TotalsProject;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\TotalsProject
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
*/
|
||||
class TotalsProjectTest extends AbstractWidgetTypeTest
|
||||
class TotalsProjectTest extends AbstractWidgetTest
|
||||
{
|
||||
/** @var User */
|
||||
private $user;
|
||||
@@ -32,7 +31,7 @@ class TotalsProjectTest extends AbstractWidgetTypeTest
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): TotalsProject
|
||||
{
|
||||
return $this->createWidget();
|
||||
}
|
||||
@@ -53,9 +52,7 @@ class TotalsProjectTest extends AbstractWidgetTypeTest
|
||||
return [
|
||||
'route' => 'admin_project',
|
||||
'icon' => 'project',
|
||||
'color' => 'primary',
|
||||
'dataType' => 'int',
|
||||
'user' => $this->user,
|
||||
'color' => 'red',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,8 @@ use App\Widget\Type\TotalsUser;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\TotalsUser
|
||||
* @covers \App\Widget\Type\SimpleWidget
|
||||
*/
|
||||
class TotalsUserTest extends AbstractWidgetTypeTest
|
||||
class TotalsUserTest extends AbstractWidgetTest
|
||||
{
|
||||
/** @var User */
|
||||
private $user;
|
||||
@@ -32,7 +31,7 @@ class TotalsUserTest extends AbstractWidgetTypeTest
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): TotalsUser
|
||||
{
|
||||
return $this->createWidget();
|
||||
}
|
||||
@@ -53,9 +52,7 @@ class TotalsUserTest extends AbstractWidgetTypeTest
|
||||
return [
|
||||
'route' => 'admin_user',
|
||||
'icon' => 'user',
|
||||
'color' => 'primary',
|
||||
'dataType' => 'int',
|
||||
'user' => $this->user,
|
||||
'color' => 'red',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -11,28 +11,27 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractUserAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\Type\AbstractUserRevenuePeriod;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\UserAmountMonth;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\UserAmountMonth
|
||||
* @covers \App\Widget\Type\AbstractUserAmountPeriod
|
||||
* @covers \App\Widget\Type\AbstractUserRevenuePeriod
|
||||
*/
|
||||
class UserAmountMonthTest extends AbstractWidgetTypeTest
|
||||
class UserAmountMonthTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AbstractUserAmountPeriod
|
||||
* @return AbstractUserRevenuePeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -46,27 +45,16 @@ class UserAmountMonthTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_MONTH,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('userAmountMonth', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('UserAmountMonth', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,28 +11,27 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractUserAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\Type\AbstractUserRevenuePeriod;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\UserAmountToday;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\UserAmountToday
|
||||
* @covers \App\Widget\Type\AbstractUserAmountPeriod
|
||||
* @covers \App\Widget\Type\AbstractUserRevenuePeriod
|
||||
*/
|
||||
class UserAmountTodayTest extends AbstractWidgetTypeTest
|
||||
class UserAmountTodayTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AbstractUserAmountPeriod
|
||||
* @return AbstractUserRevenuePeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -46,27 +45,16 @@ class UserAmountTodayTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_TODAY,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('userAmountToday', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('UserAmountToday', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,28 +11,27 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractUserAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\Type\AbstractUserRevenuePeriod;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\UserAmountTotal;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\UserAmountTotal
|
||||
* @covers \App\Widget\Type\AbstractUserAmountPeriod
|
||||
* @covers \App\Widget\Type\AbstractUserRevenuePeriod
|
||||
*/
|
||||
class UserAmountTotalTest extends AbstractWidgetTypeTest
|
||||
class UserAmountTotalTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AbstractUserAmountPeriod
|
||||
* @return AbstractUserRevenuePeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -46,27 +45,16 @@ class UserAmountTotalTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_TOTAL,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('userAmountTotal', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('UserAmountTotal', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,28 +11,27 @@ namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Widget\Type\AbstractUserAmountPeriod;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\Type\AbstractUserRevenuePeriod;
|
||||
use App\Widget\Type\AbstractWidget;
|
||||
use App\Widget\Type\UserAmountWeek;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\UserAmountWeek
|
||||
* @covers \App\Widget\Type\AbstractUserAmountPeriod
|
||||
* @covers \App\Widget\Type\AbstractUserRevenuePeriod
|
||||
*/
|
||||
class UserAmountWeekTest extends AbstractWidgetTypeTest
|
||||
class UserAmountWeekTest extends AbstractWidgetTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
protected function assertDefaultData(AbstractWidget $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AbstractUserAmountPeriod
|
||||
* @return AbstractUserRevenuePeriod
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
public function createSut(): AbstractWidget
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
@@ -46,27 +45,16 @@ class UserAmountWeekTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_WEEK,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('userAmountWeek', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('UserAmountWeek', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,34 +9,34 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Configuration\SystemConfiguration;
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
use App\Widget\Type\AbstractCounterYear;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\CounterYear;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\Type\UserAmountYear;
|
||||
use App\Widget\WidgetInterface;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\UserAmountYear
|
||||
* @covers \App\Widget\Type\CounterYear
|
||||
* @covers \App\Widget\Type\AbstractCounterYear
|
||||
*/
|
||||
class UserAmountYearTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
protected function assertDefaultData(AbstractWidgetType $sut)
|
||||
{
|
||||
self::assertEquals(0.0, $sut->getData());
|
||||
self::assertEquals([], $sut->getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CounterYear
|
||||
* @return AbstractCounterYear
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$repository->method('getStatistic')->willReturn([]);
|
||||
$configuration = SystemConfigurationFactory::createStub();
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
|
||||
$widget = new UserAmountYear($repository, $configuration, $dispatcher);
|
||||
@@ -48,27 +48,16 @@ class UserAmountYearTest extends AbstractWidgetTypeTest
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'money',
|
||||
'icon' => 'money',
|
||||
'color' => WidgetInterface::COLOR_YEAR,
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('userAmountYear', $sut->getId());
|
||||
self::assertEquals('widget/widget-counter-money.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('UserAmountYear', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,54 +9,46 @@
|
||||
|
||||
namespace App\Tests\Widget\Type;
|
||||
|
||||
use App\Configuration\SystemConfiguration;
|
||||
use App\Entity\User;
|
||||
use App\Repository\TimesheetRepository;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
use App\Widget\Type\AbstractCounterYear;
|
||||
use App\Widget\Type\AbstractWidgetType;
|
||||
use App\Widget\Type\CounterYear;
|
||||
use App\Widget\Type\SimpleStatisticChart;
|
||||
use App\Widget\Type\UserDurationYear;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\Type\UserDurationYear
|
||||
* @covers \App\Widget\Type\CounterYear
|
||||
* @covers \App\Widget\Type\AbstractCounterYear
|
||||
*/
|
||||
class UserDurationYearTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
/**
|
||||
* @return CounterYear
|
||||
* @return AbstractCounterYear
|
||||
*/
|
||||
public function createSut(): AbstractWidgetType
|
||||
{
|
||||
$repository = $this->createMock(TimesheetRepository::class);
|
||||
$configuration = $this->createMock(SystemConfiguration::class);
|
||||
$configuration = SystemConfigurationFactory::createStub();
|
||||
|
||||
return new UserDurationYear($repository, $configuration);
|
||||
$sut = new UserDurationYear($repository, $configuration);
|
||||
$sut->setUser(new User());
|
||||
|
||||
return $sut;
|
||||
}
|
||||
|
||||
public function getDefaultOptions(): array
|
||||
{
|
||||
return [
|
||||
'dataType' => 'duration',
|
||||
'icon' => 'duration',
|
||||
'color' => 'yellow',
|
||||
];
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
|
||||
|
||||
$sut = $this->createSut();
|
||||
self::assertInstanceOf(SimpleStatisticChart::class, $sut);
|
||||
$sut->setData(10);
|
||||
}
|
||||
|
||||
public function testSettings()
|
||||
{
|
||||
$sut = $this->createSut();
|
||||
|
||||
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('widget/widget-counter-duration.html.twig', $sut->getTemplateName());
|
||||
self::assertEquals('userDurationYear', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,14 +9,9 @@
|
||||
|
||||
namespace App\Tests\Widget;
|
||||
|
||||
use App\Repository\WidgetRepository;
|
||||
use App\Widget\Renderer\SimpleWidgetRenderer;
|
||||
use App\Widget\Type\More;
|
||||
use App\Widget\WidgetException;
|
||||
use App\Widget\WidgetService;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Twig\Environment;
|
||||
use Twig\Loader\FilesystemLoader;
|
||||
|
||||
/**
|
||||
* @covers \App\Widget\WidgetService
|
||||
@@ -25,52 +20,17 @@ class WidgetServiceTest extends TestCase
|
||||
{
|
||||
public function testConstruct()
|
||||
{
|
||||
$repository = $this->createMock(WidgetRepository::class);
|
||||
|
||||
$sut = new WidgetService($repository, []);
|
||||
$sut = new WidgetService();
|
||||
self::assertFalse($sut->hasWidget('sdfsdf'));
|
||||
self::assertCount(0, $sut->getRenderer());
|
||||
|
||||
$sut = new WidgetService($repository, [
|
||||
new SimpleWidgetRenderer(new Environment(new FilesystemLoader()))
|
||||
]);
|
||||
self::assertCount(1, $sut->getRenderer());
|
||||
}
|
||||
|
||||
public function testFindRenderer()
|
||||
{
|
||||
$repository = $this->createMock(WidgetRepository::class);
|
||||
|
||||
$renderer = new SimpleWidgetRenderer(new Environment(new FilesystemLoader()));
|
||||
$sut = new WidgetService($repository, [$renderer]);
|
||||
$sut->addRenderer(new SimpleWidgetRenderer(new Environment(new FilesystemLoader())));
|
||||
|
||||
self::assertCount(2, $sut->getRenderer());
|
||||
|
||||
$found = $sut->findRenderer(new More());
|
||||
self::assertSame($renderer, $found);
|
||||
}
|
||||
|
||||
public function testFindRendererThrowsException()
|
||||
{
|
||||
$this->expectException(WidgetException::class);
|
||||
$this->expectExceptionMessage('No renderer available for widget "App\Widget\Type\More"');
|
||||
|
||||
$repository = $this->createMock(WidgetRepository::class);
|
||||
|
||||
$sut = new WidgetService($repository, []);
|
||||
$sut->findRenderer(new More());
|
||||
}
|
||||
|
||||
public function testHasAndGetWidget()
|
||||
{
|
||||
$widget = new More();
|
||||
$widget->setId('sdfsdf');
|
||||
|
||||
$repository = $this->getMockBuilder(WidgetRepository::class)->disableOriginalConstructor()->onlyMethods(['has', 'get'])->getMock();
|
||||
$repository->expects($this->once())->method('has')->willReturn(true);
|
||||
$repository->expects($this->once())->method('get')->willReturn($widget);
|
||||
|
||||
$sut = new WidgetService($repository, []);
|
||||
$sut = new WidgetService();
|
||||
$sut->registerWidget($widget);
|
||||
self::assertTrue($sut->hasWidget('sdfsdf'));
|
||||
self::assertSame($widget, $sut->getWidget('sdfsdf'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user