getAll()); self::assertSame($none, $sut->getMode('none')); self::assertSame($day, $sut->getMode('day')); $user = new User(); $user->setWorkContractMode('day'); self::assertSame($day, $sut->getModeForUser($user)); } public function testFallbackMode(): void { $logger = $this->createMock(LoggerInterface::class); $logger->expects(self::once())->method('error'); $modes = [new WorkingTimeModeNone(), new WorkingTimeModeDay()]; $sut = new WorkingTimeModeFactory($modes, $logger); $user = new User(); $user->setUsername('foo-bar'); $user->setWorkContractMode('foo'); self::assertInstanceOf(WorkingTimeModeNone::class, $sut->getModeForUser($user)); } public function testException(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Unknown working contract mode: foo'); $sut = new WorkingTimeModeFactory([], new NullLogger()); $sut->getMode('foo'); } }