Skip to content

Commit c6b09ec

Browse files
committed
test: refactor logging tests to use testify assertions for consistency and clarity
1 parent 9c7f23d commit c6b09ec

4 files changed

Lines changed: 61 additions & 111 deletions

File tree

logging/logging_test.go

Lines changed: 27 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package logging
22

33
import (
44
"errors"
5-
"fmt"
65
"strings"
76
"testing"
7+
8+
"github.com/stretchr/testify/assert"
89
)
910

1011
type stringWriter struct {
@@ -19,92 +20,69 @@ func TestInfoDefault(t *testing.T) {
1920
builder := new(strings.Builder)
2021
writer := &stringWriter{str: builder}
2122

22-
name := "World"
23-
2423
log := NewLogger(WithLogWriter(writer))
25-
26-
log.Info("Hello %s", name)
24+
log.Info("Hello %s", "World")
2725

2826
result := builder.String()
29-
expectedResult := "INFO [logging.test] ### Hello " + name
30-
31-
if strings.HasSuffix(result, expectedResult) {
32-
fmt.Println(result)
33-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
34-
}
27+
assert.Contains(t, result, "INFO [logging.test] ")
28+
assert.Contains(t, result, "### Hello World")
3529
}
30+
3631
func TestWarningDefault(t *testing.T) {
3732
builder := new(strings.Builder)
3833
writer := stringWriter{str: builder}
3934

40-
name := "World"
41-
4235
log := NewLogger(WithLogWriter(writer))
43-
44-
log.Warning("Hello %s", name)
36+
log.Warning("Hello %s", "World")
4537

4638
result := builder.String()
47-
expectedResult := "WARNING [logging.test] ### Hello " + name
48-
49-
if strings.HasSuffix(result, expectedResult) {
50-
fmt.Println(result)
51-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
52-
}
39+
assert.Contains(t, result, "WARNING [logging.test] ")
40+
assert.Contains(t, result, "### Hello World")
5341
}
5442

5543
func TestDebugDefault(t *testing.T) {
5644
builder := new(strings.Builder)
5745
writer := stringWriter{str: builder}
5846

59-
name := "World"
60-
6147
log := NewLogger(WithLogWriter(writer), WithSeverity(DEBUG))
62-
63-
log.Debug("Hello %s", name)
48+
log.Debug("Hello %s", "World")
6449

6550
result := builder.String()
66-
expectedResult := "DEBUG [logging.test] ### Hello " + name
51+
assert.Contains(t, result, "DEBUG [logging.test] ")
52+
assert.Contains(t, result, "### Hello World")
53+
}
6754

68-
if strings.HasSuffix(result, expectedResult) {
69-
fmt.Println(result)
70-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
71-
}
55+
func TestDebugDisabled(t *testing.T) {
56+
builder := new(strings.Builder)
57+
writer := stringWriter{str: builder}
58+
59+
log := NewLogger(WithLogWriter(writer))
60+
log.Debug("Hello %s", "World")
61+
62+
assert.Empty(t, builder.String(), "debug output should be empty when debug is disabled")
7263
}
7364

7465
func TestTraceDefault(t *testing.T) {
7566
builder := new(strings.Builder)
7667
writer := stringWriter{str: builder}
7768

78-
name := "World"
79-
8069
log := NewLogger(WithLogWriter(writer), WithSeverity(TRACE))
81-
82-
log.Trace("Hello %s", name)
70+
log.Trace("Hello %s", "World")
8371

8472
result := builder.String()
85-
expectedResult := "TRACE [logging.test] ### Hello " + name
86-
87-
if strings.HasSuffix(result, expectedResult) {
88-
fmt.Println(result)
89-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
90-
}
73+
assert.Contains(t, result, "TRACE [logging.test] ")
74+
assert.Contains(t, result, "### Hello World")
9175
}
9276

9377
func TestErrorDefault(t *testing.T) {
9478
builder := new(strings.Builder)
9579
writer := stringWriter{str: builder}
9680

97-
name := "World"
98-
9981
log := NewLogger(WithLogWriter(writer))
10082
err := errors.New("test error")
101-
log.Error(err, "Hello %s", name)
83+
log.Error(err, "Hello %s", "World")
10284

10385
result := builder.String()
104-
expectedResult := "ERROR [logging.test] ### Hello " + name
105-
106-
if strings.HasSuffix(result, expectedResult) {
107-
fmt.Println(result)
108-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
109-
}
86+
assert.Contains(t, result, "ERROR [logging.test] ")
87+
assert.Contains(t, result, "### Hello World")
11088
}

logging/options_test.go

Lines changed: 14 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,56 @@
11
package logging
22

33
import (
4-
"fmt"
54
"strings"
65
"testing"
6+
7+
"github.com/stretchr/testify/assert"
78
)
89

910
func TestInfoName(t *testing.T) {
1011
builder := new(strings.Builder)
1112
writer := stringWriter{str: builder}
1213

13-
name := "World"
14-
1514
log := NewLogger(WithLogWriter(writer), WithName("tester"))
16-
17-
log.Info("Hello %s", name)
15+
log.Info("Hello %s", "World")
1816

1917
result := builder.String()
20-
expectedResult := "INFO [ tester] ### Hello " + name
21-
22-
if strings.HasSuffix(result, expectedResult) {
23-
fmt.Println(result)
24-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
25-
}
18+
assert.Contains(t, result, "INFO [ tester]")
19+
assert.Contains(t, result, "### Hello World")
2620
}
2721

2822
func TestInfoNameSpacing(t *testing.T) {
2923
builder := new(strings.Builder)
3024
writer := stringWriter{str: builder}
3125

32-
name := "World"
33-
3426
log := NewLogger(WithLogWriter(writer), WithName("tester"), WithNameSpacing(20))
35-
36-
log.Info("Hello %s", name)
27+
log.Info("Hello %s", "World")
3728

3829
result := builder.String()
39-
expectedResult := "INFO [ tester] ### Hello " + name
40-
41-
if strings.HasSuffix(result, expectedResult) {
42-
fmt.Println(result)
43-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
44-
}
30+
assert.Contains(t, result, "INFO [ tester]")
31+
assert.Contains(t, result, "### Hello World")
4532
}
4633

4734
func TestInfoExtend(t *testing.T) {
4835
builder := new(strings.Builder)
4936
writer := stringWriter{str: builder}
5037

51-
name := "World"
52-
5338
log := NewLogger(WithLogWriter(writer), WithExtend("--> extend <--"))
54-
55-
log.Info("Hello %s", name)
39+
log.Info("Hello %s", "World")
5640

5741
result := builder.String()
58-
expectedResult := "INFO [logging.test] --> extend <-- ### Hello " + name
59-
60-
if strings.HasSuffix(result, expectedResult) {
61-
fmt.Println(result)
62-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
63-
}
42+
assert.Contains(t, result, "--> extend <--")
43+
assert.Contains(t, result, "### Hello World")
6444
}
6545

6646
func TestInfoSeveritySpacing(t *testing.T) {
6747
builder := new(strings.Builder)
6848
writer := stringWriter{str: builder}
6949

70-
name := "World"
71-
7250
log := NewLogger(WithLogWriter(writer), WithSeveritySpacing(20))
73-
74-
log.Info("Hello %s", name)
51+
log.Info("Hello %s", "World")
7552

7653
result := builder.String()
77-
expectedResult := "INFO [logging.test] ### Hello " + name
78-
79-
if strings.HasSuffix(result, expectedResult) {
80-
fmt.Println(result)
81-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
82-
}
54+
assert.Contains(t, result, "INFO [logging.test]")
55+
assert.Contains(t, result, "### Hello World")
8356
}

logging/struct_log.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package logging
22

33
import (
4+
"fmt"
45
strings2 "strings"
6+
"time"
57

68
"github.com/pmoscode/go-common/strings"
79
)
@@ -18,16 +20,21 @@ const (
1820

1921
// InfoStruct logs a struct in the given format (JSON or YAML) with INFO severity.
2022
func (l *Logger) InfoStruct(format OutputFormat, obj any) {
23+
var structString string
2124
switch format {
2225
case Json:
23-
l.Info(l.addHeader("INFO", strings.PrettyPrintJson(obj)), "")
26+
structString = strings.PrettyPrintJson(obj)
2427
case Yaml:
25-
l.Info(l.addHeader("INFO", strings.PrettyPrintYaml(obj)), "")
28+
structString = strings.PrettyPrintYaml(obj)
2629
}
27-
}
2830

29-
func (l *Logger) addHeader(severity string, structString string) string {
30-
header := l.header(severity)
31+
header := l.header("INFO")
32+
dateStr := time.Now().Format("2006/01/02 15:04:05")
3133

32-
return strings2.ReplaceAll(structString, "\n", "\n"+header)
34+
// Prefix every line with timestamp + header
35+
lines := strings2.Split(structString, "\n")
36+
for _, line := range lines {
37+
formatted := fmt.Sprintf("%s %s%s\n", dateStr, header, line)
38+
_, _ = l.writer.Write([]byte(formatted))
39+
}
3340
}

logging/struct_log_test.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package logging
22

33
import (
4-
"fmt"
54
"strings"
65
"testing"
6+
7+
"github.com/stretchr/testify/assert"
78
)
89

910
func TestInfoStructYaml(t *testing.T) {
@@ -19,17 +20,13 @@ func TestInfoStructYaml(t *testing.T) {
1920
}
2021

2122
log := NewLogger(WithLogWriter(writer), WithName("tester"))
22-
2323
log.InfoStruct(Yaml, structObj)
2424

2525
result := builder.String()
26-
expectedResult := "INFO [ tester] ### one: Hello\nINFO [ tester] ### two: World"
27-
28-
if strings.HasSuffix(result, expectedResult) {
29-
fmt.Println(result)
30-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
31-
}
26+
assert.Contains(t, result, "INFO [ tester] ### one: Hello")
27+
assert.Contains(t, result, "INFO [ tester] ### two: World")
3228
}
29+
3330
func TestInfoStructJson(t *testing.T) {
3431
builder := new(strings.Builder)
3532
writer := stringWriter{str: builder}
@@ -43,14 +40,9 @@ func TestInfoStructJson(t *testing.T) {
4340
}
4441

4542
log := NewLogger(WithLogWriter(writer), WithName("tester"))
46-
4743
log.InfoStruct(Json, structObj)
4844

4945
result := builder.String()
50-
expectedResult := "INFO [ tester] ### {\nINFO [ tester] ### \"One\": \"Hello\",\nINFO [ tester] ### \"Two\": \"World\"\nINFO [ tester] ### }"
51-
52-
if strings.HasSuffix(result, expectedResult) {
53-
fmt.Println(result)
54-
t.Fatalf("Output should be: '%s' but got '%s'", expectedResult, result)
55-
}
46+
assert.Contains(t, result, "INFO [ tester] ### \"One\": \"Hello\",")
47+
assert.Contains(t, result, "INFO [ tester] ### \"Two\": \"World\"")
5648
}

0 commit comments

Comments
 (0)