public async Task <IActionResult> PartialUpdate(int id, JsonPatchDocument <ProductPatchDTO> patchDoc) { if (id < 1) { return(BadRequest()); } if (patchDoc == null) { return(BadRequest(ModelState)); } var patch = new ProductPatchDTO(); patchDoc.ApplyTo(patch, ModelState); if (!TryValidateModel(patch)) { return(ValidationProblem(ModelState)); } if (!await _productsService.Update(id, patch)) { return(NotFound()); } return(NoContent()); }
public async Task <bool> Update(int id, ProductPatchDTO patch) { var product = new Product() { Id = id }; _mapper.Map(patch, product); _context.Products.Attach(product); _context.Entry(product).Property(x => x.Description).IsModified = true; return(await _context.SaveChangesAsync() > 0); }
public async Task ProductService_PartialUpdate_ChangesValue() { // arrange var context = InfrastructureBuilder.GetContext(); var service = InfrastructureBuilder.GetProductService(context); int id = 1; string value = "changed value"; var patch = new ProductPatchDTO { Description = value }; // act var result = await service.Update(id, patch); // assert Assert.True(result); var dbValue = await context.Products.AsNoTracking().Where(w => w.Id == id).Select(p => p.Description).FirstOrDefaultAsync(); Assert.Equal(value, dbValue); }