示例#1
0
        public async Task PUT_ById_RETURNS_OK()
        {
            _mockDataManager.Setup(manager => manager.UpdateAsync(It.IsAny <Vehicle>()))
            .ReturnsAsync(true);

            var vehicle = await _controller.Put(1, FakeUpdateRequestObject());

            var response = Assert.IsType <ApiResponse>(vehicle);

            Assert.Equal(200, response.StatusCode);
        }
        public void Should_not_create_or_update_vehicle_on_post_put_when_provided_invalid_make()
        {
            //Arrange
            var _vehicleRepo = new Mock <IRepository <VehicleModel> >();

            var id   = Guid.NewGuid();
            var post = new PostVehicleModel()
            {
                Make        = null,
                Model       = "test model",
                Odometer    = 0,
                Plate       = "test plate",
                VehicleType = VehicleTypeEnum.Electric,
                Year        = 0,
            };

            _controller = new VehiclesController(_vehicleRepo.Object, _serviceRepo.Object);

            //Act
            var result  = JsonConvert.DeserializeObject <ResultModel>(_controller.Post(post));
            var result1 = JsonConvert.DeserializeObject <ResultModel>(_controller.Put(post.ToVehicleModel()));

            //Assert
            Assert.True(result.IsError);
            Assert.True(result1.IsError);
        }
        public async void UpdateVehicle_ReturnVehicleUpdated(int id)
        {
            // Arrange
            var mockRepo = new Mock <IVehicleCatalogRepository>();

            mockRepo.Setup(repo => repo.GetVehicle(id))
            .Returns(Task.FromResult <Vehicle>(new Vehicle()
            {
                Id = id, Value = 10000.00M, BrandId = 1, ModelId = 1, YearModel = 1998, Fuel = "Gasoline"
            }));
            mockRepo.Setup(repo => repo.SaveAll())
            .Returns(Task.FromResult <bool>(true));
            var mapper     = _dependencyFixture.ServiceProvider.GetService <IMapper>();
            var logger     = Mock.Of <ILogger <VehiclesController> >();
            var controller = new VehiclesController(mockRepo.Object, mapper, logger);
            VehicleForUpdate newVehicle = new VehicleForUpdate()
            {
                value     = 18000.50M,
                brandId   = 1,
                modelId   = 1,
                yearModel = 1998,
                fuel      = "Gasoline"
            };

            // Act
            var result = await controller.Put(id, newVehicle);

            // Assert
            var okResult    = Assert.IsType <CreatedAtRouteResult>(result);
            var returnValue = Assert.IsType <string>(okResult.Value);

            Assert.Equal("Vehicle updated.", returnValue);
        }
        public void Should_create_or_update_vehicle_on_post_put_when_provided_valid_post_vehicle()
        {
            //Arrange
            var _vehicleRepo = new Mock <IRepository <VehicleModel> >();

            _vehicleRepo.Setup(moq => moq.Read()).Returns(new System.Collections.Generic.List <VehicleModel>()
            {
                new VehicleModel()
                {
                    Plate = "test"
                }
            });

            var id   = Guid.NewGuid();
            var post = new PostVehicleModel()
            {
                Make        = "test make",
                Model       = "test model",
                Odometer    = 0,
                Plate       = "test plate",
                VehicleType = VehicleTypeEnum.Electric,
                Year        = 0,
            };

            _controller = new VehiclesController(_vehicleRepo.Object, _serviceRepo.Object);

            //Act
            var result  = JsonConvert.DeserializeObject <ResultModel>(_controller.Post(post));
            var result1 = JsonConvert.DeserializeObject <ResultModel>(_controller.Put(post.ToVehicleModel()));

            //Assert
            Assert.False(result.IsError);
            Assert.False(result1.IsError);
        }
        public void PutVehicleWithNewVehicleIdResultsInCreate()
        {
            var mock = new Mock <IVehicleRepositorical>();

            mock.Setup(m => m.FindById(It.Is <string>(s => s == "2"))).Returns(default(Vehicle));
            Vehicle newVehicle = null;

            mock.Setup(m => m.AddNewVehicle(It.Is <string>(s => s == "2"), It.IsAny <Vehicle>()))
            .Callback((string i, Vehicle p) => { newVehicle = p; });

            var controller = new VehiclesController(mock.Object)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext()
                }
            };
            var result = controller.Put("2", new Vehicle {
                VehicleIdentifier = "name 2", VehicleIdentifier = "10.1"
            });

            var createdAtRouteResult = Assert.IsType <CreatedAtRouteResult>(result);

            var Vehicle = Assert.IsType <Vehicle>(createdAtRouteResult.Value);

            Assert.Equal("name 2", Vehicle.VehicleIdentifier);
            Assert.Equal("10.1", Vehicle.VehicleIdentifier);
            Assert.NotNull(newVehicle);
        }
        public void PutVehicleWithNewVehicleIdResultsInCreate()
        {
            var mock = new Mock <IVehicleRepositorical>();

            mock.Setup(m => m.FindById(It.Is <string>(s => s == "2")))
            .Returns(default(Vehicle));
            Vehicle newVehicle = null;

            mock.Setup(m => m.AddNewVehicle(It.Is <string>(s => s == "2"), It.IsAny <Vehicle>()))
            .Callback((string _, Vehicle p) => { newVehicle = p; });

            var controller = new VehiclesController(mock.Object)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext()
                }
            };
            var result = controller.Put("2", new VehicleInfo
            {
                ModelIdentifier = "name 2", VehicleIdentifier = "10.1"
            });

            var createdAtRouteResult = Assert.IsType <CreatedAtRouteResult>(result);
            var vehicleInfo          = Assert.IsType <VehicleInfo>(createdAtRouteResult.Value);

            Assert.Equal("name 2", vehicleInfo.ModelIdentifier);
            Assert.Equal("10.1", vehicleInfo.VehicleIdentifier);
            Assert.NotNull(newVehicle);
            //Assert.Equal((int) HttpStatusCode.MethodNotAllowed, createdAtRouteResult.StatusCode);
            //Assert.True(controller.Response.Headers.ContainsKey("Allow"));
            //Assert.Equal(new[] {"GET", "POST"},
            //	controller.Response.Headers["Allow"].Select(e => e)
            //		.Select(e => e.Split(", ", StringSplitOptions.RemoveEmptyEntries)).SelectMany(e => e).ToArray());
        }
示例#7
0
        public async void Put_WhenNotValid()
        {
            // arrange
            var testVehicle        = TestVehicleModel();
            var errorCodeConverter = new ErrorCodeConverter();

            var vehicleServiceMoq = new Mock <IVehicleService>();

            vehicleServiceMoq.Setup(x => x.Update(It.IsAny <Vehicle>()))
            .ReturnsAsync(() => new Result <Guid>(ResultCode.BadRequest, testVehicle.Id));

            var dataStructureConverterMoq = new Mock <IDataStructureConverter>();

            var sut = new VehiclesController(vehicleServiceMoq.Object, errorCodeConverter, dataStructureConverterMoq.Object)
            {
                ControllerContext = DefaultControllerContext()
            };

            // act
            var result = await sut.Put(testVehicle.Id, testVehicle);

            var badRequestResult = result as BadRequestResult;

            // assert
            Assert.NotNull(badRequestResult);
        }
        public void Put_UpdatesVehicleProperties()
        {
            var vehicles = new List <Vehicle>
            {
                new Vehicle {
                    Id = 1, RegistrationNumber = "1"
                },
            }.AsQueryable();
            var vehiclesMockSet = MockDbSetHelper.CreateMockSet(vehicles);
            var mockContext     = new Mock <InstantDeliveryContext>();

            mockContext.Setup(c => c.Vehicles).Returns(vehiclesMockSet.Object);

            var controller = new VehiclesController(mockContext.Object);
            var selected   = vehiclesMockSet.Object.FirstOrDefault();

            vehiclesMockSet.Object.Attach(selected);
            selected.RegistrationNumber = "2";
            var vehicleDto = Mapper.Map <VehicleDto>(selected);

            controller.Put(vehicleDto);

            var result = vehiclesMockSet.Object.FirstOrDefault();

            Assert.Equal(result?.RegistrationNumber, "2");
        }
示例#9
0
        public void Put_NullObject_Returns400()
        {
            controller = new VehiclesController(mockVehicleRepo.Object);

            var result = controller.Put(null);

            Assert.IsType(typeof(BadRequestResult), result);
        }
        // TODO: other invalid types if necessary
        public void PutVehicleWithMalformedVehicleResultsInBadRequest(VehicleInfo Vehicle)
        {
            var mock                   = new Mock <IVehicleRepositorical>();
            var controller             = new VehiclesController(mock.Object);
            var result                 = controller.Put("1", Vehicle);
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result);

            // TODO: Error object
        }
示例#11
0
        public void Put_UpdateSuccessful_Returns204()
        {
            mockVehicleRepo.Setup(x => x.Update(It.IsAny <Vehicle>())).Returns(true);
            controller = new VehiclesController(mockVehicleRepo.Object);

            var result = controller.Put(GenerateTestVehicle(1));

            Assert.IsType(typeof(NoContentResult), result);
        }
示例#12
0
        public void Put_UpdateUnsuccessful_Returns404()
        {
            mockVehicleRepo.Setup(x => x.Update(It.IsAny <Vehicle>())).Returns(false);
            controller = new VehiclesController(mockVehicleRepo.Object);

            var result = controller.Put(GenerateTestVehicle(1));

            Assert.IsType(typeof(HttpNotFoundResult), result);
        }
        //[Fact]
        public void CheckOutVehicle()
        {
            //Act
            var      result   = valuesController.Put(1);
            string   json     = JsonConvert.SerializeObject(result);
            Response response = JsonConvert.DeserializeObject <Response>(json);

            //Assert
            Assert.Equal(200, response.StatusCode);
        }
        public void Should_not_create_or_update_vehicle_on_post_put_when_provided_null_post_vehicle()
        {
            //Arrange
            var _vehicleRepo       = new Mock <IRepository <VehicleModel> >();
            var _vehicleValidation = new Mock <IServicesValidation>();

            _controller = new VehiclesController(_vehicleRepo.Object, _serviceRepo.Object);

            //Act
            var result  = JsonConvert.DeserializeObject <ResultModel>(_controller.Post(null));
            var result1 = JsonConvert.DeserializeObject <ResultModel>(_controller.Put(null));

            //Assert
            Assert.True(result.IsError);
            Assert.True(result1.IsError);
        }
        public void PutUpdateVehicleConstraintViolationResultsInBadRequest()
        {
            var mock = new Mock <IVehicleRepositorical>();

            mock.Setup(m => m.FindById(It.Is <string>(s => s == "2"))).Returns(new Vehicle {
                MakeIdentifier = "TestName", VehicleIdentifier = "10"
            });
            mock.Setup(m => m.ReplaceExistingVehicle(It.Is <string>(s => s == "2"), It.IsAny <Vehicle>()))
            .Throws <VehicleConstraintViolatedException>();
            var controller = new VehiclesController(mock.Object);
            var result     = controller.Put("2", new VehicleInfo {
                ModelIdentifier = "name 2", VehicleIdentifier = "10.1"
            });
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result);

            var errorResponse = Assert.IsType <ErrorResponseInfo>(badRequestObjectResult.Value);
        }
示例#16
0
        public void Put()
        {
            // Arrange
            VehiclesController controller = new VehiclesController();
            var vehicle = new Vehicle(1, "bats", "batmobile", 2016);

            InMemoryVehicleRepository.Instance.Add(vehicle);

            // Act
            var updatedVehicle = vehicle.CloneWith(vehicle.Id, year: 2010);

            controller.Put(updatedVehicle);
            var result = controller.Get(vehicle.Id);

            // Assert
            Assert.AreEqual(updatedVehicle.Year, result.Year);
        }
        public void PutCreateInvalidOperationResultsInNoContent()
        {
            var     mock           = new Mock <IVehicleRepositorical>();
            Vehicle updatedVehicle = null;

            mock.Setup(m => m.FindById(It.Is <string>(s => s == "2"))).Returns(default(Vehicle));
            mock.Setup(m => m.AddNewVehicle(It.Is <string>(s => s == "2"), It.IsAny <Vehicle>())).Throws <InvalidOperationException>();
            mock.Setup(m => m.ReplaceExistingVehicle(It.Is <string>(s => s == "2"), It.IsAny <Vehicle>())).Callback((string i, Vehicle p) => { updatedVehicle
                                                                                                                                                   = p; });
            var controller = new VehiclesController(mock.Object)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext()
                }
            };
            var result = controller.Put("2", new Vehicle {
                VehicleIdentifier = "name 2", VehicleIdentifier = "10.1"
            });
            var noContentResult = Assert.IsType <NoContentResult>(result);
        }
        public void PutUpdateVehicleIdResultsInNoContent()
        {
            var mock = new Mock <IVehicleRepositorical>();

            mock.Setup(m => m.FindById(It.Is <string>(s => s == "2")))
            .Returns(new Vehicle {
                MakeIdentifier = "TestName", VehicleIdentifier = "2"
            });
            Vehicle updatedVehicle = null;

            mock.Setup(m => m.ReplaceExistingVehicle(It.Is <string>(s => s == "2"), It.IsAny <Vehicle>()))
            .Callback((string i, Vehicle p) => { updatedVehicle = p; });
            var controller = new VehiclesController(mock.Object);
            var result     = controller.Put("2", new VehicleInfo {
                ModelIdentifier = "name 2", VehicleIdentifier = "10.1"
            });
            var noContentResult = Assert.IsType <NoContentResult>(result);

            // todo: validate result content
            //var Vehicle = Assert.IsType<Vehicle>(noContentResult.Value);
            //Assert.Equal("name 2", Vehicle.VehicleIdentifier);
            //Assert.Equal("10.1", Vehicle.VehicleIdentifier);
            Assert.NotNull(updatedVehicle);
        }