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