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));
        }
Beispiel #2
0
        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);
        }