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());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
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);
        }