示例#1
0
        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);
        }
示例#2
0
        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)));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
        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));
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        public override void Setup()
        {
            base.Setup();

            IsDayOffService = new IsDayOffService(ApiClientStub, CacheStub);
        }