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  }