Release 2.0.35 (#4302)

This commit is contained in:
Kevin Papst
2023-09-23 18:15:22 +02:00
committed by GitHub
parent de419350b2
commit 7a5b12762a
122 changed files with 1555 additions and 2054 deletions

View File

@@ -1,17 +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;
/**
* @covers \App\Widget\Type\AbstractSimpleStatisticChart
*/
abstract class AbstractSimpleStatisticsWidgetTypeTest extends AbstractWidgetTypeTest
{
}

View File

@@ -20,12 +20,12 @@ abstract class AbstractWidgetTypeTest extends AbstractWidgetTest
abstract public function getDefaultOptions(): array;
protected function assertDefaultData(AbstractWidgetType $sut)
protected function assertDefaultData(AbstractWidgetType $sut): void
{
self::assertNull($sut->getData());
}
public function testDefaultData()
public function testDefaultData(): void
{
$sut = $this->createSut();
self::assertInstanceOf(AbstractWidgetType::class, $sut);
@@ -33,15 +33,7 @@ abstract class AbstractWidgetTypeTest extends AbstractWidgetTest
$this->assertDefaultData($sut);
}
public function testFluentInterface()
{
$sut = $this->createSut();
self::assertInstanceOf(AbstractWidgetType::class, $sut->setOptions([]));
self::assertInstanceOf(AbstractWidgetType::class, $sut->setId(''));
self::assertInstanceOf(AbstractWidgetType::class, $sut->setTitle(''));
}
public function testSetter()
public function testSetter(): void
{
$sut = $this->createSut();

View File

@@ -13,6 +13,7 @@ use App\Entity\User;
use App\Repository\TimesheetRepository;
use App\Tests\Mocks\SystemConfigurationFactory;
use App\Widget\Type\AbstractCounterYear;
use App\Widget\Type\AbstractWidget;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\ActiveUsersYear;
@@ -36,6 +37,11 @@ class ActiveUsersYearTest extends AbstractWidgetTypeTest
return $sut;
}
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0, $sut->getData());
}
public function getDefaultOptions(): array
{
return [
@@ -44,7 +50,7 @@ class ActiveUsersYearTest extends AbstractWidgetTypeTest
];
}
public function testSettings()
public function testSettings(): void
{
$sut = $this->createSut();

View File

@@ -22,7 +22,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class AmountMonthTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -22,7 +22,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class AmountTodayTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -22,7 +22,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class AmountTotalTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -22,7 +22,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class AmountWeekTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -24,7 +24,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class AmountYearTest extends AbstractWidgetTypeTest
{
protected function assertDefaultData(AbstractWidgetType $sut)
protected function assertDefaultData(AbstractWidgetType $sut): void
{
self::assertEquals([], $sut->getData());
}

View File

@@ -1,76 +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\Entity\User;
use App\Repository\TimesheetRepository;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\Counter;
use DateTime;
/**
* @covers \App\Widget\Type\Counter
* @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_AMOUNT);
return $sut;
}
public function testQueryWithUser()
{
$user = new User();
$user->setAlias('foo');
$repository = $this->createMock(TimesheetRepository::class);
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
self::assertNull($begin);
self::assertNull($end);
self::assertNull($user);
});
$sut = new Counter($repository);
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
$sut->setUser($user);
$sut->getData([]);
$user = new User();
$user->setAlias('bar');
$repository = $this->createMock(TimesheetRepository::class);
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
self::assertNull($begin);
self::assertNull($end);
self::assertNotNull($user);
self::assertEquals('bar', $user->getAlias());
});
$sut = new Counter($repository);
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
$sut->setUser($user);
$sut->setQueryWithUser(true);
$sut->getData([]);
}
public function getDefaultOptions(): array
{
return [];
}
public function testTemplateName()
{
/** @var Counter $sut */
$sut = $this->createSut();
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
}
}

View File

@@ -1,89 +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\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\DurationYear;
use DateTime;
/**
* @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 = SystemConfigurationFactory::createStub(['company' => ['financial_year' => $financialYear]]);
$sut = new DurationYear($this->createMock(TimesheetRepository::class), $configuration);
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
$sut->setUser(new User());
return $sut;
}
public function testQueryWithUser()
{
$user = new User();
$user->setAlias('foo');
$repository = $this->createMock(TimesheetRepository::class);
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
self::assertNull($begin);
self::assertNull($end);
self::assertNull($user);
});
$sut = new Counter($repository);
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
$sut->setUser($user);
$sut->getData([]);
$user = new User();
$user->setAlias('bar');
$repository = $this->createMock(TimesheetRepository::class);
$repository->expects($this->once())->method('getStatistic')->willReturnCallback(function (string $type, ?DateTime $begin, ?DateTime $end, ?User $user) {
self::assertNull($begin);
self::assertNull($end);
self::assertNotNull($user);
self::assertEquals('bar', $user->getAlias());
});
$sut = new Counter($repository);
$sut->setQuery(TimesheetRepository::STATS_QUERY_AMOUNT);
$sut->setUser($user);
$sut->setQueryWithUser(true);
$sut->getData([]);
}
public function getDefaultOptions(): array
{
return ['icon' => 'duration', 'color' => 'yellow'];
}
public function testTemplateName()
{
/** @var Counter $sut */
$sut = $this->createSut();
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-duration.html.twig', $sut->getTemplateName());
}
}

View File

@@ -13,6 +13,7 @@ use App\Entity\User;
use App\Repository\TimesheetRepository;
use App\Tests\Mocks\SystemConfigurationFactory;
use App\Widget\Type\AbstractCounterYear;
use App\Widget\Type\AbstractWidget;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\DurationYear;
@@ -36,6 +37,11 @@ class DurationYearTest extends AbstractWidgetTypeTest
return $sut;
}
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0, $sut->getData());
}
public function getDefaultOptions(): array
{
return [

View File

@@ -0,0 +1,37 @@
<?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;
class More extends AbstractWidgetType
{
private mixed $data = null;
public function setData(mixed $data): self
{
$this->data = $data;
return $this;
}
/**
* @param array<string, string|bool|int|null> $options
*/
public function getData(array $options = []): mixed
{
return $this->data;
}
public function getTemplateName(): string
{
return 'widget/widget-more.html.twig';
}
}

View File

@@ -10,10 +10,9 @@
namespace App\Tests\Widget\Type;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\More;
/**
* @covers \App\Widget\Type\More
* @covers \App\Tests\Widget\Type\More
*/
class MoreTest extends AbstractWidgetTypeTest
{
@@ -27,13 +26,13 @@ class MoreTest extends AbstractWidgetTypeTest
return [];
}
public function testTemplateName()
public function testTemplateName(): void
{
$sut = new More();
self::assertEquals('widget/widget-more.html.twig', $sut->getTemplateName());
}
public function testData()
public function testData(): void
{
$sut = $this->createSut();

View File

@@ -56,7 +56,7 @@ class TotalsActivityTest extends AbstractWidgetTest
];
}
protected function assertDefaultData(AbstractWidgetType $sut)
protected function assertDefaultData(AbstractWidgetType $sut): void
{
self::assertEquals(1, $sut->getData());
}

View File

@@ -56,7 +56,7 @@ class TotalsCustomerTest extends AbstractWidgetTest
];
}
protected function assertDefaultData(AbstractWidgetType $sut)
protected function assertDefaultData(AbstractWidgetType $sut): void
{
self::assertEquals(1, $sut->getData());
}

View File

@@ -56,7 +56,7 @@ class TotalsProjectTest extends AbstractWidgetTest
];
}
protected function assertDefaultData(AbstractWidgetType $sut)
protected function assertDefaultData(AbstractWidgetType $sut): void
{
self::assertEquals(1, $sut->getData());
}

View File

@@ -56,7 +56,7 @@ class TotalsUserTest extends AbstractWidgetTest
];
}
protected function assertDefaultData(AbstractWidgetType $sut)
protected function assertDefaultData(AbstractWidgetType $sut): void
{
self::assertEquals(1, $sut->getData());
}

View File

@@ -23,7 +23,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class UserAmountMonthTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -23,7 +23,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class UserAmountTodayTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -23,7 +23,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class UserAmountTotalTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -23,7 +23,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class UserAmountWeekTest extends AbstractWidgetTest
{
protected function assertDefaultData(AbstractWidget $sut)
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0.0, $sut->getData());
}

View File

@@ -24,7 +24,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
*/
class UserAmountYearTest extends AbstractWidgetTypeTest
{
protected function assertDefaultData(AbstractWidgetType $sut)
protected function assertDefaultData(AbstractWidgetType $sut): void
{
self::assertEquals([], $sut->getData());
}

View File

@@ -13,6 +13,7 @@ use App\Entity\User;
use App\Repository\TimesheetRepository;
use App\Tests\Mocks\SystemConfigurationFactory;
use App\Widget\Type\AbstractCounterYear;
use App\Widget\Type\AbstractWidget;
use App\Widget\Type\AbstractWidgetType;
use App\Widget\Type\UserDurationYear;
@@ -36,6 +37,11 @@ class UserDurationYearTest extends AbstractWidgetTypeTest
return $sut;
}
protected function assertDefaultData(AbstractWidget $sut): void
{
self::assertEquals(0, $sut->getData());
}
public function getDefaultOptions(): array
{
return [