mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-28 11:16:37 +08:00
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
package service
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"go.uber.org/zap"
|
|
"gorm.io/gorm"
|
|
|
|
"github.com/truewhile/MeBox/internal/model"
|
|
"github.com/truewhile/MeBox/internal/repository"
|
|
)
|
|
|
|
func TestProfileSubtitleChineseModePersistsAndValidates(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := db.AutoMigrate(&model.User{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
repos := repository.New(db)
|
|
svc := NewProfileService(zap.NewNop(), repos)
|
|
user := &model.User{
|
|
Username: "subtitle-viewer",
|
|
PasswordHash: "hash",
|
|
Role: "user",
|
|
IsActive: true,
|
|
}
|
|
if err := repos.User.Create(t.Context(), user); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
traditional := "traditional"
|
|
updated, err := svc.UpdateProfile(t.Context(), user.ID, ProfileUpdate{
|
|
SubtitleChineseMode: &traditional,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if updated.SubtitleChineseMode != traditional {
|
|
t.Fatalf("subtitle mode = %q, want %q", updated.SubtitleChineseMode, traditional)
|
|
}
|
|
|
|
invalid := "automatic"
|
|
if _, err := svc.UpdateProfile(t.Context(), user.ID, ProfileUpdate{
|
|
SubtitleChineseMode: &invalid,
|
|
}); err == nil {
|
|
t.Fatal("invalid subtitle mode should be rejected")
|
|
}
|
|
|
|
reloaded, err := repos.User.FindByID(t.Context(), user.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if reloaded.SubtitleChineseMode != traditional {
|
|
t.Fatalf("invalid update changed subtitle mode to %q", reloaded.SubtitleChineseMode)
|
|
}
|
|
}
|