mirror of
https://github.com/SamyRai/tercul-backend.git
synced 2025-12-27 04:01:34 +00:00
118 lines
3.7 KiB
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
|
|
}
|