public async Task Given_ValidCarRequest_UpdatesCar() { // Arrange. var carBeforeUpdate = _fixture.Create <Car>(); var carAfterUpdate = _fixture.Create <Car>(); var request = _fixture.Create <UpdateCarRequest>(); request.Id = carBeforeUpdate.Id; _carRepositoryCache.GetAllCars().Returns(new List <Car>() { carBeforeUpdate }); await _carRepository.Update(Arg.Any <Car>()); _requestMapper.Map(Arg.Any <UpdateCarRequest>()).Returns(carAfterUpdate); // Act. var response = await _sut.Update(request); // Assert. response.Should().Be(carAfterUpdate); _carRepositoryCache.Received(1).InvalidateCache(); _carRepository.Received(1).Update(Arg.Is <Car>(carAfterUpdate)); }
public async Task <Car> Update(IUpdateCarRequest updateCarRequest) { // TODO: We need Get by id in repository. var allCars = await _carRepositoryCache.GetAllCars(); var carToUpdate = allCars.Where(c => c.Id == updateCarRequest.Id).FirstOrDefault(); if (carToUpdate == null) { throw new HttpResponseException(System.Net.HttpStatusCode.BadRequest); } var mappedRequest = _updateCarRequestMapper.Map(updateCarRequest); await _carRepository.Update(mappedRequest); _carRepositoryCache.InvalidateCache(); return(mappedRequest); }