github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/pkg/logger/level_test.go (about) 1 package logger 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestLoggerParseLevel(t *testing.T) { 10 tests := []struct { 11 name string 12 input string 13 expected Level 14 err error 15 }{ 16 { 17 name: "Valid", 18 input: "error", 19 expected: ErrorLevel, 20 err: nil, 21 }, 22 { 23 name: "ValidWithShortcut", 24 input: "warn", 25 expected: WarnLevel, 26 err: nil, 27 }, 28 { 29 name: "UpperCase", 30 input: "INFO", 31 expected: InfoLevel, 32 err: nil, 33 }, 34 { 35 name: "MixUpperLowerCase", 36 input: "Debug", 37 expected: DebugLevel, 38 err: nil, 39 }, 40 { 41 name: "WithPrefix", 42 input: "-Debug", 43 expected: levelUnknown, 44 err: ErrInvalidLevel, 45 }, 46 } 47 48 for _, test := range tests { 49 t.Run(test.name, func(t *testing.T) { 50 res, err := ParseLevel(test.input) 51 52 assert.Equal(t, test.expected, res) 53 assert.ErrorIs(t, err, test.err) 54 }) 55 } 56 } 57 58 func TestLoggerLevelString(t *testing.T) { 59 t.Run("ValidInput", func(t *testing.T) { 60 assert.Equal(t, "error", ErrorLevel.String()) 61 assert.Equal(t, "debug", DebugLevel.String()) 62 assert.Equal(t, "warning", WarnLevel.String()) 63 assert.Equal(t, "info", InfoLevel.String()) 64 }) 65 66 t.Run("InvalidInput", func(t *testing.T) { 67 assert.Equal(t, "unknown", Level(42).String()) 68 }) 69 } 70 71 func TestLoggerUnmarshalText(t *testing.T) { 72 t.Run("ValidInput", func(t *testing.T) { 73 var lvl Level 74 75 err := lvl.UnmarshalText([]byte("error")) 76 assert.NoError(t, err) 77 assert.Equal(t, ErrorLevel, lvl) 78 }) 79 80 t.Run("InvalidInput", func(t *testing.T) { 81 var lvl Level 82 83 err := lvl.UnmarshalText([]byte("invalid-stuff")) 84 assert.EqualError(t, err, `"invalid-stuff": not a valid logging Level`) 85 assert.ErrorIs(t, err, ErrInvalidLevel) 86 }) 87 }