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)); }
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); }
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)); }