Beispiel #1
0
        private static PostQuery GetPostQueryService(DbContext dbContext,
                                                     IElasticClient elasticClient)
        {
            var readSocialListsRepository = new ReadSocialListsRepository(dbContext);
            var readPeopleRepository      = new ReadPeopleRepository(dbContext);
            var postSearchValidator       = new PostSearchRequestValidator(readSocialListsRepository, readPeopleRepository);
            var postRepository            = new ReadPostRepository(elasticClient);

            var postQuery = new PostQuery(postRepository, readSocialListsRepository, postSearchValidator);

            return(postQuery);
        }
Beispiel #2
0
        public PostSearchSteps(ScenarioContext scenarioContext)
        {
            _scenarioContext   = scenarioContext;
            _mockElasticClient = new Mock <IElasticClient>();

            var mockSearchResponse = new Mock <ISearchResponse <Post> >();

            mockSearchResponse.Setup(x => x.Documents).Returns(new List <Post>());

            _mockElasticClient
            .Setup(x => x.SearchAsync <Post>(It.IsAny <SearchRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(mockSearchResponse.Object);

            _esReadPostRepository = new ReadPostRepository(_mockElasticClient.Object);
        }
        public async Task Should_find_all_posts_by_author(string author, int expectCount)
        {
            var mockClient = new MockElasticClient <PostSource>(
                new[] {
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        author = "Mozilla"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        author = "Mozilla"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        author = "Mozilla"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        author = "Google"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        author = "Google"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        author = "Apple"
                    }
                },
            }, "posts");
            var repository = new ReadPostRepository(mockClient.ElasticClient);

            var result = await repository.SearchAsync(new PostFilter(),
                                                      CancellationToken.None);

            result.Count(x => x.Author == author).Should().Be(expectCount);
        }
        public async Task Should_find_all_posts_by_the_content(string term, int expectCount)
        {
            var mockClient = new MockElasticClient <PostSource>(
                new[] {
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        content = "Firefox"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        content = "Firefox"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        content = "Firefox"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        content = "Chrome"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        content = "Chrome"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        content = "Safari"
                    }
                },
            }, "posts");
            var repository = new ReadPostRepository(mockClient.ElasticClient);

            var result = await repository.SearchAsync(new PostFilter(),
                                                      CancellationToken.None);

            result.Count(x => x.Content == term).Should().Be(expectCount);
        }
        public async Task Should_find_all_posts_by_link(string link, int expectCount)
        {
            var mockClient = new MockElasticClient <PostSource>(
                new[] {
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        link = "twitter.com"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        link = "linkedin.com"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        link = "twitter.com"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        link = "facebook.com"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        link = "twitter.com"
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        link = "linkedin.com"
                    }
                },
            }, "posts");
            var repository = new ReadPostRepository(mockClient.ElasticClient);

            var result = await repository.SearchAsync(new PostFilter(),
                                                      CancellationToken.None);

            result.Count(x => x.Link == link).Should().Be(expectCount);
        }
        public async Task Should_find_all_posts_by_date(string dateStr, int expectCount)
        {
            var mockClient = new MockElasticClient <PostSource>(
                new[] {
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        date = DateTime.Parse("2020-05-31")
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        date = DateTime.Parse("2020-05-31")
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        date = DateTime.Parse("2019-05-31")
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        date = DateTime.Parse("2018-05-31")
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        date = DateTime.Parse("2018-05-31")
                    }
                },
                new BaseIndexedEntry <PostSource> {
                    id = Guid.NewGuid(), source = new PostSource {
                        date = DateTime.Parse("2018-05-31")
                    }
                },
            }, "posts");
            var repository = new ReadPostRepository(mockClient.ElasticClient);

            var result = await repository.SearchAsync(new PostFilter(),
                                                      CancellationToken.None);

            result.Count(x => x.Date == DateTime.Parse(dateStr)).Should().Be(expectCount);
        }