Exemple #1
0
        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);
        }