public async Task ShouldRemoveConversation()
        {
            // Arrange
            FbHookChange change = MakeFbHookChangeForRemovingPost();
            var          dependencyResolverMock  = new Mock <IDependencyResolver>();
            var          conversationServiceMock = new Mock <IConversationService>();

            conversationServiceMock.Setup(t => t.FindAll()).Returns(new List <Conversation> {
                new Conversation {
                    Id = 1, OriginalId = change.Value.PostId
                }
            }.AsQueryable());
            dependencyResolverMock.Setup(t => t.Resolve <IConversationService>()).Returns(conversationServiceMock.Object);
            var strategry     = new RemoveVisitorPostStrategy(dependencyResolverMock.Object);
            var socialAccount = new SocialAccount {
                Token = "token"
            };

            // Act
            var processResult = await strategry.Process(socialAccount, change);

            // Assert
            Assert.Equal(1, processResult.DeletedConversations.Count());
            var conversation = processResult.DeletedConversations.First();

            Assert.Equal(1, conversation.Id);
        }
        public async Task ShouldIgnoreIfConversationNotExists()
        {
            // Arrange
            FbHookChange change = MakeFbHookChangeForRemovingPost();
            var          dependencyResolverMock  = new Mock <IDependencyResolver>();
            var          conversationServiceMock = new Mock <IConversationService>();

            conversationServiceMock.Setup(t => t.FindAll()).Returns(new List <Conversation>().AsQueryable());
            dependencyResolverMock.Setup(t => t.Resolve <IConversationService>()).Returns(conversationServiceMock.Object);
            var strategry     = new RemoveVisitorPostStrategy(dependencyResolverMock.Object);
            var socialAccount = new SocialAccount {
                Token = "token"
            };

            // Act
            var processResult = await strategry.Process(socialAccount, change);

            // Assert
            Assert.Equal(0, processResult.DeletedConversations.Count());
        }
        public void ShouldNotMatchStrategy()
        {
            // Arrange
            var dependencyResolverMock = new Mock <IDependencyResolver>();
            var strategy     = new RemoveVisitorPostStrategy(dependencyResolverMock.Object);
            var fbHookChange = new FbHookChange
            {
                Field = "feed",
                Value = new FbHookChangeValue
                {
                    Item   = "post",
                    PostId = "post_1",
                    Verb   = "add"
                }
            };

            // Act
            bool isMatch = strategy.IsMatch(fbHookChange);

            // Assert
            Assert.False(isMatch);
        }