/// <summary>Initializes a new instance of the <see cref="ShiftsService" /> class.</summary> /// <param name="configuration">The shifts rules configuration.</param> /// <param name="shiftsRepository">The sifts persisting repository</param> /// <param name="eventsEmitterService"></param> /// <param name="logger">The logger.</param> /// <exception cref="ArgumentNullException"></exception> public ShiftsService(IOptions <ShiftRulesConfiguration> configuration, IShiftsRepository shiftsRepository, IShiftEventsEmitterService eventsEmitterService, ILogger <ShiftsService> logger) { _configuration = configuration?.Value ?? throw new ArgumentNullException(nameof(configuration)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _shiftsRepository = shiftsRepository ?? throw new ArgumentNullException(nameof(shiftsRepository)); _eventsEmitterService = eventsEmitterService ?? throw new ArgumentNullException(nameof(eventsEmitterService)); }
public void Setup() { _workerTimeZone = TimeZoneInfo.Local; _workerOneIdentifier = Guid.Parse(@"af1ae2f1-91ac-483f-aefd-7945bf5655ba"); var rules = new ShiftRulesConfiguration { MinShiftLength = 8, // hours MaxShiftLength = 8, // hours MinShiftsGape = 16, // hours AllowDayOverlap = true }; _defaultConfig = Options.Create(rules); // important - need new, empty repository for each test! _repositoryLoggerMock = new Mock <ILogger <InMemoryShiftsRepository> >(); _eventsEmitter = new Mock <IShiftEventsEmitterService>(); _serviceLoggerMock = new Mock <ILogger <ShiftsService> >(); _repository = new InMemoryShiftsRepository(_repositoryLoggerMock.Object); _shiftService = new ShiftsService(_defaultConfig, _repository, _eventsEmitter.Object, _serviceLoggerMock.Object); }