feat: translation flows, revision conflicts, delete scopes, article moves and a target site for new articles
This commit is contained in:
1 parent
339e646eb8
commit
45fbbc33b1
93 files changed
+7630
-294
No files matched your search
@@ -3,6 +3,7 @@ package test
|
||||
import (
|
||||
"RenewCMS/internal/domain/article"
|
||||
"RenewCMS/internal/domain/language"
|
||||
"RenewCMS/internal/domain/site"
|
||||
"RenewCMS/internal/infrastructure/useCases"
|
||||
"context"
|
||||
"errors"
|
||||
@@ -13,6 +14,9 @@ const (
|
||||
createLanguageSiteID = 1
|
||||
createLanguageTitle = "Bonjour le monde"
|
||||
confirmedDefaultTag = "fr-CA"
|
||||
|
||||
createLanguageOtherSiteID = 2
|
||||
createLanguageOtherSiteKey = "atelier"
|
||||
)
|
||||
|
||||
func newCreateLanguageFixture(confirmed map[uint32]string) (*useCases.CreateArticleUseCase, *mockCreateTransactor, *mockArticleRepo) {
|
||||
@@ -76,4 +80,52 @@ func TestCreateArticleStartingLanguage(t *testing.T) {
|
||||
t.Errorf("expected %v without a create, got %v", failure, err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("The command site decides the site and the language lock", func(t *testing.T) {
|
||||
create, transactor, articles := newCreateLanguageFixture(map[uint32]string{createLanguageSiteID: confirmedDefaultTag, createLanguageOtherSiteID: "de"})
|
||||
create = useCases.NewCreateArticleUseCase(transactor, &fakeBodyRenderer{}, discardRecorder, createLanguageSites(), plainAuthors())
|
||||
command := createLanguageCommand()
|
||||
command.Site = stringPointer(createLanguageOtherSiteKey)
|
||||
|
||||
created, err := create.CreateArticle(context.Background(), command)
|
||||
|
||||
stored := articles.articles[created.ID]
|
||||
if err != nil || stored.SiteID != createLanguageOtherSiteID || stored.Lang != "de" {
|
||||
t.Fatalf("expected a de article on site %d, got %+v %v", createLanguageOtherSiteID, stored, err)
|
||||
}
|
||||
if len(transactor.languages.locked) != 1 || transactor.languages.locked[0] != createLanguageOtherSiteID {
|
||||
t.Errorf("the chosen site must be locked: %v", transactor.languages.locked)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("An unknown command site stores nothing", func(t *testing.T) {
|
||||
create, transactor, articles := newCreateLanguageFixture(map[uint32]string{})
|
||||
create = useCases.NewCreateArticleUseCase(transactor, &fakeBodyRenderer{}, discardRecorder, createLanguageSites(), plainAuthors())
|
||||
command := createLanguageCommand()
|
||||
command.Site = stringPointer("missing")
|
||||
|
||||
_, err := create.CreateArticle(context.Background(), command)
|
||||
|
||||
if !errors.Is(err, site.ErrSiteNotFound) || articles.createCalled || transactor.runs != 0 {
|
||||
t.Errorf("expected site not found without a transaction, got %v", err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("An omitted command site reads the default site", func(t *testing.T) {
|
||||
sites := createLanguageSites()
|
||||
create, transactor, articles := newCreateLanguageFixture(map[uint32]string{createLanguageSiteID: confirmedDefaultTag})
|
||||
create = useCases.NewCreateArticleUseCase(transactor, &fakeBodyRenderer{}, discardRecorder, sites, plainAuthors())
|
||||
|
||||
created, err := create.CreateArticle(context.Background(), createLanguageCommand())
|
||||
|
||||
if err != nil || articles.articles[created.ID].SiteID != createLanguageSiteID {
|
||||
t.Errorf("expected the default site, got %+v %v", articles.articles[created.ID], err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func createLanguageSites() *mockSiteRepo {
|
||||
sites := plainSites()
|
||||
sites.seed(createLanguageOtherSiteID, "Atelier", createLanguageOtherSiteKey, false)
|
||||
return sites
|
||||
}
|
||||
Reference in new issue
Block a user