feat: editor write path

This commit is contained in:
Florian Sylvain committed 2026-11-02 03:24:30 +01:00
1 parent d9158025d4
commit a0b3c58c52
88 files changed
+5738 -263

No files matched your search

+17 -3
View File
@@ -2,6 +2,7 @@ package test
import (
articlehandler "RenewCMS/api/handlers/article"
"RenewCMS/api/pkg/validator"
"RenewCMS/internal/domain/article"
"RenewCMS/internal/infrastructure/useCases"
"math"
@@ -59,12 +60,11 @@ func TestSeoOutputListPagingNeverPanics(t *testing.T) {
}
func TestSeoOutputContractParity(t *testing.T) {
oneof := "oneof=" + strings.Join(article.DismissCodes(), " ")
max := "max=" + strconv.Itoa(article.MaxCanonicalURLRunes)
for _, subject := range []reflect.Type{reflect.TypeOf(articlehandler.CheckArticleSEOBody{}), reflect.TypeOf(articlehandler.UpdateArticleBody{})} {
dismissed, _ := subject.FieldByName("SEODismissed")
if !strings.HasSuffix(dismissed.Tag.Get("validate"), oneof) {
t.Errorf("%s seo_dismissed tag %q lacks %q", subject.Name(), dismissed.Tag.Get("validate"), oneof)
if !strings.HasSuffix(dismissed.Tag.Get("validate"), validator.SEODismissedTag) {
t.Errorf("%s seo_dismissed tag %q lacks %q", subject.Name(), dismissed.Tag.Get("validate"), validator.SEODismissedTag)
}
canonical, _ := subject.FieldByName("CanonicalURL")
if !strings.Contains(canonical.Tag.Get("validate"), max) {
@@ -82,3 +82,17 @@ func TestSeoOutputContractParity(t *testing.T) {
t.Errorf("seo=bogus: %d", rec.Code)
}
}
func TestSeoDismissedValidatorFollowsTheDomainCodes(t *testing.T) {
validator.InitValidator()
for _, code := range article.DismissCodes() {
request := articlehandler.UpdateArticleBody{SEODismissed: &[]string{code}}
if err := validator.Validate.Struct(request); err != nil {
t.Errorf("%s must be accepted: %v", code, err)
}
}
request := articlehandler.UpdateArticleBody{SEODismissed: &[]string{"bogus"}}
if err := validator.Validate.Struct(request); err == nil {
t.Error("an unknown code must be refused")
}
}