From 85baeddac483d575cc6488f984a4355ddee4e8be Mon Sep 17 00:00:00 2001 From: Matthieu Jacquot Date: Sun, 5 Aug 2018 22:38:11 +0200 Subject: [PATCH] test article filters --- domain/article.go | 1 + domain/article_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/domain/article.go b/domain/article.go index f5d4e46..368da67 100644 --- a/domain/article.go +++ b/domain/article.go @@ -87,6 +87,7 @@ func (article *Article) UpdateComments(comment Comment, add bool) { } } } + func (article *Article) UpdateFavoritedBy(user User, add bool) { if add { article.FavoritedBy = append(article.FavoritedBy, user) diff --git a/domain/article_test.go b/domain/article_test.go index dbb06df..c3ef260 100644 --- a/domain/article_test.go +++ b/domain/article_test.go @@ -26,3 +26,29 @@ func TestArticleCollection_ApplyLimitAndOffset(t *testing.T) { assert.Equal(t, domain.ArticleCollection{}, articles.ApplyLimitAndOffset(-1, 0)) }) } + +func TestArticleHasAuthor(t *testing.T) { + filter := domain.ArticleHasAuthor("author") + assert.True(t, filter(domain.Article{Author: domain.User{Name: "author"}})) + assert.False(t, filter(domain.Article{Author: domain.User{Name: "otherAuthor"}})) +} + +func TestArticleHasTag(t *testing.T) { + filter := domain.ArticleHasTag("tag") + assert.True(t, filter(domain.Article{TagList: []string{"tag"}})) + assert.False(t, filter(domain.Article{TagList: []string{"otherTag"}})) +} + +func TestArticleIsFavoritedBy(t *testing.T) { + t.Run("with userName", func(t *testing.T) { + filter := domain.ArticleIsFavoritedBy("user") + assert.True(t, filter(domain.Article{FavoritedBy: []domain.User{{Name: "user"}}})) + assert.False(t, filter(domain.Article{FavoritedBy: []domain.User{{Name: "otherUser"}}})) + assert.False(t, filter(domain.Article{FavoritedBy: []domain.User{{Name: ""}}})) + }) + + t.Run("without username", func(t *testing.T) { + emptyFilter := domain.ArticleIsFavoritedBy("") + assert.False(t, emptyFilter(domain.Article{FavoritedBy: []domain.User{{Name: ""}}})) // always returns false + }) +}