logfrog-go/formatters/json_test.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)
})
}