public void given_a_valid_request_validator_should_return_no_errors() { var updateData = new MatUpdateProcessData(); var processRef = randomGuid; updateData.DateCompleted = _faker.Date.Recent(); var request = new UpdateProcessDataRequest() { processRef = processRef, processDataToUpdate = updateData }; _updateProcessDocValidator.ShouldNotHaveValidationErrorFor(r => r.processDataToUpdate, request.processDataToUpdate); }
public void update_process_data_gateway_call_returns_updateprocsesdataresponse_object() { //arrange var updateData = new MatUpdateProcessData(); var request = new UpdateProcessDataRequest() { processDataToUpdate = updateData }; //act mockMatGateway.Setup(x => x.UpdateProcessData(It.IsAny <UpdateDefinition <BsonDocument> >(), It.IsAny <string>())).Returns(new MatProcessData()); var result = processDataUseCase.ExecuteUpdate(request); //assert Assert.IsInstanceOf <MatProcessData>(result.UpdatedProcessData); Assert.IsInstanceOf <UpdateProcessDataResponse>(result); }
public void update_process_controller_end_to_end_testing_for_bad_request_given_invalid_request() { //arrange var dataToUpdate = new MatUpdateProcessData(); var processRef = _faker.Random.Word(); var request = new UpdateProcessDataRequest() { processRef = processRef, processDataToUpdate = dataToUpdate }; //act var response = _processDataController.UpdateExistingProcessDocument(request); var okResult = (ObjectResult)response; //assert Assert.AreEqual(400, okResult.StatusCode); //check if it was a bad request }
public void update_process_data_returns_updateprocessdataresponse_object() { //arrange var processRef = faker.Random.Guid().ToString(); var request = new UpdateProcessDataRequest { processDataToUpdate = new MatUpdateProcessData() }; var response = new MatProcessData(); //act mockMatGateway.Setup(x => x.UpdateProcessData(It.IsAny <UpdateDefinition <BsonDocument> >(), It.IsAny <string>())).Returns(response); var result = processDataUseCase.ExecuteUpdate(request); //assert Assert.IsInstanceOf <UpdateProcessDataResponse>(result); Assert.IsInstanceOf <UpdateProcessDataRequest>(result.Request); Assert.IsInstanceOf <MatProcessData>(result.UpdatedProcessData); Assert.AreEqual(JsonConvert.SerializeObject(new MatProcessData()), JsonConvert.SerializeObject(result.UpdatedProcessData)); Assert.NotNull(result.GeneratedAt); Assert.IsInstanceOf <DateTime>(result.GeneratedAt); }
public void given_an_invalid_request_object_controller_should_return_bad_request() { var requestObject = new MatProcessData(); var request = new UpdateProcessDataRequest() { processDataToUpdate = new MatUpdateProcessData() }; var validationErrorList = new List <ValidationFailure>(); validationErrorList.Add(new ValidationFailure(faker.Random.Word(), faker.Random.Word())); var fakeValidationResult = new FV.ValidationResult(validationErrorList); //Need to create ValidationResult so that I could setup Validator mock to return it upon '.Validate()' call. Also this is the only place where it's possible to manipulate the validation result - You can only make the validation result invalid by inserting a list of validation errors as a parameter through a constructor. The boolean '.IsValid' comes from expression 'IsValid => Errors.Count == 0;', so it can't be set manually. _mockValidatorUpdate.Setup(x => x.Validate(request)).Returns(fakeValidationResult); var response = _processDataController.UpdateExistingProcessDocument(request); var okResult = (ObjectResult)response; var resultContent = okResult.Value; Assert.NotNull(response); Assert.NotNull(okResult); Assert.NotNull(resultContent); Assert.AreEqual(400, okResult.StatusCode); }
public void when_updateexistingprocessdocument_method_is_called_then_it_returns_a_success_response() { //arrange int expectedStatusCode = 200; var request = new UpdateProcessDataRequest() { processDataToUpdate = new MatUpdateProcessData() }; var response = new UpdateProcessDataResponse(request, new MatProcessData(), DateTime.Now); _mockValidatorUpdate.Setup(x => x.Validate(request)).Returns(new FV.ValidationResult()); _mockUsecase.Setup(x => x.ExecuteUpdate(request)).Returns(response); //act var controllerResponse = _processDataController.UpdateExistingProcessDocument(request); var okResult = (OkObjectResult)controllerResponse; var actualStatusCode = okResult.StatusCode; //assert Assert.NotNull(controllerResponse); Assert.NotNull(okResult); Assert.AreEqual(expectedStatusCode, actualStatusCode); }
public void ensure_update_controller_calls_use_case_with_request_object() { //arrange var matProcessData = new MatUpdateProcessData(); //add fields to be updated matProcessData.ProcessData = new { firstField = faker.Random.Word() }; //set up Guid to filder by var processRef = faker.Random.Guid().ToString(); var request = new UpdateProcessDataRequest() { processRef = processRef, processDataToUpdate = matProcessData }; _mockValidatorUpdate.Setup(x => x.Validate(request)).Returns(new FV.ValidationResult()); var actualResponse = _processDataController.UpdateExistingProcessDocument(request); //verify usecase is called with an update process request object _mockUsecase.Verify(x => x.ExecuteUpdate((It.Is <UpdateProcessDataRequest>(i => i == request)))); }
public void given_an_update_object_when_update_process_data_method_is_called_the_controller_returns_correct_json_response() { //arange var matProcessData = new MatUpdateProcessData(); //add fields to be updated matProcessData.ProcessData = new { firstField = faker.Random.Word(), anyField = faker.Random.Words(), numberField = faker.Random.Number() }; //set up Guid to filder by var processRef = faker.Random.Guid().ToString(); var request = new UpdateProcessDataRequest() { processRef = processRef, processDataToUpdate = matProcessData }; var response = new UpdateProcessDataResponse(request, new MatProcessData(), DateTime.Now); _mockValidatorUpdate.Setup(x => x.Validate(request)).Returns(new FV.ValidationResult()); _mockUsecase.Setup(x => x.ExecuteUpdate(request)).Returns(response); //act var actualResponse = _processDataController.UpdateExistingProcessDocument(request); var okResult = (OkObjectResult)actualResponse; var resultContent = (UpdateProcessDataResponse)okResult.Value; //assert Assert.NotNull(actualResponse); Assert.NotNull(okResult); Assert.IsInstanceOf <UpdateProcessDataResponse>(resultContent); Assert.NotNull(resultContent); Assert.AreEqual(JsonConvert.SerializeObject(response), JsonConvert.SerializeObject(resultContent)); Assert.AreEqual(200, okResult.StatusCode); }
public IActionResult UpdateExistingProcessDocument([FromBody] UpdateProcessDataRequest updateRequest) { var isRequestValid = _updateValidator.Validate(updateRequest); if (isRequestValid.IsValid) { try { _logger.LogInformation($"Update ProcessData request for process ID {updateRequest.processRef}"); var result = _processDataUsecase.ExecuteUpdate(updateRequest); return(Ok(result)); } catch (DocumentNotFound ex) { return(StatusCode(200, $"Document with reference {updateRequest.processRef} was not found in the database." + $" An update is not possible on non-existent documents.")); } catch (Exception ex) { return(StatusCode(500, "An error has occured while processing the request - " + ex.Message + " " + ex.InnerException)); } } return(BadRequest(isRequestValid.Errors)); }