bluesky viewer in the terminal
at main 1.7 kB view raw
1package utils 2 3import ( 4 "strings" 5 "testing" 6 7 "github.com/charmbracelet/log" 8) 9 10func TestColorConstants(t *testing.T) { 11 colors := map[string]string{ 12 "ColorPrimary": ColorPrimary, 13 "ColorAccent": ColorAccent, 14 "ColorError": ColorError, 15 "ColorText": ColorText, 16 "ColorBG": ColorBG, 17 } 18 19 for name, color := range colors { 20 t.Run(name, func(t *testing.T) { 21 if color == "" { 22 t.Errorf("%s should not be empty", name) 23 } 24 if !strings.HasPrefix(color, "#") { 25 t.Errorf("%s should be a hex color, got: %s", name, color) 26 } 27 if len(color) != 7 { 28 t.Errorf("%s should be 7 characters (#RRGGBB), got: %s", name, color) 29 } 30 }) 31 } 32} 33 34func TestLogger(t *testing.T) { 35 t.Run("InitLogger", func(t *testing.T) { 36 originalLogger := logger 37 defer func() { 38 logger = originalLogger 39 }() 40 41 logger = nil 42 43 l := InitLogger(log.DebugLevel) 44 if l == nil { 45 t.Fatal("InitLogger() should return a logger") 46 } 47 if logger == nil { 48 t.Error("InitLogger() should set global logger") 49 } 50 }) 51 52 t.Run("GetLogger", func(t *testing.T) { 53 originalLogger := logger 54 defer func() { 55 logger = originalLogger 56 }() 57 58 logger = nil 59 60 l1 := GetLogger() 61 if l1 == nil { 62 t.Fatal("GetLogger() should return a logger") 63 } 64 65 l2 := GetLogger() 66 if l2 == nil { 67 t.Fatal("GetLogger() should return a logger on second call") 68 } 69 if l1 != l2 { 70 t.Error("GetLogger() should return the same logger instance") 71 } 72 }) 73 74 t.Run("GetLoggerWithExistingLogger", func(t *testing.T) { 75 originalLogger := logger 76 defer func() { 77 logger = originalLogger 78 }() 79 80 customLogger := InitLogger(log.WarnLevel) 81 82 retrieved := GetLogger() 83 if retrieved != customLogger { 84 t.Error("GetLogger() should return existing logger") 85 } 86 }) 87}