61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package formatters
|
|
|
|
import (
|
|
"encoding/json"
|
|
_ "fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"codeark.it/Bithero-Agency-Go/logfrog-go"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestJsonFormatter(t *testing.T) {
|
|
|
|
created, err := time.Parse(time.RFC3339Nano, "2006-01-02T15:04:05.999999999+07:00")
|
|
assert.NoError(t, err)
|
|
|
|
r := logfrog.NewLogRecord(0, created, logfrog.INFO, "hello world", logfrog.Fields{
|
|
"animal": "cat",
|
|
"color": "red",
|
|
})
|
|
|
|
t.Run("non-pretty with newline", func(t *testing.T) {
|
|
f := NewJsonFormatter(true)
|
|
f.Ref()
|
|
|
|
result, err := f.Format(r)
|
|
assert.NoError(t, err)
|
|
|
|
var rr *logfrog.LogRecord = &logfrog.LogRecord{}
|
|
err = json.Unmarshal(result, rr)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, r.Created, rr.Created)
|
|
assert.Equal(t, r.Level, rr.Level)
|
|
assert.Equal(t, r.Message, rr.Message)
|
|
assert.Equal(t, r.Caller, rr.Caller)
|
|
assert.Equal(t, r.Fields, rr.Fields)
|
|
|
|
err = f.Unref()
|
|
assert.NoError(t, err)
|
|
})
|
|
|
|
t.Run("non-pretty without newline", func(t *testing.T) {
|
|
f := NewJsonFormatter(false)
|
|
|
|
result, err := f.Format(r)
|
|
assert.NoError(t, err)
|
|
|
|
var rr *logfrog.LogRecord = &logfrog.LogRecord{}
|
|
err = json.Unmarshal(result, rr)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, r.Created, rr.Created)
|
|
assert.Equal(t, r.Level, rr.Level)
|
|
assert.Equal(t, r.Message, rr.Message)
|
|
assert.Equal(t, r.Caller, rr.Caller)
|
|
assert.Equal(t, r.Fields, rr.Fields)
|
|
})
|
|
|
|
} |