bluesky viewer in the terminal
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}