create(); $configuration = new TimesheetConfiguration($loader, ['mode' => 'punch']); $sut = new TrackingModeService($dateTime, $configuration); $modes = $sut->getModes(); self::assertGreaterThanOrEqual(4, $modes); $ids = []; foreach ($modes as $mode) { $ids[] = $mode->getId(); } self::assertContains('default', $ids); self::assertContains('punch', $ids); self::assertContains('duration_only', $ids); self::assertContains('duration_fixed_begin', $ids); } public function testGetActiveMode() { $loader = new TestConfigLoader([]); $dateTime = (new UserDateTimeFactoryFactory($this))->create(); $configuration = new TimesheetConfiguration($loader, ['mode' => 'punch']); $sut = new TrackingModeService($dateTime, $configuration); self::assertInstanceOf(PunchInOutMode::class, $sut->getActiveMode()); } public function testGetActiveModeThrowsExceptionOnlyInvalidMode() { $this->expectException(ServiceNotFoundException::class); $this->expectExceptionMessage('You have requested a non-existent service "xxxxxx"'); $loader = new TestConfigLoader([]); $dateTime = (new UserDateTimeFactoryFactory($this))->create(); $configuration = new TimesheetConfiguration($loader, ['mode' => 'xxxxxx']); $sut = new TrackingModeService($dateTime, $configuration); $sut->getActiveMode(); } }