preset_test.go
⎇
Raw
1package repository
2
3import (
4 "database/sql"
5 "testing"
6
7 "vidarchive/internal/config"
8 "vidarchive/internal/database"
9 "vidarchive/internal/models"
10)
11
12func setupTestDB(t *testing.T) *sql.DB {
13 cfg := &config.Config{
14 DBPath: ":memory:",
15 }
16 db, err := database.New(cfg)
17 if err != nil {
18 t.Fatalf("failed to create test db: %v", err)
19 }
20 return db
21}
22
23func TestPresetRepository(t *testing.T) {
24 db := setupTestDB(t)
25 defer db.Close()
26
27 repo := NewPresetRepository(db)
28
29 // Test Create
30 preset := &models.Preset{
31 Name: "Test Preset",
32 Description: "Test description",
33 Format: "best",
34 Quality: "1080",
35 }
36 if err := repo.Create(preset); err != nil {
37 t.Fatalf("failed to create preset: %v", err)
38 }
39 if preset.ID == 0 {
40 t.Error("expected preset ID to be set after create")
41 }
42
43 // Test GetByID
44 found, err := repo.GetByID(preset.ID)
45 if err != nil {
46 t.Fatalf("failed to get preset by ID: %v", err)
47 }
48 if found.Name != "Test Preset" {
49 t.Errorf("expected name 'Test Preset', got %q", found.Name)
50 }
51
52 // Test GetAll
53 all, err := repo.GetAll()
54 if err != nil {
55 t.Fatalf("failed to get all presets: %v", err)
56 }
57 if len(all) < 1 {
58 t.Errorf("expected at least 1 preset, got %d", len(all))
59 }
60
61 // Test Update
62 preset.Name = "Updated Preset"
63 if err := repo.Update(preset); err != nil {
64 t.Fatalf("failed to update preset: %v", err)
65 }
66 updated, _ := repo.GetByID(preset.ID)
67 if updated.Name != "Updated Preset" {
68 t.Errorf("expected updated name 'Updated Preset', got %q", updated.Name)
69 }
70
71 // Test Delete
72 if err := repo.Delete(preset.ID); err != nil {
73 t.Fatalf("failed to delete preset: %v", err)
74 }
75 _, err = repo.GetByID(preset.ID)
76 if err == nil {
77 t.Error("expected error when getting deleted preset")
78 }
79}
80
81func TestPresetRepositoryDefault(t *testing.T) {
82 db := setupTestDB(t)
83 defer db.Close()
84
85 repo := NewPresetRepository(db)
86
87 // Clear existing default from migration
88 repo.ClearDefault()
89
90 // Create default preset with unique name
91 preset := &models.Preset{
92 Name: "TestDefault",
93 IsDefault: true,
94 }
95 if err := repo.Create(preset); err != nil {
96 t.Fatalf("failed to create preset: %v", err)
97 }
98
99 // Test GetDefault
100 found, err := repo.GetDefault()
101 if err != nil {
102 t.Fatalf("failed to get default preset: %v", err)
103 }
104 if found.Name != "TestDefault" {
105 t.Errorf("expected default preset name 'TestDefault', got %q", found.Name)
106 }
107 if !found.IsDefault {
108 t.Error("expected preset to be default")
109 }
110
111 // Test ClearDefault
112 if err := repo.ClearDefault(); err != nil {
113 t.Fatalf("failed to clear default: %v", err)
114 }
115 _, err = repo.GetDefault()
116 if err == nil {
117 t.Error("expected no default preset after clearing")
118 }
119}
120