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 }