public async Task create_repair_returns_a_created_repair_response_object() { var mockLogger = new Mock <ILoggerAdapter <RepairsActions> >(); var request = new RepairRequest { ProblemDescription = "tap leaking", Priority = "N", PropertyReference = "123456", Contact = new RepairRequestContact { Name = "Test", TelephoneNumber = "0123456789" } }; var repairRequest = new NewRepairRequest { RepairRequest = new RepairRequestInfo { PropertyRef = request.PropertyReference, Priority = request.Priority, Problem = request.ProblemDescription } }; var fakeRepairService = new Mock <IHackneyRepairsService>(); var response = new RepairCreateResponse { Success = true, RepairRequest = new RepairRequestDto { Reference = "123", Problem = "tap leaking", PropertyReference = "123456", PriorityCode = "N", LocationCode = "1", Name = "Test" } }; fakeRepairService.Setup(service => service.CreateRepairAsync(repairRequest)) .ReturnsAsync(response); fakeRepairService.Setup(service => service.UpdateRequestStatus("123")).ReturnsAsync(true); var fakeRequestBuilder = new Mock <IHackneyRepairsServiceRequestBuilder>(); fakeRequestBuilder.Setup(builder => builder.BuildNewRepairRequest(request)).Returns(repairRequest); var repairsActions = new RepairsActions(fakeRepairService.Object, fakeRequestBuilder.Object, mockLogger.Object); var result = await repairsActions.CreateRepair(request); var response1 = new { repairRequestReference = "123", problemDescription = "tap leaking", priority = "N", propertyReference = "123456", contact = new { name = "Test", telephoneNumber = "0123456789" } }; Assert.Equal(response1, result); }
public async Task create_repair_raises_an_exception_if_the_repair_request_is_missing() { var mockLogger = new Mock <ILoggerAdapter <RepairsActions> >(); var request = new RepairRequest(); var repairRequest = new NewRepairRequest(); var response = new RepairCreateResponse { Success = true, RepairRequest = null }; var fakeService = new Mock <IHackneyRepairsService>(); fakeService.Setup(service => service.CreateRepairAsync(It.IsAny <NewRepairRequest>())) .ReturnsAsync(response); var fakeRequestBuilder = new Mock <IHackneyRepairsServiceRequestBuilder>(); fakeRequestBuilder.Setup(builder => builder.BuildNewRepairRequest(request)).Returns(repairRequest); var repairsActions = new RepairsActions(fakeService.Object, fakeRequestBuilder.Object, mockLogger.Object); await Assert.ThrowsAsync <MissingRepairRequestException>(async() => await repairsActions.CreateRepair(request)); }
public Task <RepairCreateResponse> CreateRepairAsync(NewRepairRequest request) { var response = new RepairCreateResponse { Success = true, RepairRequest = new RepairRequestDto { Reference = "123 ", Problem = "tap leaking ", PriorityCode = "N", PropertyReference = "00000320", LocationCode = "1 ", Name = "Al Smith" } }; switch (request.RepairRequest.PropertyRef) { case "01234568": return(Task.Run(() => new RepairCreateResponse { Success = false, RepairRequest = new RepairRequestDto() })); case "00000320": return(Task.Run(() => response)); default: return(Task.Run(() => new RepairCreateResponse { Success = true, RepairRequest = new RepairRequestDto() })); } }
public async Task create_repair_raises_an_exception_if_the_service_responds_with_an_error() { var mockLogger = new Mock <ILoggerAdapter <RepairsActions> >(); var request = new RepairRequest { ProblemDescription = "tap leaking", Priority = "N", PropertyReference = "123456890" }; var repairRequest = new NewRepairRequest(); var response = new RepairCreateResponse { Success = false, RepairRequest = null }; var fakeService = new Mock <IHackneyRepairsService>(); fakeService.Setup(service => service.CreateRepairAsync(repairRequest)) .ReturnsAsync(response); var fakeRequestBuilder = new Mock <IHackneyRepairsServiceRequestBuilder>(); fakeRequestBuilder.Setup(builder => builder.BuildNewRepairRequest(request)).Returns(repairRequest); var repairActions = new RepairsActions(fakeService.Object, fakeRequestBuilder.Object, mockLogger.Object); await Assert.ThrowsAsync <RepairsServiceException>(async() => await repairActions.CreateRepair(request)); }