rounding rules via admin screen, round begin when starting record (#1229)

This commit is contained in:
Kevin Papst
2019-11-10 13:57:05 +01:00
committed by GitHub
parent fa1c79e15c
commit c6c4098759
47 changed files with 1100 additions and 185 deletions

View File

@@ -10,11 +10,13 @@
namespace App\Tests\Timesheet\Calculator;
use App\Entity\Timesheet;
use App\Tests\Mocks\RoundingServiceFactory;
use App\Timesheet\Calculator\DurationCalculator;
use PHPUnit\Framework\TestCase;
/**
* @covers \App\Timesheet\Calculator\DurationCalculator
* @covers \App\Timesheet\RoundingService
*/
class DurationCalculatorTest extends TestCase
{
@@ -24,7 +26,7 @@ class DurationCalculatorTest extends TestCase
$record->setBegin(new \DateTime());
$this->assertEquals(0, $record->getDuration());
$sut = new DurationCalculator([]);
$sut = new DurationCalculator((new RoundingServiceFactory($this))->create());
$sut->calculate($record);
$this->assertEquals(0, $record->getDuration());
}
@@ -39,7 +41,7 @@ class DurationCalculatorTest extends TestCase
$record->setEnd($end);
$this->assertEquals(0, $record->getDuration());
$sut = new DurationCalculator($rules);
$sut = new DurationCalculator((new RoundingServiceFactory($this))->create($rules));
$sut->calculate($record);
$this->assertEquals($expectedDuration, $record->getDuration());
}
@@ -52,7 +54,7 @@ class DurationCalculatorTest extends TestCase
return [
[
[],
null,
$start,
(clone $start)->setTimestamp($start->getTimestamp() + 1837),
1837
@@ -60,7 +62,7 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 15,
'end' => 15,
'duration' => 0,
@@ -74,7 +76,7 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 0,
'end' => 0,
'duration' => 0,
@@ -88,7 +90,7 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 1,
'end' => 1,
'duration' => 0,
@@ -102,7 +104,7 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 0,
'end' => 0,
'duration' => 30,
@@ -116,14 +118,14 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 15,
'end' => 0,
'duration' => 0,
'mode' => 'default',
],
'weekdays' => [
'days' => ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'],
'foo' => [
'days' => 'monday,tuesday,wednesday,thursday,friday,saturday,sunday',
'begin' => 0,
'end' => 1,
'duration' => 30,
@@ -137,14 +139,14 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 15,
'end' => 0,
'duration' => 30,
'mode' => 'default',
],
'weekdays' => [
'days' => ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'],
'foo' => [
'days' => 'monday,tuesday,wednesday,thursday,friday,saturday,sunday',
'begin' => 0,
'end' => 1,
'duration' => 0,
@@ -158,14 +160,14 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 0,
'end' => 0,
'duration' => 1,
'mode' => 'default',
],
'weekdays' => [
'days' => ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'],
'foo' => [
'days' => 'monday,tuesday,wednesday,thursday,friday,saturday,sunday',
'begin' => 0,
'end' => 0,
'duration' => 1,
@@ -179,14 +181,14 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 1,
'end' => 1,
'duration' => 1,
'mode' => 'default',
],
'weekdays' => [
'days' => ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'],
'foo' => [
'days' => 'monday,tuesday,wednesday,thursday,friday,saturday,sunday',
'begin' => 1,
'end' => 1,
'duration' => 1,
@@ -200,14 +202,14 @@ class DurationCalculatorTest extends TestCase
[
[
'default' => [
'days' => [$day],
'days' => $day,
'begin' => 0,
'end' => 0,
'duration' => 0,
'mode' => 'default',
],
'weekdays' => [
'days' => ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'],
'foo' => [
'days' => 'monday,tuesday,wednesday,thursday,friday,saturday,sunday',
'begin' => 0,
'end' => 0,
'duration' => 0,