internal IsDayOff(IsDayOffSettings settings, IIsDayOffApiClient apiClient) { this.settings = settings ?? throw new ArgumentNullException(nameof(settings), ErrorsMessages.SettingCanNotBeNull()); if (settings.TraceLevel.HasValue) { Tracer.Switch.Level = settings.TraceLevel.Value; } service = new IsDayOffService(apiClient, settings.Cache); }
public async Task ApiResponseReturnsSameDateTimeAsProvided() { var result = await IsDayOffService.CheckDatesRangeAsync( new IsDayOffGetDatesRangeArgs( 04.08.Of(2020), 04.08.Of(2020), Country.Russia, false, false, false), CancellationToken.None); Assert.That(result.Single().DateTime, Is.EqualTo(04.08.Of(2020))); }
public async Task IfNoCachedValueExistsThenApiResponseReturns() { ApiClientStub.Response = "1"; var result = await IsDayOffService.CheckDatesRangeAsync( new IsDayOffGetDatesRangeArgs(04.08.Of(2020), 04.08.Of(2020), Country.Russia, false, false, false), CancellationToken.None); Assert.That(result.Single().DayType, Is.EqualTo(DayType.NotWorkingDay)); }
public async Task ApiResponseMapsToDayTypeCorrectly(int apiResponse, DayType expectedDateType) { ApiClientStub.Response = apiResponse.ToString(); var result = await IsDayOffService.CheckDatesRangeAsync( new IsDayOffGetDatesRangeArgs( 04.08.Of(2020), 04.08.Of(2020), Country.Russia, false, false, false), CancellationToken.None); Assert.That(result.Single().DayType, Is.EqualTo(expectedDateType)); }
public async Task IfCachedValueExistsThenCachedValueReturns() { CacheStub.CachedValue.Add(new DayOffDateTime(01.01.Of(2020), DayType.NotWorkingDay)); var result = await IsDayOffService.CheckDatesRangeAsync( new IsDayOffGetDatesRangeArgs( 01.01.Of(2020), 01.01.Of(2020), Country.Russia, false, false, false), CancellationToken.None); Assert.That(result.Single().DayType, Is.EqualTo(DayType.NotWorkingDay)); }
public async Task IfDateFromGreaterThanDateToTheySwapsAutomatically() { ApiClientStub.Response = "00"; var from = 06.08.Of(2020); var to = 05.08.Of(2020); var result = await IsDayOffService.CheckDatesRangeAsync( new IsDayOffGetDatesRangeArgs(from, to, Country.Russia, false, false, false), CancellationToken.None); Assert.That(result[0].DateTime == to); Assert.That(result[1].DateTime == from); }
public void IfResponseTypeIsUnknownThenArgumentExceptionThrows([Values("5", "6", "7", "8", "9", "56789", "0010as", "05", "a01")] string apiResponse) { var initialDate = 04.08.Of(2020); var endDate = initialDate.AddDays(apiResponse.Length); ApiClientStub.Response = apiResponse; async Task Act() { await IsDayOffService.CheckDatesRangeAsync( new IsDayOffGetDatesRangeArgs( initialDate, endDate, Country.Russia, false, false, false), CancellationToken.None); } Assert.ThrowsAsync<ArgumentOutOfRangeException>(Act); }
public override void Setup() { base.Setup(); IsDayOffService = new IsDayOffService(ApiClientStub, CacheStub); }