Beispiel #1
0
        public async Task <int> AddPendingUnpaidResponseAsync(UnpaidResponseInput unpaidResponseInput, int unpaidRequestId, CancellationToken cancellationToken)
        {
            if (unpaidResponseInput == null)
            {
                _logger.LogError((int)LoggingEvents.ValidationFailed, "UnpaidResponseManager.AddPendingUnpaidResponseAsync - unpaidResponseInput is null");
                return(0);
            }

            var unpaidResponse = new List <TbUnpaidResponse>
            {
                new TbUnpaidResponse
                {
                    UnpaidRequestId = unpaidRequestId,
                    ResponseId      = (int)unpaidResponseInput.ContactOption,
                    Accepted        = unpaidResponseInput.Accepted,
                    StatusId        = (int)Status.Pending
                }
            };

            return(await _unpaidResponseStorageOperations.AddUnpaidResponseAsync(unpaidResponse, cancellationToken));
        }
        public async Task <TbUnpaidRequest> GetUnpaidRequestByIdAsync(UnpaidResponseInput unpaidResponseInput, CancellationToken cancellationToken)
        {
            if (unpaidResponseInput == null)
            {
                _logger.LogWarning((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - unpaidResponseInput is null");
                return(null);
            }

            if (string.IsNullOrWhiteSpace(unpaidResponseInput.PolicyNumber))
            {
                _logger.LogWarning((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - PolicyNumber is null or empty");
                return(null);
            }

            if (string.IsNullOrWhiteSpace(unpaidResponseInput.IdNumber))
            {
                _logger.LogWarning((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - IdNumber is null or empty");
                return(null);
            }

            if (string.IsNullOrWhiteSpace(unpaidResponseInput.CorrelationId))
            {
                _logger.LogError((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - CorrelationId is null or empty");
                return(null);
            }

            var correlationIdSplit = unpaidResponseInput.CorrelationId.Split("_");

            if (correlationIdSplit.Length < 2)
            {
                _logger.LogError((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - CorrelationId is not in the correct format");
                return(null);
            }

            return(await _unpaidRequestOperations.GetSingleUnpaidRequestAsync(unpaidResponseInput.IdNumber, Convert.ToInt32(correlationIdSplit[1]), Status.Success, cancellationToken));
        }
Beispiel #3
0
        public async Task HandleUnpaidResponseAsync_GIVEN_Valid_Input_BatchUnpaidResponseInput_ErrorGetLatestSuccessfulUnpaidRequestAsync_RETURNS_Valid_UnpaidResponseOutput()
        {
            // Arrange.
            var unpaidClient         = Substitute.For <IUnpaidClient>();
            var unpaidRequestClient  = Substitute.For <IUnpaidRequestClient>();
            var notification         = Substitute.For <INotification>();
            var unpaidResponseClient = Substitute.For <IUnpaidResponseClient>();

            var input1 = new UnpaidResponseInput
            {
                PolicyNumber  = "P1Test",
                IdNumber      = "9009165023080",
                Accepted      = true,
                ContactOption = ContactOption.CallMe
            };

            var input2 = new UnpaidResponseInput
            {
                PolicyNumber  = "P2Test",
                IdNumber      = "9009165023081",
                Accepted      = false,
                ContactOption = ContactOption.EmailMe
            };

            var input3 = new UnpaidResponseInput
            {
                PolicyNumber  = "P3Test",
                IdNumber      = "9009165023082",
                Accepted      = true,
                ContactOption = ContactOption.CallMe
            };

            unpaidRequestClient.GetUnpaidRequestByIdAsync(input1, CancellationToken.None).Returns(Task.FromResult(new TbUnpaidRequest
            {
                UnpaidRequestId      = 10,
                UnpaidId             = 2,
                NotificationId       = 1,
                StatusId             = 2,
                StatusAdditionalInfo = null
            }));

            unpaidRequestClient.GetUnpaidRequestByIdAsync(input2, CancellationToken.None).Returns(Task.FromResult <TbUnpaidRequest>(null));

            unpaidRequestClient.GetUnpaidRequestByIdAsync(input3, CancellationToken.None).Returns(Task.FromResult(new TbUnpaidRequest
            {
                UnpaidRequestId      = 12,
                UnpaidId             = 5,
                NotificationId       = 1,
                StatusId             = 2,
                StatusAdditionalInfo = null
            }));

            unpaidResponseClient.AddPendingUnpaidResponseAsync(Arg.Any <UnpaidResponseInput>(), 10, CancellationToken.None).Returns(Task.FromResult(1));
            unpaidResponseClient.AddPendingUnpaidResponseAsync(Arg.Any <UnpaidResponseInput>(), 11, CancellationToken.None).Returns(Task.FromResult(1));
            unpaidResponseClient.AddPendingUnpaidResponseAsync(Arg.Any <UnpaidResponseInput>(), 12, CancellationToken.None).Returns(Task.FromResult(1));

            var unpaidResponseInputList = new List <UnpaidResponseInput>
            {
                input1,
                input2,
                input3
            };

            var unpaidNotificationClient = Substitute.For <IUnpaidNotificationApiClient>();
            var unpaidBatchClient        = Substitute.For <IUnpaidBatchClient>();
            var logger       = Substitute.For <ILogger <UnpaidEngine> >();
            var unpaidEngine = new UnpaidEngine(unpaidClient, unpaidRequestClient, notification, unpaidResponseClient, unpaidNotificationClient, unpaidBatchClient, logger);

            // Act.
            var actual = await unpaidEngine.HandleUnpaidResponseAsync(unpaidResponseInputList, CancellationToken.None);

            // Assert.
            Assert.IsNotNull(actual);
            var unpaidResponseOutputs = actual.ToList();

            Assert.AreEqual(3, unpaidResponseOutputs.Count);
            Assert.AreEqual("P1Test", unpaidResponseOutputs[0].PolicyNumber);
            Assert.AreEqual("9009165023080", unpaidResponseOutputs[0].IdNumber);
            Assert.AreEqual(true, unpaidResponseOutputs[0].Accepted);
            Assert.AreEqual(ContactOption.CallMe, unpaidResponseOutputs[0].ContactOption);
            Assert.AreEqual(HttpStatusCode.Accepted, unpaidResponseOutputs[0].HttpStatusCode);
            Assert.AreEqual(string.Empty, unpaidResponseOutputs[0].ErrorMessage);

            Assert.AreEqual("P2Test", unpaidResponseOutputs[1].PolicyNumber);
            Assert.AreEqual("9009165023081", unpaidResponseOutputs[1].IdNumber);
            Assert.AreEqual(false, unpaidResponseOutputs[1].Accepted);
            Assert.AreEqual(ContactOption.EmailMe, unpaidResponseOutputs[1].ContactOption);
            Assert.AreEqual(HttpStatusCode.NotFound, unpaidResponseOutputs[1].HttpStatusCode);
            Assert.AreEqual("Notification not found.", unpaidResponseOutputs[1].ErrorMessage);

            Assert.AreEqual("P3Test", unpaidResponseOutputs[2].PolicyNumber);
            Assert.AreEqual("9009165023082", unpaidResponseOutputs[2].IdNumber);
            Assert.AreEqual(true, unpaidResponseOutputs[2].Accepted);
            Assert.AreEqual(ContactOption.CallMe, unpaidResponseOutputs[2].ContactOption);
            Assert.AreEqual(HttpStatusCode.Accepted, unpaidResponseOutputs[2].HttpStatusCode);
            Assert.AreEqual(string.Empty, unpaidResponseOutputs[2].ErrorMessage);
        }