public async Task <IActionResult> Put(int id, ModelForUpdate modelForUpdate) { var model = await _repository.GetModel(id); // If it's null then there isn't a model with the param id if (model == null) { return(NotFound(new { Message = $"Model with id {id} not found." })); } else { model.Name = modelForUpdate.name; // Update brand id only if it has been passed if (modelForUpdate.brandId.HasValue) { model.BrandId = modelForUpdate.brandId.Value; } // Save it on database if (await _repository.SaveAll()) { return(CreatedAtRoute(nameof(GetModel), new { id = model.Id }, "Model updated.")); } else { string errorMsg = "Failed updating model on server."; _logger.LogError(errorMsg); throw new Exception(errorMsg); } } }
public async void UpdateModel_ReturnModelUpdated(int id) { // Arrange var mockRepo = new Mock <IVehicleCatalogRepository>(); mockRepo.Setup(repo => repo.GetModel(id)) .Returns(Task.FromResult <Model.Model>(new Model.Model() { Id = id, Name = "Model 1", BrandId = 1 })); mockRepo.Setup(repo => repo.SaveAll()) .Returns(Task.FromResult <bool>(true)); var mapper = _dependencyFixture.ServiceProvider.GetService <IMapper>(); var logger = Mock.Of <ILogger <ModelsController> >(); var controller = new ModelsController(mockRepo.Object, mapper, logger); ModelForUpdate newModel = new ModelForUpdate() { name = "Fake" }; // Act var result = await controller.Put(id, newModel); // Assert var okResult = Assert.IsType <CreatedAtRouteResult>(result); var returnValue = Assert.IsType <string>(okResult.Value); Assert.Equal("Model updated.", returnValue); }