public async Task <IActionResult> Post([FromBody] NewPersonCarModel personCarModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var person = await _peopleRepository.GetAsync(personCarModel.PersonId); if (person == null) { return(NotFound(personCarModel.PersonId)); } var car = await _carRepository.GetByIdAsync(personCarModel.CarId); if (car == null) { return(NotFound(personCarModel.CarId)); } person.AddCar(new PersonCar() { Car = car, Person = person }); await _peopleRepository.UpdateAsync(person); return(Ok()); // For more information on protecting this API from Cross Site Request Forgery (CSRF) attacks, see http://go.microsoft.com/fwlink/?LinkID=717803 }
public async Task Post_ReturnsTaskCompletedTask() { // Arrange int carId = 1; int personId = 1; var testPerson = GetTestPerson(); var mockPeopleRepo = new Mock <IPeopleRepository>(); mockPeopleRepo.Setup(repo => repo.GetAsync(personId)) .Returns(Task.FromResult(testPerson)); var testCar = GetTestCar(); var mockCarRepo = new Mock <ICarRepository>(); mockCarRepo.Setup(repo => repo.GetByIdAsync(carId)) .Returns(Task.FromResult(testCar)); var controller = new PersonCarController(mockPeopleRepo.Object, mockCarRepo.Object); var newPersonCar = new NewPersonCarModel() { CarId = carId, PersonId = personId }; mockPeopleRepo.Setup(repo => repo.UpdateAsync(testPerson)) .Returns(Task.CompletedTask) .Verifiable(); // Act var result = await controller.Post(newPersonCar); // Assert var okResult = Assert.IsType <OkResult>(result); mockPeopleRepo.Verify(); }