Skip to content

Commit 054d010

Browse files
JakenJaken
authored andcommitted
feat: update test case
1 parent 77d047e commit 054d010

File tree

2 files changed

+99
-28
lines changed

2 files changed

+99
-28
lines changed

builder/update/bson_build_test.go

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,52 @@ func TestSetFields(t *testing.T) {
116116
Age int `bson:"age,omitempty"`
117117
}
118118

119-
t.Run("test SetFields", func(t *testing.T) {
120-
assert.Equal(t, bson.D{bson.E{Key: "$set", Value: nil}}, SetFields(nil))
121-
assert.Equal(t, bson.D{bson.E{Key: "$set", Value: "Alice"}}, SetFields("Alice"))
122-
assert.Equal(t, bson.D{bson.E{Key: "$set", Value: map[string]any{"name": "Alice"}}}, SetFields(map[string]any{"name": "Alice"}))
123-
assert.Equal(t, bson.D{bson.E{Key: "$set", Value: bson.D{bson.E{Key: "name", Value: "Alice"}}}}, SetFields(bson.D{bson.E{Key: "name", Value: "Alice"}}))
124-
assert.Equal(t, bson.D{bson.E{Key: "$set", Value: bson.D{bson.E{Key: "name", Value: "Alice"}, bson.E{Key: "age", Value: 18}}}}, SetFields(bson.D{bson.E{Key: "name", Value: "Alice"}, bson.E{Key: "age", Value: 18}}))
125-
assert.Equal(t, bson.D{bson.E{Key: "$set", Value: FieldStruct{Name: "Alice"}}}, SetFields(FieldStruct{Name: "Alice"}))
126-
assert.Equal(t, bson.D{bson.E{Key: "$set", Value: FieldStruct{Name: "Alice", Age: 18}}}, SetFields(FieldStruct{Name: "Alice", Age: 18}))
127-
128-
})
119+
testCases := []struct {
120+
name string
121+
value any
122+
want bson.D
123+
}{
124+
{
125+
name: "nil value",
126+
value: nil,
127+
want: bson.D{bson.E{Key: "$set", Value: nil}},
128+
},
129+
{
130+
name: "string value",
131+
value: "Alice",
132+
want: bson.D{bson.E{Key: "$set", Value: "Alice"}},
133+
},
134+
{
135+
name: "map value",
136+
value: map[string]any{"name": "Alice"},
137+
want: bson.D{bson.E{Key: "$set", Value: map[string]any{"name": "Alice"}}},
138+
},
139+
{
140+
name: "bson value",
141+
value: bson.D{bson.E{Key: "name", Value: "Alice"}},
142+
want: bson.D{bson.E{Key: "$set", Value: bson.D{bson.E{Key: "name", Value: "Alice"}}}},
143+
},
144+
{
145+
name: "multi bson value",
146+
value: bson.D{bson.E{Key: "name", Value: "Alice"}, bson.E{Key: "age", Value: 18}},
147+
want: bson.D{bson.E{Key: "$set", Value: bson.D{bson.E{Key: "name", Value: "Alice"}, bson.E{Key: "age", Value: 18}}}},
148+
},
149+
{
150+
name: "optional field struct value",
151+
value: FieldStruct{Name: "Alice"},
152+
want: bson.D{bson.E{Key: "$set", Value: FieldStruct{Name: "Alice"}}},
153+
},
154+
{
155+
name: "all field struct value",
156+
value: FieldStruct{Name: "Alice", Age: 18},
157+
want: bson.D{bson.E{Key: "$set", Value: FieldStruct{Name: "Alice", Age: 18}}},
158+
},
159+
}
160+
for _, tc := range testCases {
161+
t.Run(tc.name, func(t *testing.T) {
162+
assert.Equal(t, tc.want, SetFields(tc.value))
163+
})
164+
}
129165
}
130166

131167
func TestUnset(t *testing.T) {

builder/update/field_update_builder_test.go

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,24 +34,59 @@ func Test_fieldUpdateBuilder_Set(t *testing.T) {
3434
}
3535

3636
func Test_fieldUpdateBuilder_SetFields(t *testing.T) {
37-
t.Run("nil value", func(t *testing.T) {
38-
assert.Equal(t, bson.D{{Key: "$set", Value: nil}}, NewBuilder().SetFields(nil).Build())
39-
})
40-
41-
t.Run("string value", func(t *testing.T) {
42-
assert.Equal(t, bson.D{{Key: "$set", Value: "cmy"}}, NewBuilder().SetFields("cmy").Build())
43-
})
44-
45-
t.Run("map value", func(t *testing.T) {
46-
assert.Equal(t, bson.D{{Key: "$set", Value: map[string]any{"name": "cmy"}}}, NewBuilder().SetFields(map[string]any{"name": "cmy"}).Build())
47-
})
48-
49-
t.Run("struct value", func(t *testing.T) {
50-
assert.Equal(t, bson.D{{Key: "$set", Value: struct{ Name string }{Name: "cmy"}}}, NewBuilder().SetFields(struct{ Name string }{Name: "cmy"}).Build())
51-
})
52-
53-
t.Run("pointer value", func(t *testing.T) {
54-
assert.Equal(t, bson.D{{Key: "$set", Value: &struct{ Name string }{Name: "cmy"}}}, NewBuilder().SetFields(&struct{ Name string }{Name: "cmy"}).Build())
37+
testCases := []struct {
38+
name string
39+
value any
40+
want bson.D
41+
}{
42+
{
43+
name: "nil value",
44+
value: nil,
45+
want: bson.D{bson.E{Key: "$set", Value: nil}},
46+
},
47+
{
48+
name: "string value",
49+
value: "Alice",
50+
want: bson.D{bson.E{Key: "$set", Value: "Alice"}},
51+
},
52+
{
53+
name: "map value",
54+
value: map[string]any{"name": "Alice"},
55+
want: bson.D{bson.E{Key: "$set", Value: map[string]any{"name": "Alice"}}},
56+
},
57+
{
58+
name: "bson value",
59+
value: bson.D{bson.E{Key: "name", Value: "Alice"}},
60+
want: bson.D{bson.E{Key: "$set", Value: bson.D{bson.E{Key: "name", Value: "Alice"}}}},
61+
},
62+
{
63+
name: "pointer struct value",
64+
value: &bson.D{bson.E{Key: "name", Value: "Alice"}},
65+
want: bson.D{bson.E{Key: "$set", Value: &bson.D{bson.E{Key: "name", Value: "Alice"}}}},
66+
},
67+
{
68+
name: "struct value",
69+
value: struct{ Name string }{Name: "Alice"},
70+
want: bson.D{bson.E{Key: "$set", Value: struct{ Name string }{Name: "Alice"}}},
71+
},
72+
}
73+
74+
for _, tc := range testCases {
75+
t.Run(tc.name, func(t *testing.T) {
76+
assert.Equal(t, tc.want, NewBuilder().SetFields(tc.value).Build())
77+
})
78+
}
79+
80+
t.Run("multiple set_fields", func(t *testing.T) {
81+
assert.Equal(t, bson.D{{Key: "$set", Value: struct{ Name string }{Name: "cmy"}}, {Key: "$set", Value: struct{ Age int64 }{Age: 24}}}, NewBuilder().SetFields(struct{ Name string }{Name: "cmy"}).SetFields(struct{ Age int64 }{Age: 24}).Build())
82+
})
83+
84+
t.Run("set_fields with struct value and set single operation", func(t *testing.T) {
85+
assert.Equal(t, bson.D{{Key: "$set", Value: struct{ Name string }{Name: "cmy"}}, {Key: "$set", Value: bson.D{bson.E{Key: "name", Value: "cmy"}}}}, NewBuilder().SetFields(struct{ Name string }{Name: "cmy"}).Set("name", "cmy").Build())
86+
})
87+
88+
t.Run("set_fields with pointer struct value and set multiple operation", func(t *testing.T) {
89+
assert.Equal(t, bson.D{{Key: "$set", Value: struct{ Name string }{Name: "cmy"}}, {Key: "$set", Value: bson.D{bson.E{Key: "name", Value: "cmy"}, bson.E{Key: "age", Value: 24}}}}, NewBuilder().SetFields(struct{ Name string }{Name: "cmy"}).Set("name", "cmy").Set("age", 24).Build())
5590
})
5691
}
5792

0 commit comments

Comments
 (0)