void AddArticle_AddsArticle()
        {
            var repo    = new InMemoryPostedArticlesRepository();
            var article = new Article();

            repo.AddArticle(article);

            Assert.Contains(article, repo.PostedArticles);
        }
        [InlineData(2, NewsSource.IndexHr, true)]  // Different source, different guid
        void AddArticle_ContainsGuidAndSource_DoesNotAddArticle(int guid, NewsSource source, bool articleGetsAdded)
        {
            var repo = new InMemoryPostedArticlesRepository();

            repo.PostedArticles.Add(GetTestArticle(guid));
            var article = GetTestArticle(1, source);

            repo.AddArticle(article);

            Assert.Equal(articleGetsAdded, repo.PostedArticles.Contains(article));
        }
        void AddArticle_RepoContainsArticleWithMoreThan5MatchingWords_DoesNotAddArticle(bool articleGetsAdded, params string[] keywords)
        {
            var repo = new InMemoryPostedArticlesRepository();

            repo.PostedArticles.Add(new Article {
                KeywordsList = keywords, Guid = 1
            });
            var article = GetTestArticle(2, "test1", "test2", "test3", "test4", "test5", "test6", "test7");

            repo.AddArticle(article);

            Assert.Equal(articleGetsAdded, repo.PostedArticles.Contains(article));
        }
        void AddArticle_NumberOfArticlesContained_RemainsAt50Articles(int numberOfArticles)
        {
            var repo = new InMemoryPostedArticlesRepository();

            for (int i = 0; i < numberOfArticles; i++)
            {
                repo.PostedArticles.Add(GetTestArticle(1));
            }

            repo.AddArticle(GetTestArticle());

            Assert.True(repo.PostedArticles.Count == 50);
        }
        void AddArticle_MoreThan50Articles_RemovesOldestArticle()
        {
            var repo          = new InMemoryPostedArticlesRepository();
            var oldestArticle = GetTestArticle(1);

            repo.PostedArticles.Add(oldestArticle);
            var secondOldestArticle = GetTestArticle();

            repo.PostedArticles.Add(secondOldestArticle);
            for (int i = 0; i < 49; i++)
            {
                repo.PostedArticles.Add(GetTestArticle());
            }

            repo.AddArticle(GetTestArticle(2));
            repo.AddArticle(GetTestArticle(3));

            Assert.DoesNotContain(oldestArticle, repo.PostedArticles);
            Assert.DoesNotContain(secondOldestArticle, repo.PostedArticles);
        }