use default_begin in duration only mode (#873)
This commit is contained in:
@@ -9,6 +9,9 @@
|
|||||||
|
|
||||||
namespace App\Timesheet\TrackingMode;
|
namespace App\Timesheet\TrackingMode;
|
||||||
|
|
||||||
|
use App\Entity\Timesheet;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
class DurationOnlyMode extends AbstractTrackingMode
|
class DurationOnlyMode extends AbstractTrackingMode
|
||||||
{
|
{
|
||||||
public function canEditBegin(): bool
|
public function canEditBegin(): bool
|
||||||
@@ -40,4 +43,15 @@ class DurationOnlyMode extends AbstractTrackingMode
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function create(Timesheet $timesheet, Request $request): void
|
||||||
|
{
|
||||||
|
if (null === $timesheet->getBegin()) {
|
||||||
|
$timesheet->setBegin($this->dateTime->createDateTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
$timesheet->getBegin()->modify($this->configuration->getDefaultBeginTime());
|
||||||
|
|
||||||
|
parent::create($timesheet, $request);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,11 @@ abstract class AbstractTrackingModeTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
abstract protected function createSut();
|
abstract protected function createSut();
|
||||||
|
|
||||||
|
protected function assertDefaultBegin(Timesheet $timesheet)
|
||||||
|
{
|
||||||
|
self::assertNull($timesheet->getBegin());
|
||||||
|
}
|
||||||
|
|
||||||
public function testCreateDoesNotChangeAnythingOnEmptyRequest()
|
public function testCreateDoesNotChangeAnythingOnEmptyRequest()
|
||||||
{
|
{
|
||||||
$sut = $this->createSut();
|
$sut = $this->createSut();
|
||||||
@@ -35,7 +40,7 @@ abstract class AbstractTrackingModeTest extends TestCase
|
|||||||
|
|
||||||
$sut->create($timesheet, new Request());
|
$sut->create($timesheet, new Request());
|
||||||
|
|
||||||
self::assertNull($timesheet->getBegin());
|
$this->assertDefaultBegin($timesheet);
|
||||||
self::assertNull($timesheet->getEnd());
|
self::assertNull($timesheet->getEnd());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,7 +93,7 @@ abstract class AbstractTrackingModeTest extends TestCase
|
|||||||
|
|
||||||
$sut->create($timesheet, $request);
|
$sut->create($timesheet, $request);
|
||||||
|
|
||||||
self::assertNull($timesheet->getBegin());
|
$this->assertDefaultBegin($timesheet);
|
||||||
self::assertNull($timesheet->getEnd());
|
self::assertNull($timesheet->getEnd());
|
||||||
self::assertEquals(0, $timesheet->getDuration());
|
self::assertEquals(0, $timesheet->getDuration());
|
||||||
}
|
}
|
||||||
@@ -181,7 +186,7 @@ abstract class AbstractTrackingModeTest extends TestCase
|
|||||||
|
|
||||||
$sut->create($timesheet, $request);
|
$sut->create($timesheet, $request);
|
||||||
|
|
||||||
self::assertNull($timesheet->getBegin());
|
$this->assertDefaultBegin($timesheet);
|
||||||
self::assertNull($timesheet->getEnd());
|
self::assertNull($timesheet->getEnd());
|
||||||
self::assertEquals(0, $timesheet->getDuration());
|
self::assertEquals(0, $timesheet->getDuration());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
namespace App\Tests\Timesheet\TrackingMode;
|
namespace App\Tests\Timesheet\TrackingMode;
|
||||||
|
|
||||||
use App\Configuration\TimesheetConfiguration;
|
use App\Configuration\TimesheetConfiguration;
|
||||||
|
use App\Entity\Timesheet;
|
||||||
use App\Tests\Configuration\TestConfigLoader;
|
use App\Tests\Configuration\TestConfigLoader;
|
||||||
use App\Tests\Mocks\Security\UserDateTimeFactoryFactory;
|
use App\Tests\Mocks\Security\UserDateTimeFactoryFactory;
|
||||||
use App\Timesheet\TrackingMode\DurationOnlyMode;
|
use App\Timesheet\TrackingMode\DurationOnlyMode;
|
||||||
@@ -19,11 +20,17 @@ use App\Timesheet\TrackingMode\DurationOnlyMode;
|
|||||||
*/
|
*/
|
||||||
class DurationOnlyModeTest extends AbstractTrackingModeTest
|
class DurationOnlyModeTest extends AbstractTrackingModeTest
|
||||||
{
|
{
|
||||||
|
protected function assertDefaultBegin(Timesheet $timesheet)
|
||||||
|
{
|
||||||
|
self::assertNotNull($timesheet->getBegin());
|
||||||
|
self::assertEquals('13:45:37', $timesheet->getBegin()->format('H:i:s'));
|
||||||
|
}
|
||||||
|
|
||||||
protected function createSut()
|
protected function createSut()
|
||||||
{
|
{
|
||||||
$loader = new TestConfigLoader([]);
|
$loader = new TestConfigLoader([]);
|
||||||
$dateTime = (new UserDateTimeFactoryFactory($this))->create();
|
$dateTime = (new UserDateTimeFactoryFactory($this))->create();
|
||||||
$configuration = new TimesheetConfiguration($loader, []);
|
$configuration = new TimesheetConfiguration($loader, ['default_begin' => '13:45:37']);
|
||||||
|
|
||||||
return new DurationOnlyMode($dateTime, $configuration);
|
return new DurationOnlyMode($dateTime, $configuration);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user