예제 #1
0
        public async Task GivenValidedInput_GatewayResponseWith_Success()
        {
            //arrange
            var tenancyAgreementRef = "Test";

            _fakeGateway.Setup(s => s.CreateActionDiaryEntryAsync(It.Is <ArrearsActionCreateRequest>(i => i.ArrearsAction.TenancyAgreementRef.Equals("Test"))))
            .ReturnsAsync(new ArrearsActionResponse
            {
                Success       = true,
                ArrearsAction = new ArrearsActionLogDto
                {
                    TenancyAgreementRef = tenancyAgreementRef
                }
            });
            var request = new ArrearsActionCreateRequest
            {
                ArrearsAction = new ArrearsActionInfo
                {
                    TenancyAgreementRef = tenancyAgreementRef
                }
            };
            //act
            var response = await _classUnderTest.ExecuteAsync(request);

            //assert
            Assert.Equal(true, response.Success);
            Assert.Equal("Test", response.ArrearsAction.TenancyAgreementRef);
        }
예제 #2
0
        public async Task GivenInvalidInput_GatewayResponseWith_Failure()
        {
            //arrange
            var tenancyAgreementRef = "InvalidTest";

            _fakeGateway.Setup(s => s.CreateActionDiaryEntryAsync(It.Is <ArrearsActionCreateRequest>(i => i.ArrearsAction.TenancyAgreementRef.Equals(string.Empty))))
            .ReturnsAsync(new ArrearsActionResponse
            {
                Success       = false,
                ArrearsAction = new ArrearsActionLogDto
                {
                    TenancyAgreementRef = string.Empty
                }
            });
            var request = new ArrearsActionCreateRequest
            {
                ArrearsAction = new ArrearsActionInfo
                {
                    TenancyAgreementRef = string.Empty
                }
            };
            //act
            var response = await _classUnderTest.ExecuteAsync(request);

            //assert
            Assert.False(response.Success);
        }
        public async Task GivenTenancyAgreementRef_WhenCreateActionDiaryEntryWithCorrectParameters_ShouldNotBeNull()
        {
            //Arrange
            var fakeArrearsAgreementService = new Mock <IArrearsAgreementServiceChannel>();

            fakeArrearsAgreementService.Setup(s => s.CreateArrearsActionAsync(It.IsAny <ArrearsActionCreateRequest>()))
            .ReturnsAsync(new ArrearsActionResponse());


            IArrearsActionDiaryGateway classUnderTest = new ArrearsActionDiaryGateway(fakeArrearsAgreementService.Object);

            var request = new ArrearsActionCreateRequest
            {
                ArrearsAction = new ArrearsActionInfo
                {
                    ActionBalance       = 10,
                    ActionCategory      = "8",
                    ActionCode          = "GEN",
                    Comment             = "Testing",
                    TenancyAgreementRef = "000017/01"
                },
                DirectUser = new UserCredential
                {
                    UserName     = "******",
                    UserPassword = "******"
                },
                SourceSystem = "TestSystem"
            };

            //act
            var response = await classUnderTest.CreateActionDiaryEntryAsync(request);

            //assert
            Assert.NotNull(response);
        }
예제 #4
0
        public async Task GivenValidInput_ThenRequestBuilder_AddsCredentials_ToRequest()
        {
            //arrange
            var tenancyAgreementRef = "Test";

            _fakeGateway.Setup(s => s.CreateActionDiaryEntryAsync(It.Is <ArrearsActionCreateRequest>(i => i.ArrearsAction.TenancyAgreementRef.Equals("Test"))))
            .ReturnsAsync(new ArrearsActionResponse
            {
                Success       = true,
                ArrearsAction = new ArrearsActionLogDto
                {
                    TenancyAgreementRef = tenancyAgreementRef
                }
            });
            var request = new ArrearsActionCreateRequest
            {
                ArrearsAction = new ArrearsActionInfo
                {
                    TenancyAgreementRef = tenancyAgreementRef
                }
            };
            //act
            var response = await _classUnderTest.ExecuteAsync(request);

            //assert
            _fakeGateway.Verify(v => v.CreateActionDiaryEntryAsync(It.Is <ArrearsActionCreateRequest>(i => i.DirectUser != null && !string.IsNullOrEmpty(i.SourceSystem))));
        }
예제 #5
0
        public async Task WhenGivenCorrectParamaters_AndThereIsErrorFromWebService_ApiShouldRespondWith500()
        {
            //Arrange
            var fakeUseCase    = new Mock <ICreateArrearsActionDiaryUseCase>();
            var classUnderTest = new ArrearsActionDiaryController(fakeUseCase.Object);

            fakeUseCase.Setup(a => a.ExecuteAsync(It.IsAny <ArrearsActionCreateRequest>())).ReturnsAsync(new ArrearsActionResponse
            {
                Success = false
            });

            //Act
            ArrearsActionCreateRequest request = new ArrearsActionCreateRequest
            {
                ArrearsAction = new ArrearsActionInfo
                {
                    TenancyAgreementRef = "s",
                    ActionBalance       = 1,
                    Comment             = "test",
                    ActionCode          = "t1"
                }
            };

            var response = await classUnderTest.Post(request);

            //Assert
            Assert.IsType <ObjectResult>(response);
        }
        public async Task <ArrearsActionResponse> ExecuteAsync(ArrearsActionCreateRequest request)
        {
            request = _requestBuilder.BuildArrearsRequest(request);

            var response = await _arrearsActionDiaryGateway.CreateActionDiaryEntryAsync(request);

            return(response);
        }
        public static bool IsValid(this ArrearsActionCreateRequest request)
        {
            var validator = new ArrearsActionCreateRequestValidator();

            if (request?.ArrearsAction == null)
            {
                return(false);
            }
            var result = validator.Validate(request);

            return(result.IsValid);
        }
예제 #8
0
        public async Task <ArrearsActionResponse> CreateActionDiaryEntryAsync(ArrearsActionCreateRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request is null");
            }
            var response = await _actionDiaryService.CreateArrearsActionAsync(request).ConfigureAwait(false);

            if (_actionDiaryService.State != CommunicationState.Closed)
            {
                _actionDiaryService.Close();
            }
            return(response);
        }
예제 #9
0
        public async Task <IActionResult> Post([FromBody][Required] ArrearsActionCreateRequest request)
        {
            if (!request.IsValid())
            {
                return(BadRequest());
            }

            var response = await _createArrearsActionDiaryUseCase.ExecuteAsync(request);

            if (!response.Success)
            {
                return(StatusCode(500, response));
            }
            return(Ok(response));
        }
예제 #10
0
        public static ArrearsActionResponse CreateArrearsActionAsync(ArrearsActionCreateRequest request)
        {
            var random = new Faker();

            return(new ArrearsActionResponse
            {
                ArrearsAction = new ArrearsActionLogDto
                {
                    TenancyAgreementRef = request.ArrearsAction.TenancyAgreementRef,
                    ActionBalance = request.ArrearsAction.ActionBalance ?? random.Finance.Amount(),
                    ActionCode = request.ArrearsAction.ActionCode,
                    ActionCategory = request.ArrearsAction.ActionCategory,
                },
                ErrorCode = 0,
                ErrorMessage = "",
                Success = true
            });
        }
        public async Task GivenTenancyAgreementRef_WhenCreateActionDiaryEntryWithCorrectParameters_ShouldReturnAValidObject(
            string tenancyRef, decimal actionBalance, string actionCategory, string actionCode, string comment)
        {
            //Arrange
            var fakeArrearsAgreementService = new Mock <IArrearsAgreementServiceChannel>();

            IArrearsActionDiaryGateway classUnderTest = new ArrearsActionDiaryGateway(fakeArrearsAgreementService.Object);

            var request = new ArrearsActionCreateRequest
            {
                ArrearsAction = new ArrearsActionInfo
                {
                    TenancyAgreementRef = tenancyRef,
                    ActionBalance       = actionBalance,
                    ActionCategory      = actionCategory,
                    ActionCode          = actionCode,
                    Comment             = comment
                },
                DirectUser = new UserCredential
                {
                    UserName     = "******",
                    UserPassword = "******"
                },
                SourceSystem = "TestSystem"
            };

            fakeArrearsAgreementService.Setup(s => s.CreateArrearsActionAsync(It.IsAny <ArrearsActionCreateRequest>()))
            .ReturnsAsync(Fake.CreateArrearsActionAsync(request));

            //act
            var response = await classUnderTest.CreateActionDiaryEntryAsync(request);

            //assert
            response.ArrearsAction.TenancyAgreementRef.Should().Be(tenancyRef);
            response.ArrearsAction.ActionBalance.Should().Be(actionBalance);
            response.ArrearsAction.ActionCategory.Should().Be(actionCategory);
            response.ArrearsAction.ActionCode.Should().Be(actionCode);
        }
예제 #12
0
        public ArrearsActionCreateRequest BuildNewActionDiaryRequest(ActionDiaryRequest request, decimal actionBalance = 0)
        {
            if (request == null)
            {
                throw new ArgumentNullException("ArrearsServiceRequestBuilder-BuildActionDiaryRequest:request is null");
            }
            var newRequest = new ArrearsActionCreateRequest
            {
                ArrearsAction = new ArrearsActionInfo
                {
                    ActionBalance       = actionBalance,
                    ActionCategory      = request.ActionCategory,
                    ActionCode          = request.ActionCode,
                    Comment             = request.Comment,
                    TenancyAgreementRef = request.TenancyAgreementRef
                },
                CompanyCode  = request.CompanyCode,
                DirectUser   = _credentialsService.GetUhUserCredentials(),
                SessionToken = request.SessionToken,
                SourceSystem = _credentialsService.GetUhSourceSystem()
            };

            return(newRequest);
        }