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);
        }
Exemplo n.º 2
0
        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()
                    }
                }));
            }
        }