tercul-backend/test/fixtures/translations.go

118 lines
3.7 KiB
Go

package fixtures
import (
"context"
"tercul/internal/domain"
"time"
"gorm.io/gorm"
)
// Translation fixtures for testing
var (
// WarAndPeaceEnglishTranslation is a fixture for War and Peace English translation
WarAndPeaceEnglishTranslation = domain.Translation{
BaseModel: domain.BaseModel{
ID: 1,
CreatedAt: time.Now().Add(-300 * 24 * time.Hour),
UpdatedAt: time.Now().Add(-20 * 24 * time.Hour),
},
TranslatableID: 1, // War and Peace
TranslatableType: "works",
TranslatorID: uintPtr(2), // Editor
Language: "en",
Title: "War and Peace",
Content: "Well, Prince, so Genoa and Lucca are now just family estates of the Buonapartes...",
Status: domain.TranslationStatusPublished,
}
// WarAndPeaceFrenchTranslation is a fixture for War and Peace French translation
WarAndPeaceFrenchTranslation = domain.Translation{
BaseModel: domain.BaseModel{
ID: 2,
CreatedAt: time.Now().Add(-250 * 24 * time.Hour),
UpdatedAt: time.Now().Add(-15 * 24 * time.Hour),
},
TranslatableID: 1, // War and Peace
TranslatableType: "works",
TranslatorID: uintPtr(3), // Contributor
Language: "fr",
Title: "Guerre et Paix",
Content: "Eh bien, mon prince, Gênes et Lucques ne sont plus que des apanages...",
Status: domain.TranslationStatusPublished,
}
// MetamorphosisEnglishTranslation is a fixture for Metamorphosis English translation
MetamorphosisEnglishTranslation = domain.Translation{
BaseModel: domain.BaseModel{
ID: 3,
CreatedAt: time.Now().Add(-80 * 24 * time.Hour),
UpdatedAt: time.Now().Add(-3 * 24 * time.Hour),
},
TranslatableID: 3, // The Metamorphosis
TranslatableType: "works",
TranslatorID: uintPtr(2), // Editor
Language: "en",
Title: "The Metamorphosis",
Content: "One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed...",
Status: domain.TranslationStatusPublished,
}
// DraftTranslation is a fixture for a draft translation
DraftTranslation = domain.Translation{
BaseModel: domain.BaseModel{
ID: 4,
CreatedAt: time.Now().Add(-5 * 24 * time.Hour),
UpdatedAt: time.Now().Add(-2 * time.Hour),
},
TranslatableID: 2, // The Waste Land
TranslatableType: "works",
TranslatorID: uintPtr(3), // Contributor
Language: "es",
Title: "La tierra baldía",
Content: "Abril es el mes más cruel...",
Status: domain.TranslationStatusDraft,
}
// ReviewingTranslation is a fixture for a translation under review
ReviewingTranslation = domain.Translation{
BaseModel: domain.BaseModel{
ID: 5,
CreatedAt: time.Now().Add(-10 * 24 * time.Hour),
UpdatedAt: time.Now().Add(-1 * 24 * time.Hour),
},
TranslatableID: 2, // The Waste Land
TranslatableType: "works",
TranslatorID: uintPtr(3), // Contributor
Language: "de",
Title: "Das wüste Land",
Content: "April ist der grausamste Monat...",
Status: domain.TranslationStatusReviewing,
}
)
func uintPtr(u uint) *uint {
return &u
}
// AllTranslations returns all translation fixtures
func AllTranslations() []domain.Translation {
return []domain.Translation{
WarAndPeaceEnglishTranslation,
WarAndPeaceFrenchTranslation,
MetamorphosisEnglishTranslation,
DraftTranslation,
ReviewingTranslation,
}
}
// LoadTranslations loads translation fixtures into the database
func LoadTranslations(ctx context.Context, db *gorm.DB) error {
for _, translation := range AllTranslations() {
if err := db.Create(&translation).Error; err != nil {
return err
}
}
return nil
}