Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        public async Task EditContent(EditContentDto input)
        {
            var content = await _contentRepository.FindAsync(input.Id);

            _mapper.Map(content, input);
            await _contentRepository.UpdateAsync(content);
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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);
        }