feat: storage, language rules and migration
This commit is contained in:
1 parent
8c4a1825ab
commit
0806733d5c
70 files changed
+1771
-132
No files matched your search
@@ -0,0 +1,56 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/domain/article"
|
||||
"RenewCMS/internal/domain/language"
|
||||
"RenewCMS/internal/domain/transaction"
|
||||
"context"
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
type mockStartingLanguages struct {
|
||||
confirmed map[uint32]string
|
||||
locked []uint32
|
||||
failWith error
|
||||
}
|
||||
|
||||
var _ language.Repository = &mockStartingLanguages{}
|
||||
|
||||
func (m *mockStartingLanguages) ListBySite(siteID uint32) ([]language.SiteLanguage, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *mockStartingLanguages) ConfirmDefault(siteID uint32) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *mockStartingLanguages) LockStartingLanguage(siteID uint32) (string, error) {
|
||||
m.locked = append(m.locked, siteID)
|
||||
if m.failWith != nil {
|
||||
return "", m.failWith
|
||||
}
|
||||
return m.confirmed[siteID], nil
|
||||
}
|
||||
|
||||
type mockCreateTransactor struct {
|
||||
articles article.Repository
|
||||
languages *mockStartingLanguages
|
||||
runs int
|
||||
}
|
||||
|
||||
var _ transaction.Transactor = &mockCreateTransactor{}
|
||||
|
||||
func (m *mockCreateTransactor) Run(ctx context.Context, work func(transaction.Repositories) error) error {
|
||||
m.runs++
|
||||
return work(transaction.Repositories{Articles: m.articles, Languages: m.languages})
|
||||
}
|
||||
|
||||
func passthroughCreateTransactor(articles article.Repository) *mockCreateTransactor {
|
||||
return &mockCreateTransactor{articles: articles, languages: &mockStartingLanguages{confirmed: map[uint32]string{}}}
|
||||
}
|
||||
|
||||
var fixtureStoryCounter atomic.Uint32
|
||||
|
||||
func fixtureStory() uint32 {
|
||||
return 1000 + fixtureStoryCounter.Add(1)
|
||||
}
|
||||
Reference in new issue
Block a user