Ejemplo n.º 1
0
        public async Task HandleUnpaidResponseAsync_GIVEN_Valid_Input_SingleUnpaidResponseInput_Duplicate_RETURNS_Valid_UnpaidResponseOutput()
        {
            // Arrange.
            var unpaidClient         = Substitute.For <IUnpaidClient>();
            var unpaidRequestClient  = Substitute.For <IUnpaidRequestClient>();
            var notification         = Substitute.For <INotification>();
            var unpaidResponseClient = Substitute.For <IUnpaidResponseClient>();

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

            unpaidResponseClient.GetUnpaidResponseAsync(10, CancellationToken.None).Returns(Task.FromResult <IEnumerable <TbUnpaidResponse> >(new List <TbUnpaidResponse>
            {
                new TbUnpaidResponse
                {
                    UnpaidResponseId = 1,
                    UnpaidRequestId  = 10,
                    ResponseId       = 1,
                    Accepted         = true,
                    StatusId         = 1
                }
            }));

            var unpaidResponseInputList = new List <UnpaidResponseInput>
            {
                new UnpaidResponseInput
                {
                    PolicyNumber  = "P1Test",
                    IdNumber      = "9009165023080",
                    Accepted      = true,
                    ContactOption = ContactOption.CallMe
                }
            };

            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(1, 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.AlreadyReported, unpaidResponseOutputs[0].HttpStatusCode);
            Assert.AreEqual("Notification response already exists.", unpaidResponseOutputs[0].ErrorMessage);
        }
Ejemplo n.º 2
0
        public async Task HandleUnpaidResponseAsync_GIVEN_Invalid_Input_NullUnpaidResponseInput_RETURNS_Null()
        {
            // Arrange.
            var unpaidClient             = Substitute.For <IUnpaidClient>();
            var unpaidRequestClient      = Substitute.For <IUnpaidRequestClient>();
            var notification             = Substitute.For <INotification>();
            var unpaidResponseClient     = Substitute.For <IUnpaidResponseClient>();
            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(null, CancellationToken.None);

            // Assert.
            Assert.IsNull(actual);
        }
Ejemplo n.º 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);
        }