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)); }
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); }
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); }
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); }
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); }
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); }
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)); }
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)); }
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); }
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); }
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); }
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); }
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, }); }
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)); }
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); }
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 }); }
public Task <ItemResponse> EditItemAsync(EditItemRequest request) { throw new NotImplementedException(); }