Beispiel #1
0
        public void CorrectlyAddLikeToImage_WhenPassedParamsAreValid()
        {
            // Arrange
            var contextMock        = new Mock <ITravelGuideContext>();
            var imageFactoryMock   = new Mock <IGalleryImageFactory>();
            var commentFactoryMock = new Mock <IGalleryCommentFactory>();
            var likeFactoryMock    = new Mock <IGalleryLikeFactory>();

            var image = new GalleryImage();
            var like  = new GalleryLike();
            var user  = new User();

            like.UserId = Guid.NewGuid();

            user.Id = Guid.NewGuid().ToString();
            contextMock.Setup(x => x.Users.Find(It.IsAny <string>())).Returns(user);
            likeFactoryMock.Setup(x => x.CreateGalleryLike(It.IsAny <Guid>(), It.IsAny <Guid>())).Returns(like);
            contextMock.Setup(x => x.GalleryImages.Find(It.IsAny <Guid>())).Returns(image);

            var id      = "some id";
            var imageId = Guid.NewGuid();

            var service = new GalleryImageService(contextMock.Object, imageFactoryMock.Object, likeFactoryMock.Object, commentFactoryMock.Object);

            // Act
            service.ToggleLike(id, imageId);

            // Assert
            Assert.AreSame(like, image.Likes.First());
        }
Beispiel #2
0
        public void CorrectlyRemoveLikeFromImage_WhenPassedParamsAreValid()
        {
            // Arrange
            var contextMock        = new Mock <ITravelGuideContext>();
            var imageFactoryMock   = new Mock <IGalleryImageFactory>();
            var commentFactoryMock = new Mock <IGalleryCommentFactory>();
            var likeFactoryMock    = new Mock <IGalleryLikeFactory>();

            var image = new GalleryImage();
            var like  = new GalleryLike();
            var user  = new User();

            image.Likes.Add(like);
            var initialCount = image.Likes.Count();

            var id      = "id";
            var imageId = Guid.NewGuid();

            like.UserId = Guid.Parse(user.Id);

            contextMock.Setup(x => x.Users.Find(It.IsAny <string>())).Returns(user);
            likeFactoryMock.Setup(x => x.CreateGalleryLike(It.IsAny <Guid>(), It.IsAny <Guid>())).Returns(like);
            contextMock.Setup(x => x.GalleryImages.Find(It.IsAny <Guid>())).Returns(image);
            contextMock.Setup(x => x.GalleryLikes.Remove(like));

            var service = new GalleryImageService(contextMock.Object, imageFactoryMock.Object, likeFactoryMock.Object, commentFactoryMock.Object);

            // Act
            service.ToggleLike(id, imageId);

            // Assert
            contextMock.Verify(x => x.GalleryLikes.Remove(like), Times.Once);
        }
Beispiel #3
0
        public void ToggleLike(string id, Guid imageId)
        {
            if (string.IsNullOrEmpty(id))
            {
                throw new ArgumentNullException();
            }

            var userId = Guid.Parse(this.context.Users.Find(id).Id);
            var like   = this.likeFactory.CreateGalleryLike(userId, imageId);
            var image  = this.context.GalleryImages.Find(imageId);

            GalleryLike dbLike = null;

            foreach (var item in image.Likes)
            {
                if (item.UserId == userId)
                {
                    dbLike = item;
                    break;
                }
            }

            if (dbLike != null)
            {
                this.context.GalleryLikes.Remove(dbLike);
            }
            else
            {
                image.Likes.Add(like);
            }

            this.context.SaveChanges();
        }