package service import ( "database/sql" "testing" "vidarchive/internal/config" "vidarchive/internal/database" "vidarchive/internal/repository" ) func setupTestDB(t *testing.T) *sql.DB { cfg := &config.Config{ DBPath: ":memory:", } db, err := database.New(cfg) if err != nil { t.Fatalf("failed to create test db: %v", err) } return db } func TestSettingsService(t *testing.T) { db := setupTestDB(t) defer db.Close() settingsRepo := repository.NewSettingsRepository(db) svc := NewSettingsService(settingsRepo) // Test GetAll defaults settings, err := svc.GetAll() if err != nil { t.Fatalf("failed to get settings: %v", err) } if settings.RefreshInterval != 5 { t.Errorf("expected default refresh interval 5, got %d", settings.RefreshInterval) } if settings.AutoRefreshLibrary { t.Error("expected auto_refresh_library to be false by default") } if !settings.AutoRefreshDownloads { t.Error("expected auto_refresh_downloads to be true by default") } // Test SetRefreshInterval if err := svc.SetRefreshInterval("10"); err != nil { t.Fatalf("failed to set refresh interval: %v", err) } settings, _ = svc.GetAll() if settings.RefreshInterval != 10 { t.Errorf("expected refresh interval 10, got %d", settings.RefreshInterval) } // Test SetAutoRefreshLibrary if err := svc.SetAutoRefreshLibrary(true); err != nil { t.Fatalf("failed to set auto refresh library: %v", err) } settings, _ = svc.GetAll() if !settings.AutoRefreshLibrary { t.Error("expected auto_refresh_library to be true") } // Test SetAutoRefreshDownloads if err := svc.SetAutoRefreshDownloads(false); err != nil { t.Fatalf("failed to set auto refresh downloads: %v", err) } settings, _ = svc.GetAll() if settings.AutoRefreshDownloads { t.Error("expected auto_refresh_downloads to be false") } // Test GetRefreshInterval interval, err := svc.GetRefreshInterval() if err != nil { t.Fatalf("failed to get refresh interval: %v", err) } if interval != 10 { t.Errorf("expected refresh interval 10, got %d", interval) } }