added API for handling work contract times (#4016)
This commit is contained in:
@@ -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());
|
||||
|
||||
54
tests/Entity/WorkingTimeTest.php
Normal file
54
tests/Entity/WorkingTimeTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user