public void DeletePhotoItemTest()
        {
            var item = _repository.ReadPhotoItems().FirstOrDefault();

            if (item == null)
            {
                //Arrange
                //Setup a PhotoItem
                var userA = new User()
                {
                    Id = 1, Name = "Teddy", Role_FK = (int)Permission.Guest
                };
                var userB = new User()
                {
                    Id = 2, Name = "Cathrine", Role_FK = (int)Permission.Administrator
                };

                PhotoItem photoitem = new PhotoItem()
                {
                    UserName = userA.Name, Info = "In the Dessert..", Country = "USA", Location = "Salt Lake City", Latitude = 1.1, Longitude = 2.2, TimeStamp = DateTime.Now, Photo = new Photo()
                    {
                        Binary = new byte[] { 1, 0, 1 }
                    }
                };
                _repository.CreateOrUpdatePhotoItem(photoitem);

                var commentA = new Comment()
                {
                    Text = "What a day!", UserName = userA.Name, TimeStamp = DateTime.Now
                };
                var commentB = new Comment()
                {
                    Text = "Good photo", UserName = userB.Name, TimeStamp = DateTime.Now
                };

                //Act
                photoitem.AddComment(commentA);
                photoitem.AddComment(commentB);

                _repository.CreateOrUpdatePhotoItem(photoitem);
            }

            item = _repository.ReadPhotoItems().FirstOrDefault();

            _repository.DeletePhotoItem(item);

            var context       = new EFDbContext();
            var itemresult    = context.PhotoItems.Find(item.Id);
            var photoresult   = context.Photos.Find(item.Id);
            var commentresult = context.Comments.Where(p => p.PhotoItem_FK == item.Id);

            Assert.IsNull(itemresult);
            Assert.IsNull(photoresult);
            Assert.IsEmpty(commentresult);
        }
        public void CreatePhotoItemWithCommentsTest()
        {
            //Arrange
            //Setup a PhotoItem
            var userA = new User()
            {
                Id = 1, Name = "Teddy", Role_FK = (int)Permission.Guest
            };
            var userB = new User()
            {
                Id = 2, Name = "Cathrine", Role_FK = (int)Permission.Administrator
            };

            PhotoItem photoitem = new PhotoItem()
            {
                UserName = userA.Name, Info = "In the Dessert..", Country = "USA", Location = "Salt Lake City", Latitude = 1.1, Longitude = 2.2, TimeStamp = DateTime.Now, Photo = new Photo()
                {
                    Binary = new byte[] { 1, 0, 1 }
                }
            };

            _repository.CreateOrUpdatePhotoItem(photoitem);

            var commentA = new Comment()
            {
                Text = "What a day!", UserName = userA.Name, TimeStamp = DateTime.Now
            };
            var commentB = new Comment()
            {
                Text = "Good photo", UserName = userB.Name, TimeStamp = DateTime.Now
            };

            //Act
            photoitem.AddComment(commentA);
            photoitem.AddComment(commentB);

            _repository.CreateOrUpdatePhotoItem(photoitem);

            //Assert
            PhotoItem result = _repository.ReadPhotoItem(photoitem.Id);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Comments.Count == 2);
        }
        public void UpdateCommentsTest()
        {
            //Arrange
            var context = new EFDbContext();

            var userA = new User()
            {
                Id = 1, Name = "Bill"
            };
            var userB = new User()
            {
                Id = 2, Name = "Steven"
            };
            var commentA = new Comment()
            {
                Text = "Lovely dress!", UserName = userB.Name, TimeStamp = DateTime.Now
            };
            PhotoItem photoitem = new PhotoItem()
            {
                UserName = userA.Name, Info = "Inside Opera", Country = "Australia", Location = "Sidney", Latitude = 11.2, Longitude = 2.6, TimeStamp = DateTime.Now, Photo = new Photo()
                {
                    Binary = new byte[] { 1, 0, 1 }
                }
            };

            photoitem.AddComment(commentA);

            _repository.CreateOrUpdatePhotoItem(photoitem);

            //Act
            var comment = _repository.ReadComments().FirstOrDefault();

            comment.Text = "Changed my mind about your dress! It is amazing!";

            _repository.UpdateComment(comment);

            var result = context.Comments.Where(x => x.Id == comment.Id).FirstOrDefault();

            Assert.AreEqual("Changed my mind about your dress! It is amazing!", result.Text);
        }