createMock(AuthorizationCheckerInterface::class); $auth->method('isGranted')->willReturn($allowApiTimes); return new PunchInOutMode($auth); } public function testDefaultValues(): void { $sut = $this->createSut(); self::assertFalse($sut->canEditBegin()); self::assertFalse($sut->canEditEnd()); self::assertFalse($sut->canEditDuration()); self::assertFalse($sut->canUpdateTimesWithAPI()); self::assertTrue($sut->canSeeBeginAndEndTimes()); self::assertEquals('punch', $sut->getId()); } public function testValuesForAdmin(): void { $sut = $this->createSut(true); self::assertFalse($sut->canEditBegin()); self::assertFalse($sut->canEditEnd()); self::assertFalse($sut->canEditDuration()); self::assertTrue($sut->canUpdateTimesWithAPI()); self::assertTrue($sut->canSeeBeginAndEndTimes()); self::assertEquals('punch', $sut->getId()); } public function testCreate(): void { $startingTime = new \DateTime('22:54'); $timesheet = new Timesheet(); $timesheet->setBegin($startingTime); $request = new Request(); $sut = $this->createSut(); $sut->create($timesheet, $request); self::assertEquals($timesheet->getBegin(), $startingTime); } public function testCreateWithoutBegin(): void { $timesheet = (new Timesheet())->setUser(new User()); $request = new Request(); $sut = $this->createSut(); $sut->create($timesheet, $request); self::assertInstanceOf(\DateTime::class, $timesheet->getBegin()); } }