Files
sm-journal-plugin/models/translatable_test.go
Jakub Zych d09edde080 test(15-04): complete PHPUnit map, migrations, FormatHTML, and search-gate tests
Named JOURNAL-001/002 fillable, FormatHTML unsafe tags, rollback/remigrate, RSS/categories/tags/media, and TestSearchGateOff with zero Typesense HTTP.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 19:18:53 +02:00

59 lines
1.7 KiB
Go

package models_test
import (
"reflect"
"testing"
"git.golem15.com/golem15/sm-journal-plugin/models"
)
type translatable interface {
Translatable() []string
}
type translatableIndexed interface {
TranslatableIndexes() []string
}
func TestTranslatable(t *testing.T) {
post := models.Post{}
if post.MorphName() != `Golem15\Journal\Models\Post` {
t.Fatalf("Post.MorphName = %q", post.MorphName())
}
if got := post.Translatable(); !reflect.DeepEqual(got, []string{"title", "content", "content_html", "excerpt", "metadata", "slug"}) {
t.Fatalf("Post.Translatable = %#v", got)
}
if got := post.TranslatableIndexes(); !reflect.DeepEqual(got, []string{"slug"}) {
t.Fatalf("Post.TranslatableIndexes = %#v", got)
}
cat := models.Category{}
if cat.MorphName() != `Golem15\Journal\Models\Category` {
t.Fatalf("Category.MorphName = %q", cat.MorphName())
}
if got := cat.Translatable(); !reflect.DeepEqual(got, []string{"name", "description", "slug"}) {
t.Fatalf("Category.Translatable = %#v", got)
}
if got := cat.TranslatableIndexes(); !reflect.DeepEqual(got, []string{"slug"}) {
t.Fatalf("Category.TranslatableIndexes = %#v", got)
}
tag := models.Tag{}
if tag.MorphName() != `Golem15\Journal\Models\Tag` {
t.Fatalf("Tag.MorphName = %q", tag.MorphName())
}
if _, ok := any(tag).(translatable); ok {
t.Fatal("Tag must not implement Translatable")
}
if _, ok := any(tag).(translatableIndexed); ok {
t.Fatal("Tag must not implement TranslatableIndexes")
}
}
func TestFilterScopes(t *testing.T) {
got := (models.Post{}).FilterScopes()
if !reflect.DeepEqual(got, []string{models.FilterPublished, models.FilterCategories}) {
t.Fatalf("FilterScopes = %#v", got)
}
}