Exemple #1
0
        public async Task <ItemResponse> EditItemAsync(EditItemRequest request)
        {
            Item existingRecord = await _itemRespository.GetAsync(request.Id);

            if (existingRecord == null)
            {
                throw new ArgumentException($"Entity with {request.Id} is not present");
            }

            Genre existingGenre = await _genreRespository.GetAsync(request.GenreId);

            if (existingGenre == null)
            {
                throw new NotFoundException($"Genre with {request.GenreId} is not present");
            }

            Artist existingArtist = await _artistRespository.GetAsync(request.ArtistId);

            if (existingArtist == null)
            {
                throw new NotFoundException($"Artist with {request.ArtistId} is not present");
            }

            Item entity = _itemMapper.Map(request);
            Item result = _itemRespository.Update(entity);

            int modifiedRecords = await _itemRespository.UnitOfWork.SaveChangesAsync();

            _logger.LogInformation(Logging.Events.Edit, Messages.NumberOfRecordAffected_modifiedRecords, modifiedRecords);
            _logger.LogInformation(Logging.Events.Edit, Messages.ChangesApplied_id, result?.Id);

            return(_itemMapper.Map(result));
        }
Exemple #2
0
        public async Task update_should_modify_existing_item(EditItemRequest request)
        {
            //var request = new EditItemRequest
            //{
            //     Id = new Guid("b5b05534-9263-448c-a69e-0bbd8b3eb90e"),
            //    Name = "Test album",
            //    Description = "Description updated",
            //    LabelName = "Label name",
            //    Price = new Price { Amount = 50, Currency = "EUR" },
            //    PictureUri = "https://mycdn.com/pictures/32423423",
            //    ReleaseDate = DateTimeOffset.Now,
            //    AvailableStock = 6,
            //    GenreId = new Guid("c04f05c0-f6ad-44d1-a400-3375bfb5dfd6"),
            //    ArtistId = new Guid("f08a333d-30db-4dd1-b8ba-3b0473c7cdab"),
            //};

            var client = _factory.CreateClient();

            var httpContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            var response    = await client.PutAsync($"/api/items/{request.Id}", httpContent);

            response.EnsureSuccessStatusCode();

            var responseContent = await response.Content.ReadAsStringAsync();

            var responseEntity = JsonConvert.DeserializeObject <Item>(responseContent);

            responseEntity.Name.ShouldBe(request.Name);
            responseEntity.Description.ShouldBe(request.Description);
            responseEntity.GenreId.ShouldBe(request.GenreId);
            responseEntity.ArtistId.ShouldBe(request.ArtistId);
        }
    public async Task service_should_edit_item()
    {
        var testItem = new EditItemRequest
        {
            Id          = new Guid("b5b05534-9263-448c-a69e-0bbd8b3eb90e"),
            Name        = "Test Album",
            Description = "Description Updated",
            LabelName   = "Label Name",
            Price       = new Price {
                Amount = 15, Currency = "CAD"
            },
            PictureUri     = "http://localhost:test/image1",
            ReleaseDate    = DateTimeOffset.Now,
            AvailableStock = 6,
            GenreId        = new Guid("c04f05c0-f6ad-44d1-a400-3375bfb5dfd6"),
            ArtistId       = new Guid("f08a333d-30db-4dd1-b8ba-3b0473c7cdab")
        };

        IItemService sut    = new ItemService(_itemRepository, _mapper);
        var          result = await sut.EditItemAsync(testItem);

        result.Name.ShouldBe(testItem.Name);
        result.Description.ShouldBe(testItem.Description);
        result.GenreId.ShouldBe(testItem.GenreId);
        result.ArtistId.ShouldBe(testItem.ArtistId);
        result.Price.Amount.ShouldBe(testItem.Price.Amount);
        result.Price.Currency.ShouldBe(testItem.Price.Currency);
    }
Exemple #4
0
        public Item Map(EditItemRequest request)
        {
            if (request == null)
            {
                return(null);
            }

            var item = new Item
            {
                Id             = request.Id,
                Name           = request.Name,
                Description    = request.Description,
                LabelName      = request.LabelName,
                PictureUrl     = request.PictureUrl,
                ReleaseDate    = request.ReleaseDate,
                Format         = request.Format,
                AvailableStock = request.AvailableStock,
                GenreId        = request.GenreId,
                ArtistId       = request.ArtistId,
            };

            if (request.Price != null)
            {
                item.Price = new Price {
                    Currency = request.Price.Currency, Amount = request.Price.Amount
                };
            }

            return(item);
        }
        public async Task <IActionResult> Put(Guid id, EditItemRequest request)
        {
            request.Id = id;
            var result = await _itemService.EditItemAsync(request);

            return(Ok(result));
        }
        public Item Map(EditItemRequest request)
        {
            // Null checking
            if (request == null)
            {
                return(null);
            }
            // Mapping the request
            var item = new Item
            {
                Id             = request.Id,
                Name           = request.Name,
                Description    = request.Description,
                LabelName      = request.LabelName,
                PictureUri     = request.PictureUri,
                ReleaseDate    = request.ReleaseDate,
                Format         = request.Format,
                AvailableStock = request.AvailableStock,
                GenreId        = request.GenreId,
                ArtistId       = request.ArtistId
            };

            if (request.Price != null)
            {
                item.Price = new Price {
                    Amount = request.Price.Amount, Currency = request.Price.Currency
                };
            }

            return(item);
        }
        public async Task edititem_should_add_right_entity()
        {
            var testItem = new EditItemRequest
            {
                Id          = new Guid("b5b05534-9263-448c-a69e-0bbd8b3eb90e"),
                Name        = "Test album",
                Description = "Description",
                LabelName   = "Label name",
                Price       = new Price {
                    Amount = 13, Currency = "EUR"
                },
                PictureUrl     = "https://mycdn.com/pictures/32423423",
                ReleaseDate    = DateTimeOffset.Now,
                Format         = "Vinyl 33g",
                AvailableStock = 6,
                GenreId        = new Guid("c04f05c0-f6ad-44d1-a400-3375bfb5dfd6"),
                ArtistId       = new Guid("f08a333d-30db-4dd1-b8ba-3b0473c7cdab")
            };

            ItemService sut = new ItemService(_itemRepository, _mapper);

            var result =
                await sut.EditItemAsync(testItem);

            result.Name.ShouldBe(testItem.Name);
            result.Description.ShouldBe(testItem.Description);
            result.GenreId.ShouldBe(testItem.GenreId);
            result.ArtistId.ShouldBe(testItem.ArtistId);
            result.Price.Amount.ShouldBe(testItem.Price.Amount);
            result.Price.Currency.ShouldBe(testItem.Price.Currency);
        }
Exemple #8
0
        public void should_have_error_when_ArtistId_is_null()
        {
            var addItemRequest = new EditItemRequest {
                Price = new Price()
            };

            _validator.ShouldHaveValidationErrorFor(x => x.ArtistId, addItemRequest);
        }
        public void should_have_error_when_GenreId_is_null()
        {
            var editItemRequest = new EditItemRequest {
                Price = new Price()
            };

            _validator.ShouldHaveValidationErrorFor(x => x.GenreId, editItemRequest);
        }
    public void should_throw_error_when_genreId_is_null()
    {
        var editItemRequest = new EditItemRequest {
            Price = new Price()
        };
        var result = _validator.TestValidate(editItemRequest);

        result.ShouldHaveValidationErrorFor(x => x.GenreId);
    }
Exemple #11
0
        public async Task update_should_returns_not_found_when_item_is_not_present(EditItemRequest request)
        {
            var client = _factory.CreateClient();

            var httpContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            var response    = await client.PutAsync($"/api/items/{Guid.NewGuid()}", httpContent);

            response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
        }
Exemple #12
0
        public async Task update_should_returns_bad_request_if_genreid_not_exist(EditItemRequest request)
        {
            var client = _factory.CreateClient();

            request.GenreId = Guid.NewGuid();
            var httpContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            var response    = await client.PutAsync($"/api/items/{request.Id}", httpContent);

            response.StatusCode.ShouldBe(HttpStatusCode.BadRequest);
        }
Exemple #13
0
        public async Task Update_should_returns_not_found_when_item_is_not_present(EditItemRequest request)
        {
            HttpClient client = _factory.CreateClient();

            AddAuthToken(ref client);
            StringContent httpContent =
                new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PutAsync($"/api/items/{Guid.NewGuid()}?api-version=1.0", httpContent);

            response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
        }
        public async Task <IActionResult> EditItem([FromBody] EditItemRequest editItemRequest)
        {
            var editedItem = await _shopService.EditItemAsync(editItemRequest);

            if (!editedItem.Success)
            {
                return(BadRequest(editedItem.Errors));
            }

            return(Ok(editedItem.Response));
        }
Exemple #15
0
        public async Task <IActionResult> Put(Guid id, EditItemRequest request)
        {
            request.Id = id;
            ItemResponse result = await _itemService.EditItemAsync(request);

            HateoasResponse <ItemResponse> hateoasResult = new HateoasResponse <ItemResponse> {
                Data = result
            };
            await _linksService.AddLinksAsync(hateoasResult);

            return(Ok(hateoasResult));
        }
Exemple #16
0
        public async Task <IActionResult> Put(Guid id, EditItemRequest request)
        {
            request.Id = id;
            var result = await _itemService.EditItemAsync(request, CancellationToken.None);

            var hateoasResult = new ItemHateoasResponse {
                Data = result
            };
            await _linksService.AddLinksAsync(hateoasResult);

            return(Ok(hateoasResult));
        }
        public void should_have_error_when_GenreId_doesnt_exist()
        {
            _genreServiceMock
            .Setup(x => x.GetGenreAsync(It.IsAny <GetGenreRequest>()))
            .ReturnsAsync(() => null);

            var editItemRequest = new EditItemRequest {
                Price = new Price(), GenreId = Guid.NewGuid()
            };

            _validator.ShouldHaveValidationErrorFor(x => x.GenreId, editItemRequest);
        }
Exemple #18
0
        public void should_have_error_when_ArtistId_doesnt_exist()
        {
            _artistServiceMock
            .Setup(x => x.GetArtistAsync(It.IsAny <GetArtistRequest>()))
            .ReturnsAsync(() => null);

            var addItemRequest = new EditItemRequest {
                Price = new Price(), ArtistId = Guid.NewGuid()
            };

            _validator.ShouldHaveValidationErrorFor(x => x.ArtistId, addItemRequest);
        }
Exemple #19
0
        public async Task <ItemResponse> EditItemAsync(EditItemRequest request)
        {
            var existingRecord = await _itemRepository.GetAsync(request.Id);

            if (existingRecord == null)
            {
                throw new ArgumentException($"Entity with {request.Id} is not present");
            }

            var entity = _itemMapper.Map(request);
            var result = _itemRepository.Update(entity);

            return(_itemMapper.Map(result));
        }
        public async Task edititem_should_add_right_entity(EditItemRequest request)
        {
            var sut = new ItemService(_itemRepository, _mapper, _logger.Object, new ConnectionFactory(), new EventBusSettings());

            var result =
                await sut.EditItemAsync(request);

            result.Name.ShouldBe(request.Name);
            result.Description.ShouldBe(request.Description);
            result.GenreId.ShouldBe(request.GenreId);
            result.ArtistId.ShouldBe(request.ArtistId);
            result.Price.Amount.ShouldBe(request.Price.Amount);
            result.Price.Currency.ShouldBe(request.Price.Currency);
        }
        public async Task edititem_should_add_right_entity(EditItemRequest request)
        {
            var sut = new ItemService(_itemRepository, _mapper, _logger.Object);

            var result =
                await sut.EditItemAsync(request, CancellationToken.None);

            result.Name.ShouldBe(request.Name);
            result.Description.ShouldBe(request.Description);
            result.GenreId.ShouldBe(request.GenreId);
            result.ArtistId.ShouldBe(request.ArtistId);
            result.Price.Amount.ShouldBe(request.Price.Amount);
            result.Price.Currency.ShouldBe(request.Price.Currency);
        }
Exemple #22
0
        public async Task Update_should_modify_existing_item(EditItemRequest request)
        {
            var client      = _factory.CreateClient();
            var httpContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            var response    = await client.PutAsync($"api/items/{request.Id}", httpContent);

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var entity = JsonConvert.DeserializeObject <Item>(content);

            entity.Name.ShouldBe(request.Name);
            entity.Description.ShouldBe(request.Description);
            entity.GenreId.ShouldBe(request.GenreId);
            entity.ArtistId.ShouldBe(request.ArtistId);
        }
Exemple #23
0
 public Item Map(EditItemRequest request)
 {
     return(new Item
     {
         Id = request.Id,
         Name = request.Name,
         Description = request.Description,
         LabelName = request.LabelName,
         Price = new Price {
             Amount = request.Price.Amount, Currency = request.Price.Currency
         },
         PictureUri = request.PictureUri,
         ReleaseDate = request.ReleaseDate,
         Format = request.Format,
         AvailableStock = request.AvailableStock,
         GenreId = request.GenreId,
         ArtistId = request.ArtistId,
     });
 }
Exemple #24
0
        public async Task <ItemResponse> EditItemAsync(EditItemRequest request, CancellationToken cancellationToken)
        {
            var existingRecord = await _itemRepository.GetAsync(request.Id);

            if (existingRecord == null)
            {
                throw new ArgumentException($"Entity with {request.Id} is not present");
            }

            var entity = _itemMapper.Map(request);
            var result = _itemRepository.Update(entity);

            var modifiedRecords = await _itemRepository.UnitOfWork.SaveChangesAsync(cancellationToken);

            _logger.LogInformation(Events.Edit, Messages.NumberOfRecordAffected_modifiedRecords,
                                   modifiedRecords);
            _logger.LogInformation(Events.Edit, Messages.ChangesApplied_id, result?.Id);

            return(_itemMapper.Map(result));
        }
Exemple #25
0
        public async Task edititem_should_add_right_entity()
        {
            var testItem = new EditItemRequest
            {
                Id       = new Guid("b5b05534-9263-448c-a69e-0bbd8b3eb90e"),
                Name     = "Test album",
                GenreId  = new Guid("c04f05c0-f6ad-44d1-a400-3375bfb5dfd6"),
                ArtistId = new Guid("f08a333d-30db-4dd1-b8ba-3b0473c7cdab"),
                Price    = new Price {
                    Amount = 13, Currency = "EUR"
                },
            };

            IItemService stu    = new ItemService(_itemRepository, _mapper);
            var          result = await stu.EditItemAsync(testItem);

            result.Name.ShouldBe(testItem.Name);
            result.Description.ShouldBe(testItem.Description);
            result.GenreId.ShouldBe(testItem.GenreId);
            result.ArtistId.ShouldBe(testItem.ArtistId);
            result.Price.Amount.ShouldBe(testItem.Price.Amount);
            result.Price.Currency.ShouldBe(testItem.Price.Currency);
        }
Exemple #26
0
        public async Task Update_should_modify_existing_items(EditItemRequest request)
        {
            HttpClient client = _factory.CreateClient();

            AddAuthToken(ref client);
            StringContent httpContent =
                new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PutAsync($"/api/items/{request.Id}?api-version=1.0", httpContent);

            response.EnsureSuccessStatusCode();

            string responseContent = await response.Content.ReadAsStringAsync();

            RespContainer <ItemResponse> responseEntity = JsonConvert.DeserializeObject <RespContainer <ItemResponse> >(responseContent);

            responseEntity.Error.ShouldBeFalse();
            responseEntity.Data.Name.ShouldBe(request.Name);
            responseEntity.Data.Description.ShouldBe(request.Description);
            responseEntity.Data.Format.ShouldBe(request.Format);
            responseEntity.Data.PictureUri.ShouldBe(request.PictureUri);
            responseEntity.Data.GenreId.ShouldBe(request.GenreId);
            responseEntity.Data.ArtistId.ShouldBe(request.ArtistId);
        }
        public async Task <ResponseResult <ItemResponse> > EditItemAsync(EditItemRequest requestItem)
        {
            var item = _mapper.Map <Item>(requestItem);

            item.UpdatedAt = DateTimeOffset.UtcNow;

            var editedItem = await _shopRepository.EditItemAsync(item);

            if (editedItem == null)
            {
                return(new ResponseResult <ItemResponse>
                {
                    Errors = new[] { "Item not found" }
                });
            }

            var mappedEditedItem = _mapper.Map <ItemResponse>(editedItem);

            return(new ResponseResult <ItemResponse>
            {
                Success = true,
                Response = mappedEditedItem
            });
        }
Exemple #28
0
 public Task <ItemResponse> EditItemAsync(EditItemRequest request)
 {
     throw new NotImplementedException();
 }