feat: editorial article list

This commit is contained in:
Florian Sylvain committed 2026-11-02 07:28:44 +01:00
1 parent a0b3c58c52
commit a671b81f80
103 files changed
+6493 -1805

No files matched your search

+43
View File
@@ -37,6 +37,7 @@ type mockArticleRepo struct {
beforeMove func()
onGet func(id uint32) error
reverseStory bool
listCalls int
}
func newMockArticleRepo() *mockArticleRepo {
@@ -104,6 +105,7 @@ func (m *mockArticleRepo) FindByFilters(filters article.Filters) ([]article.Arti
}
func (m *mockArticleRepo) FindPage(filters article.Filters) (article.PageResult, error) {
m.listCalls++
if err := m.fail.trigger("FindPage"); err != nil {
return article.PageResult{}, err
}
@@ -124,6 +126,12 @@ func (m *mockArticleRepo) FindPage(filters article.Filters) (article.PageResult,
if filters.Status == article.StatusDraft && a.IsOnline {
continue
}
if filters.Lang != nil && a.Lang != *filters.Lang {
continue
}
if filters.AuthorID != nil && !slices.Contains(m.credits[a.ID], *filters.AuthorID) {
continue
}
if filters.Q != "" && !strings.Contains(foldArticleSearch(a.Title), foldArticleSearch(filters.Q)) {
continue
}
@@ -158,6 +166,41 @@ func (m *mockArticleRepo) CountByVisibility(onlineOnly bool) (article.Counts, er
return counts, nil
}
func (m *mockArticleRepo) CountVersions(filters article.Filters) (article.Counts, error) {
m.listCalls++
if err := m.fail.trigger("CountVersions"); err != nil {
return article.Counts{}, err
}
counts := article.Counts{}
for _, a := range m.articles {
if filters.Lang != nil && a.Lang != *filters.Lang {
continue
}
if a.IsOnline {
counts.Online++
} else if filters.IsOnline == nil && (filters.VisibleTo == nil || a.CreatedBy == *filters.VisibleTo) {
counts.Draft++
}
}
counts.All = counts.Online + counts.Draft
return counts, nil
}
func (m *mockArticleRepo) FindStoryPage(filters article.StoryFilters) (article.StoryPage, error) {
m.listCalls++
return article.StoryPage{Refs: []article.StoryRef{}}, m.fail.trigger("FindStoryPage")
}
func (m *mockArticleRepo) CountStories(filters article.StoryFilters) (article.StoryCounts, error) {
m.listCalls++
return article.StoryCounts{}, m.fail.trigger("CountStories")
}
func (m *mockArticleRepo) ListByStories(storyIDs []uint32) ([]article.Article, error) {
m.listCalls++
return []article.Article{}, m.fail.trigger("ListByStories")
}
func (m *mockArticleRepo) CountVisibleTo(userID uint32) (article.Counts, error) {
if err := m.fail.trigger("CountVisibleTo"); err != nil {
return article.Counts{}, err