diff --git a/app/logger/log_test.go b/app/logger/log_test.go new file mode 100644 index 00000000..41e45386 --- /dev/null +++ b/app/logger/log_test.go @@ -0,0 +1,150 @@ +package logger + +import ( + "reflect" + "testing" + + "go.uber.org/zap" +) + +func Test_getLevel1(t *testing.T) { + SetNamedLevels([]NamedLevel{ + {Name: "app", Level: "debug"}, + {Name: "app*", Level: "info"}, + {Name: "app.sub", Level: "warn"}, + {Name: "*", Level: "fatal"}, + }) + + tests := []struct { + name string + want zap.AtomicLevel + }{ + { + name: "app", + want: zap.NewAtomicLevelAt(zap.DebugLevel), + }, + { + name: "app.aaa", + want: zap.NewAtomicLevelAt(zap.InfoLevel), + }, + { + name: "app.sub", + want: zap.NewAtomicLevelAt(zap.InfoLevel), + }, + { + name: "random", + want: zap.NewAtomicLevelAt(zap.FatalLevel), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := getLevel(tt.name); !reflect.DeepEqual(got, tt.want) { + t.Errorf("getLevel() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_getLevel2(t *testing.T) { + SetNamedLevels([]NamedLevel{ + {Name: "*", Level: "ERROR"}, + {Name: "app", Level: "info"}, + {Name: "app.sub", Level: "warn"}, + {Name: "*", Level: "fatal"}, + }) + + tests := []struct { + name string + want zap.AtomicLevel + }{ + { + name: "app", + want: zap.NewAtomicLevelAt(zap.ErrorLevel), + }, + { + name: "app.aaa", + want: zap.NewAtomicLevelAt(zap.ErrorLevel), + }, + { + name: "app.sub", + want: zap.NewAtomicLevelAt(zap.ErrorLevel), + }, + { + name: "random", + want: zap.NewAtomicLevelAt(zap.ErrorLevel), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := getLevel(tt.name); !reflect.DeepEqual(got, tt.want) { + t.Errorf("getLevel() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_getLevel3(t *testing.T) { + SetNamedLevels([]NamedLevel{ + {Name: "app", Level: "info"}, + {Name: "*.sub", Level: "warn"}, + {Name: "*", Level: "fatal"}, + }) + + tests := []struct { + name string + want zap.AtomicLevel + }{ + { + name: "app", + want: zap.NewAtomicLevelAt(zap.InfoLevel), + }, + { + name: "app.sub", + want: zap.NewAtomicLevelAt(zap.WarnLevel), + }, + { + name: "random", + want: zap.NewAtomicLevelAt(zap.FatalLevel), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := getLevel(tt.name); !reflect.DeepEqual(got, tt.want) { + t.Errorf("getLevel() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_getLevel4(t *testing.T) { + SetNamedLevels([]NamedLevel{ + {Name: "*", Level: "invalid"}, + {Name: "app", Level: "info"}, + {Name: "b", Level: "invalid"}, + }) + + tests := []struct { + name string + want zap.AtomicLevel + }{ + { + name: "app", + want: zap.NewAtomicLevelAt(zap.InfoLevel), + }, + { + name: "app.sub", + want: zap.NewAtomicLevelAt(logger.Level()), + }, + { + name: "b", + want: zap.NewAtomicLevelAt(logger.Level()), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := getLevel(tt.name); !reflect.DeepEqual(got, tt.want) { + t.Errorf("getLevel() = %v, want %v", got, tt.want) + } + }) + } +}