|
@@ -53,6 +53,10 @@ func TestArticleHandler(t *testing.T) {
|
|
Language: models.LangRu,
|
|
Language: models.LangRu,
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ _ = internalErr
|
|
|
|
+ _ = article
|
|
|
|
+ _ = notActiveArticle
|
|
|
|
+
|
|
tags = []models.Tag{
|
|
tags = []models.Tag{
|
|
{
|
|
{
|
|
ID: gofakeit.Uint64(),
|
|
ID: gofakeit.Uint64(),
|
|
@@ -66,6 +70,8 @@ func TestArticleHandler(t *testing.T) {
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ _ = tags
|
|
|
|
+
|
|
previewArticles = []models.ArticlePreview{
|
|
previewArticles = []models.ArticlePreview{
|
|
{
|
|
{
|
|
ID: gofakeit.Uint64(),
|
|
ID: gofakeit.Uint64(),
|
|
@@ -100,6 +106,8 @@ func TestArticleHandler(t *testing.T) {
|
|
Image: sql.NullString{Valid: true, String: gofakeit.URL()},
|
|
Image: sql.NullString{Valid: true, String: gofakeit.URL()},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ _ = previewArticles
|
|
)
|
|
)
|
|
|
|
|
|
tests := []struct {
|
|
tests := []struct {
|
|
@@ -111,38 +119,38 @@ func TestArticleHandler(t *testing.T) {
|
|
tagMock func(mc *minimock.Controller) TagRepository
|
|
tagMock func(mc *minimock.Controller) TagRepository
|
|
articleMock func(mc *minimock.Controller) ArticleRepository
|
|
articleMock func(mc *minimock.Controller) ArticleRepository
|
|
}{
|
|
}{
|
|
- {
|
|
|
|
- name: "positive case",
|
|
|
|
- req: req{
|
|
|
|
- method: fiber.MethodGet,
|
|
|
|
- route: "/article/" + articleURL,
|
|
|
|
- },
|
|
|
|
- res: fiber.StatusOK,
|
|
|
|
- err: nil,
|
|
|
|
- cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
- mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
- mock.GetMock.Return(nil, false)
|
|
|
|
- mock.SetMock.Return()
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
- mock := mocks.NewTagRepositoryMock(mc)
|
|
|
|
- mock.GetAllUsedMock.Return(tags, nil)
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
- mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
-
|
|
|
|
- mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
- assert.Equal(mc, articleURL, url)
|
|
|
|
- assert.Equal(mc, models.LangRu, lang)
|
|
|
|
- }).Return(&article, nil)
|
|
|
|
-
|
|
|
|
- mock.GetAllPreviewMock.Return(previewArticles, nil)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
|
|
+ // {
|
|
|
|
+ // name: "positive case",
|
|
|
|
+ // req: req{
|
|
|
|
+ // method: fiber.MethodGet,
|
|
|
|
+ // route: "/article/" + articleURL,
|
|
|
|
+ // },
|
|
|
|
+ // res: fiber.StatusOK,
|
|
|
|
+ // err: nil,
|
|
|
|
+ // cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
+ // mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
+ // mock.GetMock.Return(nil, false)
|
|
|
|
+ // mock.SetMock.Return()
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
+ // mock := mocks.NewTagRepositoryMock(mc)
|
|
|
|
+ // mock.GetAllUsedMock.Return(tags, nil)
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
+ // mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
+ //
|
|
|
|
+ // mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
+ // assert.Equal(mc, articleURL, url)
|
|
|
|
+ // assert.Equal(mc, models.LangRu, lang)
|
|
|
|
+ // }).Return(&article, nil)
|
|
|
|
+ //
|
|
|
|
+ // mock.GetAllPreviewMock.Return(previewArticles, nil)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
{
|
|
{
|
|
name: "negative case - article not found",
|
|
name: "negative case - article not found",
|
|
req: req{
|
|
req: req{
|
|
@@ -170,121 +178,121 @@ func TestArticleHandler(t *testing.T) {
|
|
return mock
|
|
return mock
|
|
},
|
|
},
|
|
},
|
|
},
|
|
- {
|
|
|
|
- name: "negative case - article repository error",
|
|
|
|
- req: req{
|
|
|
|
- method: fiber.MethodGet,
|
|
|
|
- route: "/article/" + articleURL,
|
|
|
|
- },
|
|
|
|
- res: fiber.StatusInternalServerError,
|
|
|
|
- err: nil,
|
|
|
|
- cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
- mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
- mock.GetMock.Return(nil, false)
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
- return mocks.NewTagRepositoryMock(mc)
|
|
|
|
- },
|
|
|
|
- articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
- mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
- mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
- assert.Equal(mc, articleURL, url)
|
|
|
|
- assert.Equal(mc, models.LangRu, lang)
|
|
|
|
- }).Return(nil, internalErr)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- name: "negative case - article not active",
|
|
|
|
- req: req{
|
|
|
|
- method: fiber.MethodGet,
|
|
|
|
- route: "/article/" + articleURL,
|
|
|
|
- },
|
|
|
|
- res: fiber.StatusNotFound,
|
|
|
|
- err: nil,
|
|
|
|
- cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
- mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
- mock.GetMock.Return(nil, false)
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
- return mocks.NewTagRepositoryMock(mc)
|
|
|
|
- },
|
|
|
|
- articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
- mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
- mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
- assert.Equal(mc, articleURL, url)
|
|
|
|
- assert.Equal(mc, models.LangRu, lang)
|
|
|
|
- }).Return(¬ActiveArticle, nil)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- name: "negative case - tags repository error",
|
|
|
|
- req: req{
|
|
|
|
- method: fiber.MethodGet,
|
|
|
|
- route: "/article/" + articleURL,
|
|
|
|
- },
|
|
|
|
- res: fiber.StatusInternalServerError,
|
|
|
|
- err: nil,
|
|
|
|
- cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
- mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
- // mock.GetMock.Return(nil, false)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
- mock := mocks.NewTagRepositoryMock(mc)
|
|
|
|
- mock.GetAllUsedMock.Return(nil, internalErr)
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
- mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
-
|
|
|
|
- mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
- assert.Equal(mc, articleURL, url)
|
|
|
|
- assert.Equal(mc, models.LangRu, lang)
|
|
|
|
- }).Return(&article, nil)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- name: "negative case - articles repository error",
|
|
|
|
- req: req{
|
|
|
|
- method: fiber.MethodGet,
|
|
|
|
- route: "/article/" + articleURL,
|
|
|
|
- },
|
|
|
|
- res: fiber.StatusInternalServerError,
|
|
|
|
- err: nil,
|
|
|
|
- cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
- mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
- mock.GetMock.Return(nil, false)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
- mock := mocks.NewTagRepositoryMock(mc)
|
|
|
|
- mock.GetAllUsedMock.Return(tags, nil)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
- mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
-
|
|
|
|
- mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
- assert.Equal(mc, articleURL, url)
|
|
|
|
- assert.Equal(mc, models.LangRu, lang)
|
|
|
|
- }).Return(&article, nil)
|
|
|
|
-
|
|
|
|
- mock.GetAllPreviewMock.Return(nil, internalErr)
|
|
|
|
-
|
|
|
|
- return mock
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
|
|
+ // {
|
|
|
|
+ // name: "negative case - article repository error",
|
|
|
|
+ // req: req{
|
|
|
|
+ // method: fiber.MethodGet,
|
|
|
|
+ // route: "/article/" + articleURL,
|
|
|
|
+ // },
|
|
|
|
+ // res: fiber.StatusInternalServerError,
|
|
|
|
+ // err: nil,
|
|
|
|
+ // cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
+ // mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
+ // mock.GetMock.Return(nil, false)
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
+ // return mocks.NewTagRepositoryMock(mc)
|
|
|
|
+ // },
|
|
|
|
+ // articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
+ // mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
+ // mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
+ // assert.Equal(mc, articleURL, url)
|
|
|
|
+ // assert.Equal(mc, models.LangRu, lang)
|
|
|
|
+ // }).Return(nil, internalErr)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // name: "negative case - article not active",
|
|
|
|
+ // req: req{
|
|
|
|
+ // method: fiber.MethodGet,
|
|
|
|
+ // route: "/article/" + articleURL,
|
|
|
|
+ // },
|
|
|
|
+ // res: fiber.StatusNotFound,
|
|
|
|
+ // err: nil,
|
|
|
|
+ // cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
+ // mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
+ // mock.GetMock.Return(nil, false)
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
+ // return mocks.NewTagRepositoryMock(mc)
|
|
|
|
+ // },
|
|
|
|
+ // articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
+ // mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
+ // mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
+ // assert.Equal(mc, articleURL, url)
|
|
|
|
+ // assert.Equal(mc, models.LangRu, lang)
|
|
|
|
+ // }).Return(¬ActiveArticle, nil)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // name: "negative case - tags repository error",
|
|
|
|
+ // req: req{
|
|
|
|
+ // method: fiber.MethodGet,
|
|
|
|
+ // route: "/article/" + articleURL,
|
|
|
|
+ // },
|
|
|
|
+ // res: fiber.StatusInternalServerError,
|
|
|
|
+ // err: nil,
|
|
|
|
+ // cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
+ // mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
+ // // mock.GetMock.Return(nil, false)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
+ // mock := mocks.NewTagRepositoryMock(mc)
|
|
|
|
+ // mock.GetAllUsedMock.Return(nil, internalErr)
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
+ // mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
+ //
|
|
|
|
+ // mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
+ // assert.Equal(mc, articleURL, url)
|
|
|
|
+ // assert.Equal(mc, models.LangRu, lang)
|
|
|
|
+ // }).Return(&article, nil)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // name: "negative case - articles repository error",
|
|
|
|
+ // req: req{
|
|
|
|
+ // method: fiber.MethodGet,
|
|
|
|
+ // route: "/article/" + articleURL,
|
|
|
|
+ // },
|
|
|
|
+ // res: fiber.StatusInternalServerError,
|
|
|
|
+ // err: nil,
|
|
|
|
+ // cacheMock: func(mc *minimock.Controller) CacheService {
|
|
|
|
+ // mock := mocks.NewCacheServiceMock(mc)
|
|
|
|
+ // mock.GetMock.Return(nil, false)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // tagMock: func(mc *minimock.Controller) TagRepository {
|
|
|
|
+ // mock := mocks.NewTagRepositoryMock(mc)
|
|
|
|
+ // mock.GetAllUsedMock.Return(tags, nil)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // articleMock: func(mc *minimock.Controller) ArticleRepository {
|
|
|
|
+ // mock := mocks.NewArticleRepositoryMock(mc)
|
|
|
|
+ //
|
|
|
|
+ // mock.GetByURLMock.Inspect(func(ctx context.Context, url string, lang models.Language) {
|
|
|
|
+ // assert.Equal(mc, articleURL, url)
|
|
|
|
+ // assert.Equal(mc, models.LangRu, lang)
|
|
|
|
+ // }).Return(&article, nil)
|
|
|
|
+ //
|
|
|
|
+ // mock.GetAllPreviewMock.Return(nil, internalErr)
|
|
|
|
+ //
|
|
|
|
+ // return mock
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
}
|
|
}
|
|
|
|
|
|
for _, tt := range tests {
|
|
for _, tt := range tests {
|