public async void Post_CreateMaintenance_ShouldWork()
        {
            var expected = new MaintenanceDTO();
            var createMaintenanceRequest = new CreateMaintenanceRequest()
            {
                Date    = DateTime.Now,
                Service = "service"
            };

            var mediatorMock = new Mock <IMediator>();
            var logger       = new Mock <ILogger <CarController> >();

            mediatorMock.Setup(t => t.Send(It.IsAny <CreateMaintenanceCommand>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.FromResult(expected));

            var controller = new CarController(mediatorMock.Object, logger.Object);

            ValidateModelState(createMaintenanceRequest, controller);
            var response = await controller.Post(Guid.NewGuid(), createMaintenanceRequest);

            var okResult    = Assert.IsType <CreatedResult>(response);
            var maintenance = Assert.IsAssignableFrom <MaintenanceDTO>(okResult.Value);

            Assert.Equal(expected, maintenance);
        }
        public async void Post_CreateMaintenance_ShouldReturnBadRequest()
        {
            var createMaintenanceRequest = new CreateMaintenanceRequest();
            var mediatorMock             = new Mock <IMediator>();
            var logger = new Mock <ILogger <CarController> >();

            var controller = new CarController(mediatorMock.Object, logger.Object);

            ValidateModelState(createMaintenanceRequest, controller);

            var response = await controller.Post(Guid.NewGuid(), createMaintenanceRequest);

            var badRequestResult = Assert.IsType <BadRequestObjectResult>(response);
            var errors           = Assert.IsAssignableFrom <SerializableError>(badRequestResult.Value);

            Assert.True(errors.ContainsKey(nameof(createMaintenanceRequest.Service)));
        }
Example #3
0
        public async Task <IActionResult> Post([FromRoute] Guid CarId, [FromBody] CreateMaintenanceRequest request)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                MaintenanceDTO maintenance = await _mediator.Send(new CreateMaintenanceCommand(CarId, request.Date, request.Service, request.Description));

                return(Created(string.Empty, maintenance));
            }
            catch (OException ex)
            {
                return(BadRequest(ex.Message));
            }
        }