added API for handling work contract times (#4016)

This commit is contained in:
Kevin Papst
2023-05-13 01:24:15 +02:00
committed by GitHub
parent 4b2a3669e6
commit 43bd7bf1ab
53 changed files with 2684 additions and 27 deletions

View File

@@ -67,9 +67,52 @@ class UserTest extends TestCase
$user->setAccountNumber('A-058375');
self::assertEquals('A-058375', $user->getAccountNumber());
self::assertEquals(0, $user->getWorkHoursMonday());
self::assertEquals(0, $user->getWorkHoursTuesday());
self::assertEquals(0, $user->getWorkHoursWednesday());
self::assertEquals(0, $user->getWorkHoursThursday());
self::assertEquals(0, $user->getWorkHoursFriday());
self::assertEquals(0, $user->getWorkHoursSaturday());
self::assertEquals(0, $user->getWorkHoursSunday());
self::assertEquals(0, $user->getHolidaysPerYear());
self::assertFalse($user->hasWorkHourConfiguration());
}
public function testColor()
public function testWorkContract(): void
{
$user = new User();
$user->setWorkHoursMonday(7200);
self::assertTrue($user->hasWorkHourConfiguration());
$user->setWorkHoursTuesday(7300);
$user->setWorkHoursWednesday(7400);
$user->setWorkHoursThursday(7500);
$user->setWorkHoursFriday(7600);
$user->setWorkHoursSaturday(7700);
$user->setWorkHoursSunday(7800);
$user->setHolidaysPerYear(10);
self::assertTrue($user->hasWorkHourConfiguration());
self::assertEquals(7200, $user->getWorkHoursMonday());
self::assertEquals(7300, $user->getWorkHoursTuesday());
self::assertEquals(7400, $user->getWorkHoursWednesday());
self::assertEquals(7500, $user->getWorkHoursThursday());
self::assertEquals(7600, $user->getWorkHoursFriday());
self::assertEquals(7700, $user->getWorkHoursSaturday());
self::assertEquals(7800, $user->getWorkHoursSunday());
self::assertEquals(10, $user->getHolidaysPerYear());
self::assertEquals(7200, $user->getWorkHoursForDay(new \DateTime('2023-05-08 12:00:00', new \DateTimeZone('Europe/Berlin'))));
self::assertEquals(7300, $user->getWorkHoursForDay(new \DateTime('2023-05-09 12:00:00', new \DateTimeZone('Europe/Berlin'))));
self::assertEquals(7400, $user->getWorkHoursForDay(new \DateTime('2023-05-10 12:00:00', new \DateTimeZone('Europe/Berlin'))));
self::assertEquals(7500, $user->getWorkHoursForDay(new \DateTime('2023-05-11 12:00:00', new \DateTimeZone('Europe/Berlin'))));
self::assertEquals(7600, $user->getWorkHoursForDay(new \DateTime('2023-05-12 12:00:00', new \DateTimeZone('Europe/Berlin'))));
self::assertEquals(7700, $user->getWorkHoursForDay(new \DateTime('2023-05-13 12:00:00', new \DateTimeZone('Europe/Berlin'))));
self::assertEquals(7800, $user->getWorkHoursForDay(new \DateTime('2023-05-14 12:00:00', new \DateTimeZone('Europe/Berlin'))));
}
public function testColor(): void
{
$sut = new User();
self::assertNull($sut->getColor());

View File

@@ -0,0 +1,54 @@
<?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\Entity;
use App\Entity\User;
use App\Entity\WorkingTime;
use PHPUnit\Framework\TestCase;
/**
* @covers \App\Entity\WorkingTime
*/
class WorkingTimeTest extends TestCase
{
public function testDefaultValues(): void
{
$user = new User();
$user->setUsername('bar');
$date = new \DateTime();
$sut = new WorkingTime($user, $date);
self::assertSame($user, $sut->getUser());
self::assertSame($date, $sut->getDate());
self::assertNull($sut->getId());
self::assertEquals(0, $sut->getActualTime());
self::assertEquals(0, $sut->getExpectedTime());
self::assertNull($sut->getApprovedAt());
self::assertNull($sut->getApprovedBy());
self::assertFalse($sut->isApproved());
$approvedAt = new \DateTime('2023-01-01 12:00:00', new \DateTimeZone('Europe/Vienna'));
$approvedBy = new User();
$approvedBy->setUsername('foo');
$sut->setApprovedAt($approvedAt);
$sut->setApprovedBy($approvedBy);
$sut->setActualTime(5600);
$sut->setExpectedTime(8600);
self::assertSame(5600, $sut->getActualTime());
self::assertSame(8600, $sut->getExpectedTime());
self::assertSame($approvedAt, $sut->getApprovedAt());
self::assertSame($approvedBy, $sut->getApprovedBy());
self::assertTrue($sut->isApproved());
}
}