public void InvokeSaveChangesOnDbContext()
        {
            var model = new ContactEditModel
            {
                FirstName = "Han",
                LastName = "Solo"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Post(model).Result;

            _mockDbContext.Verify(x => x.SaveChangesAsync(), Times.Exactly(1));
        }
        public void AddNewContactToTheDbContext()
        {
            var model = new ContactEditModel
            {
                FirstName = "Han",
                LastName = "Solo"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Post(model).Result;

            _mockDbContext.MockContactsDbSet.Verify(x => x.Add(It.IsAny<Contact>()), Times.Exactly(1));
        }
        public void ReturnNotFoundIfIdDoesntExist()
        {
            var model = new ContactEditModel
            {
                Id = 4,
                FirstName = "Han",
                LastName = "Solo"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Put(model.Id, model).Result;

            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
        public void ReturnBadRequestIfIdInParameterAndModelDoNotMatch()
        {
            var model = new ContactEditModel
            {
                Id = 3,
                FirstName = "Darth",
                LastName = "Kitty"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Put(0, model).Result;

            Assert.IsInstanceOfType(result, typeof(BadRequestResult));
        }
Пример #5
0
 public Entities.Contact Create(ContactEditModel model)
 {
     return new Entities.Contact
     {
         FirstName = model.FirstName,
         LastName = model.LastName,
         Address = model.Address,
         BirthDate = model.BirthDate,
         Favorite = model.Favorite,
         ContactInfos = model.ContactInfos == null ? new List<Entities.ContactInfo>() : model.ContactInfos.Select(x => new Entities.ContactInfo
         {
             Name = x.Name,
             Type = (ContactInfoType)Enum.Parse(typeof(ContactInfoType), x.Type, true),
             Value = x.Value
         }).ToList(),
         Tags = model.Tags == null ? new List<Entities.Tag>() : model.Tags.Select(x => new Entities.Tag
         {
             Name = x
         }).ToList()
     };
 }
Пример #6
0
        public Entities.Contact Update(ContactEditModel model, Entities.Contact entity, IContactsDbContext dbContext)
        {
            dbContext.Entry(entity).State = EntityState.Modified;

            entity.FirstName = model.FirstName;
            entity.LastName = model.LastName;
            entity.Address = model.Address;
            entity.BirthDate = model.BirthDate;
            entity.Favorite = model.Favorite;

            #region update contact infos

            if (model.ContactInfos != null)
            {
                List<Entities.ContactInfo> contactInfos = entity.ContactInfos.ToList();
                if (contactInfos.Count > 0)
                {
                    foreach (var contactInfo in contactInfos.Where(x => model.ContactInfos.Any(y => y.IsDeleted && y.Id == x.Id)))
                    {
                        dbContext.Entry(contactInfo).State = EntityState.Deleted;
                    }
                }

                foreach (var contactInfo in model.ContactInfos.Where(x => !x.IsDeleted))
                {
                    if (contactInfo.IsNew)
                    {
                        var newContactInfo = new Entities.ContactInfo
                        {
                            Name = contactInfo.Name,
                            Type = (ContactInfoType)Enum.Parse(typeof(ContactInfoType), contactInfo.Type, true),
                            Value = contactInfo.Value
                        };
                        entity.ContactInfos.Add(newContactInfo);
                        dbContext.Entry(newContactInfo).State = EntityState.Added;
                    }
                    else
                    {
                        var oldContactInfo = entity.ContactInfos.FirstOrDefault(x => x.Id == contactInfo.Id);
                        if (oldContactInfo != null)
                        {
                            oldContactInfo.Name = contactInfo.Name;
                            oldContactInfo.Type = (ContactInfoType)Enum.Parse(typeof(ContactInfoType), contactInfo.Type, true);
                            oldContactInfo.Value = contactInfo.Value;
                        }
                        dbContext.Entry(oldContactInfo).State = EntityState.Modified;
                    }
                }
            }

            #endregion

            #region update tags

            if (model.Tags != null)
            {
                List<Entities.Tag> tags = entity.Tags.ToList();
                if (tags.Count > 0)
                {
                    foreach (var tag in tags.Where(x => model.Tags.All(y => y != x.Name)))
                    {
                        dbContext.Entry(tag).State = EntityState.Deleted;
                    }
                }

                foreach (var tag in model.Tags.Where(x => entity.Tags.All(y => y.Name != x)))
                {
                    var newTag = new Tag {Name = tag};
                    entity.Tags.Add(newTag);
                    dbContext.Entry(newTag).State = EntityState.Added;
                }
            }

            #endregion

            return entity;
        }