Skip to content

Commit 5024529

Browse files
committed
test: textlog formatting
1 parent d2da42c commit 5024529

2 files changed

Lines changed: 59 additions & 17 deletions

File tree

reference_test.go

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package jsonlog
22

33
import (
4+
"strings"
45
"testing"
56

67
"github.com/NextronSystems/jsonlog/jsonpointer"
@@ -27,7 +28,7 @@ type testObject struct {
2728

2829
Subfield5 string `json:"subfield5" textlog:"subfield5"`
2930

30-
Valuer TestEventValuer `json:"valuer" textlog:"valuer"`
31+
Resolver TestResolver `json:"resolver" textlog:"resolver"`
3132

3233
SubObject *SubObject `json:"subobject" textlog:"subobject,expand"`
3334
}
@@ -50,13 +51,19 @@ func (u UnexpandedSubstruct) String() string {
5051
return u.SubField4
5152
}
5253

53-
type TestEventValuer struct {
54+
type TestResolver struct {
5455
Subfield6 string `json:"subfield6"`
5556
Subfield7 string `json:"subfield7"`
5657
Ignore string
5758
}
5859

59-
func (t *TestEventValuer) RelativeTextPointer(pointee any) (string, bool, bool) {
60+
func (t TestResolver) String() string {
61+
return strings.Join([]string{t.Subfield6, t.Subfield7}, ", ")
62+
}
63+
64+
var _ TextReferenceResolver = (*TestResolver)(nil)
65+
66+
func (t *TestResolver) RelativeTextPointer(pointee any) (string, bool, bool) {
6067
virtual := true // We do not implement TextlogMarshaler
6168
if pointee == &t.Subfield6 {
6269
return "subfield6", virtual, true
@@ -67,7 +74,9 @@ func (t *TestEventValuer) RelativeTextPointer(pointee any) (string, bool, bool)
6774
return "", false, false
6875
}
6976

70-
func (t *TestEventValuer) RelativeJsonPointer(pointee any) jsonpointer.Pointer {
77+
var _ JsonReferenceResolver = (*TestResolver)(nil)
78+
79+
func (t *TestResolver) RelativeJsonPointer(pointee any) jsonpointer.Pointer {
7180
if pointee == &t.Subfield6 {
7281
return jsonpointer.New("subfield6")
7382
}
@@ -89,8 +98,8 @@ func TestReference_ToJsonPointer(t *testing.T) {
8998
test.Nested.Substruct.SubField3 = "subfield3"
9099
test.Unexpanded.SubField4 = "subfield4"
91100
test.Subfield5 = "subfield5"
92-
test.Valuer.Subfield6 = "subfield6"
93-
test.Valuer.Subfield7 = "subfield7"
101+
test.Resolver.Subfield6 = "subfield6"
102+
test.Resolver.Subfield7 = "subfield7"
94103
test.SubObject = &SubObject{Subfield8: "subfield8"}
95104
test.Recursive = NewReference(&test, &test.Substruct)
96105

@@ -107,9 +116,9 @@ func TestReference_ToJsonPointer(t *testing.T) {
107116
{&test.Unexpanded, "/unexpanded"},
108117
{&test.Unexpanded.SubField4, "/unexpanded/subfield4"},
109118
{&test.Subfield5, "/subfield5"},
110-
{&test.Valuer, "/valuer"},
111-
{&test.Valuer.Subfield6, "/valuer/subfield6"},
112-
{&test.Valuer.Subfield7, "/valuer/subfield7"},
119+
{&test.Resolver, "/resolver"},
120+
{&test.Resolver.Subfield6, "/resolver/subfield6"},
121+
{&test.Resolver.Subfield7, "/resolver/subfield7"},
113122
{&test.SubObject, "/subobject"},
114123
{&test.SubObject.Subfield8, "/subobject/subfield8"},
115124
// test.Recursive not required here: if there is a flaw in the pointer
@@ -130,9 +139,10 @@ func TestReference_ToTextPointer(t *testing.T) {
130139
test.Nested.Substruct.SubField3 = "subfield3"
131140
test.Unexpanded.SubField4 = "subfield4"
132141
test.Subfield5 = "subfield5"
133-
test.Valuer.Subfield6 = "subfield6"
134-
test.Valuer.Subfield7 = "subfield7"
142+
test.Resolver.Subfield6 = "subfield6"
143+
test.Resolver.Subfield7 = "subfield7"
135144
test.SubObject = &SubObject{Subfield8: "subfield8"}
145+
test.Recursive = NewReference(&test, &test.Substruct)
136146

137147
var tests = []struct {
138148
PointedField any
@@ -147,9 +157,9 @@ func TestReference_ToTextPointer(t *testing.T) {
147157
{&test.Unexpanded, "UNEXPANDED"},
148158
{&test.Unexpanded.SubField4, ""},
149159
{&test.Subfield5, "SUBFIELD5"},
150-
{&test.Valuer, "VALUER"},
151-
{&test.Valuer.Subfield6, "subfield6"},
152-
{&test.Valuer.Subfield7, "subfield7"},
160+
{&test.Resolver, "RESOLVER"},
161+
{&test.Resolver.Subfield6, "subfield6"},
162+
{&test.Resolver.Subfield7, "subfield7"},
153163
{&test.SubObject, "SUBOBJECT"},
154164
{&test.SubObject.Subfield8, "SUBOBJECT_SUBFIELD8"},
155165
}

textlog_test.go

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import (
88
"github.com/stretchr/testify/assert"
99
)
1010

11-
type TestObject struct {
11+
// TextlogTestObject is a test object to test textlog-specific details, mainly
12+
// that is the TextlogFormatter's behavior.
13+
type TextlogTestObject struct {
1214
ObjectHeader
1315
Element1 string `json:"element1" textlog:"element1"`
1416
_ string `json:"-" textlog:"ignored"`
@@ -28,9 +30,9 @@ type SimpleSubstruct struct {
2830
}
2931

3032
func TestToDetails(t *testing.T) {
31-
var test = TestObject{
33+
var test = TextlogTestObject{
3234
ObjectHeader: ObjectHeader{
33-
Type: "testobject",
35+
Type: "textlogtestobject",
3436
},
3537
Element1: "element1",
3638
Element2: "element2",
@@ -63,3 +65,33 @@ func TestToDetails(t *testing.T) {
6365
{"TIME", "0001-01-01T00:00:00Z"},
6466
}, details)
6567
}
68+
69+
func TestTextlogFormatting(t *testing.T) {
70+
var test testObject
71+
test.Substruct.SubField1 = "subfield1"
72+
test.SubField2 = "subfield2"
73+
test.Nested.Substruct.SubField3 = "subfield3"
74+
test.Unexpanded.SubField4 = "subfield4"
75+
test.Subfield5 = "subfield5"
76+
test.Resolver.Subfield6 = "subfield6"
77+
test.Resolver.Subfield7 = "subfield7"
78+
test.SubObject = &SubObject{Subfield8: "subfield8"}
79+
test.Recursive = NewReference(&test, &test.Substruct)
80+
81+
formatter := TextlogFormatter{
82+
FormatValue: func(data any, modifiers []string) string {
83+
return fmt.Sprint(data)
84+
},
85+
}
86+
details := formatter.Format(test)
87+
t.Log(details)
88+
assert.Equal(t, TextlogEntry{
89+
{"SUBSTRUCT_SUBFIELD1", "subfield1"},
90+
{"SUBFIELD2", "subfield2"},
91+
{"NESTED_SUBFIELD3", "subfield3"},
92+
{"UNEXPANDED", "subfield4"},
93+
{"SUBFIELD5", "subfield5"},
94+
{"RESOLVER", "subfield6, subfield7"},
95+
{"SUBOBJECT_SUBFIELD8", "subfield8"},
96+
}, details)
97+
}

0 commit comments

Comments
 (0)