コード例 #1
0
        public async Task GivenUowStatusNotInKV__ThenExpectInitialEntryInKV()
        {
            //arrange
            const string testUowId           = "testId";
            const int    MaxNumberOfRetries  = 4;
            const int    InitialRetrialCount = 0;
            var          subKVRepository     = Substitute.For <IKVRepository>();
            var          testResult          = new Result <UowStatus>
            {
                IsSuccessfull = true,
                Item          = null
            };

            subKVRepository.GetAsync <UowStatus>(Arg.Is <string>(uowId => uowId == testUowId))
            .Returns(Task.FromResult(testResult));
            subKVRepository.CreateAsync(Arg.Is <CreateKVRequest <UowStatus> >(createKVRequest =>
                                                                              createKVRequest.Item.IsInProcessing == true &&
                                                                              createKVRequest.Item.CurrentRetrialCount == InitialRetrialCount &&
                                                                              createKVRequest.Key == testUowId))
            .Returns(new ActionResult());

            //act
            var uowStatusService = new UOWStatusService(subKVRepository, _logService);

            var hasExpiredResult = await uowStatusService.HasExpiredRetries(testUowId, MaxNumberOfRetries);

            //assert
            Assert.False(hasExpiredResult);

            await subKVRepository.Received().CreateAsync(Arg.Is <CreateKVRequest <UowStatus> >(createKVRequest =>
                                                                                               createKVRequest.Item.IsInProcessing == true &&
                                                                                               createKVRequest.Item.CurrentRetrialCount == InitialRetrialCount &&
                                                                                               createKVRequest.Key == testUowId));
        }
コード例 #2
0
        public async Task GivenUowStatusInKV_WhenNoMoreRetrialsAvailable_ThenExpiredTrue()
        {
            //arrange
            const string testUowId           = "testId";
            const int    MaxNumberOfRetries  = 4;
            const int    InitialRetrialCount = 4;
            var          subKVRepository     = Substitute.For <IKVRepository>();
            var          testResult          = new Result <UowStatus>
            {
                IsSuccessfull = true,
                Item          = new UowStatus(InitialRetrialCount, false)
            };

            subKVRepository.GetAsync <UowStatus>(Arg.Is <string>(uowId => uowId == testUowId))
            .Returns(Task.FromResult(testResult));

            //act
            var uowStatusService = new UOWStatusService(subKVRepository, _logService);

            var hasExpiredResult = await uowStatusService.HasExpiredRetries(testUowId, MaxNumberOfRetries);

            //assert
            Assert.True(hasExpiredResult);
        }
コード例 #3
0
        public async Task GivenStatusInKV_AndRetrievalOfStatusUnsuccessful_ThenExpectHasExpiredRetriesExceptionThrown()
        {
            //arrange
            const string testUowId       = "testId";
            var          subKVRepository = Substitute.For <IKVRepository>();

            var testResult = new Result <UowStatus>
            {
                IsSuccessfull = false,
                Item          = null,
                ErrorCode     = 2,
                ErrorMessage  = "Error message"
            };

            subKVRepository.GetAsync <UowStatus>(Arg.Is <string>(uowId => uowId == testUowId))
            .Returns(Task.FromResult(testResult));

            var uowStatusService = new UOWStatusService(subKVRepository, _logService);

            //act and assert
            var exception = await Assert.ThrowsAsync <InvalidOperationException>(() => uowStatusService.HasExpiredRetries(testUowId, 3));

            Assert.True(exception.Message.Contains(testUowId));
        }