public IActionResult Edit(int id) { if (id < 1) { return(NotFound()); } var content = _db.Content .Include(t => t.AttrValues) .ThenInclude(av => av.Attr) .FirstOrDefault(t => t.Id == id); if (content == null) { return(NotFound()); } var contentType = _db.ContentTypes .Include(t => t.Attrs) .First(t => t.Id == content.EntityTypeId); var model = new EditContentDto { Id = content.Id, ContentTypeId = content.EntityTypeId, Attrs = contentType.Attrs == null || !contentType.Attrs.Any() ? new List <AttributeValueDto>() : contentType.Attrs .Select(a => CreateAttributeValue(a, content)) .ToList() }; return(View(model)); }
public void Edit_Test_Post_InvalidContentTypeOrAttributeId() { var mockRepo = new Mock <DevCmsDb>(); mockRepo.SetupDbSetMock(db => db.Content, GetContentList()); mockRepo.SetupDbSetMock(db => db.ContentTypes, GetContentTypeList()); var controller = new ContentController(mockRepo.Object); var model = new EditContentDto { ContentTypeId = 11 }; var result = controller.Edit(model); Assert.IsType <NotFoundResult>(result); model = new EditContentDto { ContentTypeId = 1, Attrs = new List <AttributeValueDto> { new AttributeValueDto { AttributeId = 44 } } }; result = controller.Edit(model); Assert.IsType <NotFoundResult>(result); }
public void Edit_Test_Post_InvalidModel() { var mockRepo = new Mock <DevCmsDb>(); mockRepo.SetupDbSetMock(db => db.Content, GetContentList()); mockRepo.SetupDbSetMock(db => db.ContentTypes, GetContentTypeList()); var controller = new ContentController(mockRepo.Object); controller.ModelState.AddModelError("Name", "Required"); var model = new EditContentDto { Id = 1, ContentTypeId = 1, Attrs = new List <AttributeValueDto> { new AttributeValueDto { Id = 1, AttributeId = 1, Value = "attr value 1" } } }; var result = controller.Edit(model); var viewResult = Assert.IsType <ViewResult>(result); var resultModel = Assert.IsAssignableFrom <EditContentDto>( viewResult.ViewData.Model); Assert.Equal(1, resultModel.Id); Assert.Equal(1, resultModel.ContentTypeId); Assert.Equal("attr value 1", resultModel.Attrs.First().Value); }
public async Task EditContent(EditContentDto input) { var content = await _contentRepository.FindAsync(input.Id); _mapper.Map(content, input); await _contentRepository.UpdateAsync(content); }
public void Edit_Test_Post_RequireImage() { var mockRepo = new Mock <DevCmsDb>(); mockRepo.SetupDbSetMock(db => db.Content, GetContentList()); mockRepo.SetupDbSetMock(db => db.ContentTypes, GetContentTypeList2()); var controller = new ContentController(mockRepo.Object); var fileName = "test.png"; var model = new EditContentDto { Id = 1, ContentTypeId = 1, Attrs = new List <AttributeValueDto> { new AttributeValueDto { Id = 2, AttributeId = 12, AttributeType = AttrType.Image, ValueAsImage = CreateFile(fileName), Required = true } } }; Assert.False(mockRepo.Object.Content .First() .AttrValues .Any(av => av.AttrId == 12 && av.ValueAsFile.FileName == fileName)); var result = controller.Edit(model); var viewResult = Assert.IsType <RedirectToActionResult>(result); Assert.Equal("Index", viewResult.ActionName); mockRepo.Verify(db => db.SaveChanges(), Times.Once()); Assert.Equal(1, mockRepo.Object.Content.Count()); Assert.True(mockRepo.Object.Content .First() .AttrValues .Any(av => av.AttrId == 12 && av.ValueAsFile.FileName == fileName)); }
public IActionResult Edit(EditContentDto model) { if (ModelState.IsValid) { var content = _db.Content .Include(i => i.AttrValues) .FirstOrDefault(i => i.Id == model.Id); if (content == null) { //todo: to log return(NotFound()); } //todo: I suppose to remove this validation: var contentType = _db.ContentTypes .Include(t => t.Attrs) .FirstOrDefault(t => t.Id == model.ContentTypeId); if (!AllAttrsExists(model.Attrs, contentType)) { return(NotFound()); } foreach (var modelAv in model.Attrs) { var av = content.AttrValues .FirstOrDefault(dbAv => dbAv.AttrId == modelAv.AttributeId); if (av == null) { content.AttrValues.Add(CreateAttribute(modelAv)); } else { EditAttribute(av, modelAv); } } _db.SaveChanges(); return(RedirectToAction(nameof(Index), new { id = model.ContentTypeId })); } return(View(model)); }
public void EditAfterNewAttrsAdded_Test_Post() { var mockRepo = new Mock <DevCmsDb>(); mockRepo.SetupDbSetMock(db => db.Content, GetContentList()); mockRepo.SetupDbSetMock(db => db.ContentTypes, GetContentTypeList2()); var controller = new ContentController(mockRepo.Object); var model = new EditContentDto { Id = 1, ContentTypeId = 1, Attrs = new List <AttributeValueDto> { new AttributeValueDto { Id = 1, AttributeId = 11, Value = "333", AttributeType = AttrType.String }, new AttributeValueDto { AttributeId = 12, AttributeType = AttrType.Image } } }; Assert.Single(mockRepo.Object.Content); var result = controller.Edit(model); var viewResult = Assert.IsType <RedirectToActionResult>(result); Assert.Equal("Index", viewResult.ActionName); mockRepo.Verify(db => db.SaveChanges(), Times.Once()); Assert.Equal(1, mockRepo.Object.Content.Count()); Assert.Equal(2, mockRepo.Object.Content.First().AttrValues.Count); }