package services import ( "testing" "time" ) func TestMediaScanner_GetPollInterval(t *testing.T) { t.Run("nil db returns default", func(t *testing.T) { scanner := &MediaScanner{ db: nil, settingsCache: NewSettingsCache(30 * time.Second), } interval := scanner.GetPollInterval() if interval != 5*time.Minute { t.Errorf("expected 5m, got %v", interval) } }) } func TestMediaScanner_GetAutoScanEnabled(t *testing.T) { t.Run("nil db returns default true", func(t *testing.T) { scanner := &MediaScanner{ db: nil, settingsCache: NewSettingsCache(30 * time.Second), } enabled := scanner.GetAutoScanEnabled() if enabled != true { t.Errorf("expected true, got %v", enabled) } }) } func TestMediaScanner_GetExtractorVersion(t *testing.T) { t.Run("nil db returns default 1", func(t *testing.T) { scanner := &MediaScanner{ db: nil, settingsCache: NewSettingsCache(30 * time.Second), } if v := scanner.GetExtractorVersion(); v != 1 { t.Errorf("expected 1, got %d", v) } }) t.Run("cached value wins (scanner read-through path)", func(t *testing.T) { scanner := &MediaScanner{ db: nil, settingsCache: NewSettingsCache(30 * time.Second), } scanner.settingsCache.Set("scan_extractor_version", "3") if v := scanner.GetExtractorVersion(); v != 3 { t.Errorf("expected 3, got %d", v) } }) t.Run("cached garbage rides the default", func(t *testing.T) { scanner := &MediaScanner{ db: nil, settingsCache: NewSettingsCache(30 * time.Second), } scanner.settingsCache.Set("scan_extractor_version", "zero") if v := scanner.GetExtractorVersion(); v != 1 { t.Errorf("expected 1, got %d", v) } }) }