cleanup global context usage in widgets

This commit is contained in:
Kevin Papst
2020-08-18 11:39:41 +02:00
parent 08696651fd
commit 9597015413
29 changed files with 458 additions and 202 deletions

View File

@@ -12,7 +12,7 @@ namespace App\Tests\Widget\Renderer;
use App\Widget\Renderer\CompoundChartRenderer;
use App\Widget\Type\CompoundChart;
use App\Widget\Type\CompoundRow;
use App\Widget\Type\Counter;
use App\Widget\Type\More;
use PHPUnit\Framework\TestCase;
use Twig\Environment;
@@ -40,7 +40,7 @@ class CompoundChartRendererTest extends TestCase
$sut = new CompoundChartRenderer($twig);
$row = new CompoundChart();
$row->setTitle('foo-bar');
$row->addWidget(new Counter());
$row->addWidget(new More());
$result = $sut->render($row);
$result = json_decode($result, true);

View File

@@ -12,7 +12,7 @@ namespace App\Tests\Widget\Renderer;
use App\Widget\Renderer\CompoundRowRenderer;
use App\Widget\Type\CompoundChart;
use App\Widget\Type\CompoundRow;
use App\Widget\Type\Counter;
use App\Widget\Type\More;
use PHPUnit\Framework\TestCase;
use Twig\Environment;
@@ -40,7 +40,7 @@ class CompoundRowRendererTest extends TestCase
$sut = new CompoundRowRenderer($twig);
$row = new CompoundRow();
$row->setTitle('foo-bar');
$row->addWidget(new Counter());
$row->addWidget(new More());
$result = $sut->render($row);
$result = json_decode($result, true);

View File

@@ -10,7 +10,6 @@
namespace App\Tests\Widget\Renderer;
use App\Widget\Renderer\SimpleWidgetRenderer;
use App\Widget\Type\Counter;
use App\Widget\Type\More;
use App\Widget\Type\SimpleWidget;
use PHPUnit\Framework\TestCase;
@@ -60,7 +59,6 @@ class SimpleWidgetRendererTest extends TestCase
{
return [
[new SimpleWidget(), 'widget/widget-simplewidget.html.twig', 'yellow'],
[new Counter(), 'widget/widget-counter.html.twig', 'asdfgh'],
[new More(), 'widget/widget-more.html.twig', '#123456'],
];
}

View File

@@ -0,0 +1,26 @@
<?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;
/**
* @covers \App\Widget\Type\SimpleStatisticChart
*/
abstract class AbstractSimpleStatisticsWidgetTypeTest extends AbstractWidgetTypeTest
{
public function testData()
{
$sut = $this->createSut();
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Cannot set data on instances of SimpleStatisticChart');
$sut->setData(10);
}
}

View File

@@ -38,7 +38,6 @@ abstract class AbstractWidgetTypeTest extends TestCase
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()
@@ -57,8 +56,14 @@ abstract class AbstractWidgetTypeTest extends TestCase
// id
$sut->setId('cvbnmyx');
self::assertEquals('cvbnmyx', $sut->getId());
}
public function testData()
{
$sut = $this->createSut();
self::assertInstanceOf(AbstractWidgetType::class, $sut->setData(''));
// data
$sut->setData('slkudfhalksjdhfkljsahdf');
self::assertEquals('slkudfhalksjdhfkljsahdf', $sut->getData());

View File

@@ -9,6 +9,7 @@
namespace App\Tests\Widget\Type;
use App\Repository\TimesheetRepository;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\Counter;
use App\Widget\Type\SimpleWidget;
@@ -17,11 +18,14 @@ use App\Widget\Type\SimpleWidget;
* @covers \App\Widget\Type\Counter
* @covers \App\Widget\Type\SimpleWidget
*/
class CounterTest extends AbstractWidgetTypeTest
class CounterTest extends AbstractSimpleStatisticsWidgetTypeTest
{
public function createSut(): AbstractWidgetType
{
return new Counter();
$sut = new Counter($this->createMock(TimesheetRepository::class));
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
return $sut;
}
public function getDefaultOptions(): array
@@ -37,7 +41,8 @@ class CounterTest extends AbstractWidgetTypeTest
public function testTemplateName()
{
$sut = new Counter();
/** @var Counter $sut */
$sut = $this->createSut();
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
}
}

View File

@@ -12,8 +12,6 @@ namespace App\Tests\Widget\Type;
use App\Entity\User;
use App\Model\Statistic\Day;
use App\Repository\TimesheetRepository;
use App\Tests\Mocks\Security\CurrentUserFactory;
use App\Tests\Mocks\Security\UserDateTimeFactoryFactory;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\DailyWorkingTimeChart;
use App\Widget\Type\SimpleWidget;
@@ -30,11 +28,11 @@ class DailyWorkingTimeChartTest extends TestCase
public function createSut(): AbstractWidgetType
{
$repository = $this->createMock(TimesheetRepository::class);
$mockFactory = new UserDateTimeFactoryFactory($this);
$userFactory = new CurrentUserFactory($this);
$user = $userFactory->create(new User(), 'Europe/Berlin');
return new DailyWorkingTimeChart($repository, $user, $mockFactory->create('Europe/Berlin'));
$sut = new DailyWorkingTimeChart($repository);
$sut->setUser(new User());
return $sut;
}
public function testExtendsSimpleWidget()
@@ -107,12 +105,8 @@ class DailyWorkingTimeChartTest extends TestCase
];
});
$userFactory = new CurrentUserFactory($this);
$user = $userFactory->create(new User(), 'Europe/Berlin');
$mockFactory = new UserDateTimeFactoryFactory($this);
$sut = new DailyWorkingTimeChart($repository, $user, $mockFactory->create('Europe/Berlin'));
$sut = new DailyWorkingTimeChart($repository);
$sut->setUser(new User());
$data = $sut->getData([]);
self::assertCount(2, $data);
self::assertArrayHasKey('activities', $data);

View File

@@ -9,17 +9,21 @@
namespace App\Tests\Widget\Type;
use App\Repository\TimesheetRepository;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\YearChart;
/**
* @covers \App\Widget\Type\YearChart
*/
class YearChartTest extends AbstractWidgetTypeTest
class YearChartTest extends AbstractSimpleStatisticsWidgetTypeTest
{
public function createSut(): AbstractWidgetType
{
return new YearChart();
$sut = new YearChart($this->createMock(TimesheetRepository::class));
$sut->setQuery(TimesheetRepository::STATS_QUERY_ACTIVE);
return $sut;
}
public function getDefaultOptions(): array