private DestinationService SetupGetDetailsSut()
        {
            var usersRepoBuilder = new GoUserRepositoryBuilder();
            var usersRepo        = usersRepoBuilder
                                   .WithAll()
                                   .Build();

            var commentsRepoBuilder = new CommentsRepositoryBuilder();
            var commentsRepo        = commentsRepoBuilder
                                      .WithAll()
                                      .Build();

            var storiesRepoBuilder = new StoriesRepositoryBuilder();
            var storiesRepo        = storiesRepoBuilder
                                     .WithAll()
                                     .Build();

            var peopleStoriesRepoBuilder = new PeopleStoriesRepositoryBuilder();
            var peopleStoriesRepo        = peopleStoriesRepoBuilder
                                           .WithAll()
                                           .Build();

            var destUsersRepoBuilder = new DestinationsUsersRepositoryBuilder();
            var destUserRepo         = destUsersRepoBuilder
                                       .WithAll()
                                       .Build();

            var destRepoBuilder = new DestinationsRepositoryBuilder();
            var destRepo        = destRepoBuilder
                                  .WithAll()
                                  .Build();

            return(new DestinationService(destRepo, destUserRepo, peopleStoriesRepo, commentsRepo, storiesRepo, usersRepo, null, Mapper));
        }
        public async Task DeletComments_ShouldDeleteDestinationCommentsCorrectly()
        {
            List <Comment> deletedComments     = new List <Comment>();
            var            commentsRepoBuilder = new CommentsRepositoryBuilder();

            commentsRepoBuilder.CommentsRepoMock.Setup(r => r.Delete(It.IsAny <Comment>()))
            .Callback <Comment>(c => deletedComments.Add(c));

            var commentsRepo = commentsRepoBuilder
                               .WithAll()
                               .Build();

            var sut = new DestinationService(null, null, null, commentsRepo, null, null, null, Mapper);

            await sut.DeleteComments("2");

            Assert.Equal(3, deletedComments.Count);
            deletedComments.ForEach(c => Assert.Equal("2", c.DestinationId));
            commentsRepoBuilder.CommentsRepoMock.Verify(c => c.Delete(It.IsAny <Comment>()), Times.Exactly(3));
            commentsRepoBuilder.CommentsRepoMock.Verify(c => c.SaveChangesAsync(), Times.Once);
        }
        public void GetDetails_ShouldReturnCorrect_ListFromCommentViewModels_AllComments()
        {
            var user = new GoUser {
                Id = "1"
            };

            var sut = SetupGetDetailsSut();

            var actual = sut.GetDetails("2", user);

            var expected = new DestDetailsViewModel
            {
                Id          = "2",
                Description = "aaa",
                Creator     = "Niki",
                Image       = new byte[0],
                Stories     = new List <StoryViewModel>(),
                CurrentUser = Mapper.Map <CurrentUserViewModel>(user),
                AllComments = CommentsRepositoryBuilder.CreateComments().Where(x => x.DestinationId == "2").Select(x => Mapper.Map <CommentViewModel>(x)).ToList()
            };

            Assert.Equal(expected.AllComments, actual.AllComments, new CommentsViewModelComparer());
        }