public async Task CreateVehicle_ReturnOkResponse() { // Arrange int vehicleTypeId = 1; string make = "Toyota"; string model = "Corolla Altis"; string[] vehicleOtherProperties = { "1|16 valve dohc, fi vvti", "2|4 doors", "3|4 wheels" }; var fakeCommand = new VehicleAddCommand(vehicleTypeId, make, model, vehicleOtherProperties); // Act var handler = new VehicleAddCommandHandler(_loggerMock.Object, _vehicleService); var cancellationToken = new System.Threading.CancellationToken(); var result = await handler.Handle(fakeCommand, cancellationToken); // Assert Assert.Equal(Convert.ToInt32(HttpStatusCode.OK), result.StatusCode); Assert.Equal(Convert.ToString(HttpStatusCode.OK), result.Message); Assert.NotNull(result.MessageDetails); Assert.Equal(result.VehicleId, result.VehicleId); }
public async Task <IActionResult> PostVehicle([FromBody] VehicleRequest vehicle) { try { _logger.LogInformation("Received create vehicle request."); //validate parameters if (vehicle.VehicleTypeId == 0) { _logger.LogInformation("No vehicle type id found."); return(new JsonResult(new VehicleResponse() { StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest), Message = Convert.ToString(HttpStatusCode.BadRequest), Payload = new VehicleResponsePayload() { MessageDetail = ManageVehicleResponseStatus.NoVehicleTypeId } })); } if (String.IsNullOrEmpty(vehicle.Make)) { _logger.LogInformation("No make found."); return(new JsonResult(new VehicleResponse() { StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest), Message = Convert.ToString(HttpStatusCode.BadRequest), Payload = new VehicleResponsePayload() { MessageDetail = ManageVehicleResponseStatus.NoMakeFound } })); } if (String.IsNullOrEmpty(vehicle.Model)) { _logger.LogInformation("No model found."); return(new JsonResult(new VehicleResponse() { StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest), Message = Convert.ToString(HttpStatusCode.BadRequest), Payload = new VehicleResponsePayload() { MessageDetail = ManageVehicleResponseStatus.NoModelFound } })); } //call command handler var command = new VehicleAddCommand(vehicle.VehicleTypeId, vehicle.Make, vehicle.Model, vehicle.VehicleOtherProperties); var commandResult = await _mediator.Send(command); return(new JsonResult(new VehicleResponse() { StatusCode = commandResult.StatusCode, Message = commandResult.Message, Payload = new VehicleResponsePayload() { MessageDetail = commandResult.MessageDetails, VehicleId = commandResult.VehicleId } })); } catch (Exception ex) { _logger.LogError("Vehicle create request failed. Exception error message: {exceptionMessage}", ex.ToString()); return(new JsonResult(new VehicleResponse() { StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest), Message = Convert.ToString(HttpStatusCode.BadRequest), Payload = new VehicleResponsePayload() { MessageDetail = "Create vehicle request failed. Exception Error: " + ex.ToString() } })); } }