@@ -222,6 +222,88 @@ func TestUpdater_e2e_UpdateOne(t *testing.T) {
222222 return assert .NoError (t , err )
223223 },
224224 },
225+
226+ {
227+ name : "update one success when update use set_fields with struct" ,
228+ before : func (ctx context.Context , t * testing.T ) {
229+ insertResult , err := collection .InsertOne (ctx , User {Id : "1" , Name : "Mingyong Chen" , Age : 18 })
230+ assert .NoError (t , err )
231+ assert .NotNil (t , insertResult .InsertedID )
232+ },
233+ after : func (ctx context.Context , t * testing.T ) {
234+ deleteResult , err := collection .DeleteOne (ctx , query .NewBuilder ().Eq ("name" , "chenmingyong" ).Eq ("age" , 19 ).Build ())
235+ assert .NoError (t , err )
236+ assert .Equal (t , int64 (1 ), deleteResult .DeletedCount )
237+ },
238+ ctx : context .Background (),
239+ filter : query .Id ("1" ),
240+ updates : update .SetFields (User {Id : "1" , Name : "chenmingyong" , Age : 19 }),
241+ want : & mongo.UpdateResult {MatchedCount : 1 , ModifiedCount : 1 , UpsertedCount : 0 , UpsertedID : nil , Acknowledged : true },
242+ wantErr : func (t assert.TestingT , err error , i ... interface {}) bool {
243+ return assert .NoError (t , err )
244+ },
245+ },
246+ {
247+ name : "update one success when update use set_fields with one field struct" ,
248+ before : func (ctx context.Context , t * testing.T ) {
249+ insertResult , err := collection .InsertOne (ctx , UserTestField {Id : "1" , Name : "Mingyong Chen" , Age : 18 })
250+ assert .NoError (t , err )
251+ assert .NotNil (t , insertResult .InsertedID )
252+ },
253+ after : func (ctx context.Context , t * testing.T ) {
254+ deleteResult , err := collection .DeleteOne (ctx , query .NewBuilder ().Eq ("name" , "chenmingyong" ).Eq ("age" , 18 ).Build ())
255+ assert .NoError (t , err )
256+ assert .Equal (t , int64 (1 ), deleteResult .DeletedCount )
257+ },
258+ ctx : context .Background (),
259+ filter : query .Id ("1" ),
260+ updates : update .SetFields (UserTestField {Id : "1" , Name : "chenmingyong" }),
261+ want : & mongo.UpdateResult {MatchedCount : 1 , ModifiedCount : 1 , UpsertedCount : 0 , UpsertedID : nil , Acknowledged : true },
262+ wantErr : func (t assert.TestingT , err error , i ... interface {}) bool {
263+ return assert .NoError (t , err )
264+ },
265+ },
266+ {
267+ name : "update one success when update use set_fields with struct pointer" ,
268+ before : func (ctx context.Context , t * testing.T ) {
269+ insertResult , err := collection .InsertOne (ctx , User {Id : "1" , Name : "Mingyong Chen" , Age : 18 })
270+ assert .NoError (t , err )
271+ assert .NotNil (t , insertResult .InsertedID )
272+ },
273+ after : func (ctx context.Context , t * testing.T ) {
274+ deleteResult , err := collection .DeleteOne (ctx , query .NewBuilder ().Eq ("name" , "chenmingyong" ).Eq ("age" , 19 ).Build ())
275+ assert .NoError (t , err )
276+ assert .Equal (t , int64 (1 ), deleteResult .DeletedCount )
277+ },
278+ ctx : context .Background (),
279+ filter : query .Id ("1" ),
280+ updates : update .SetFields (& User {Id : "1" , Name : "chenmingyong" , Age : 19 }),
281+ want : & mongo.UpdateResult {MatchedCount : 1 , ModifiedCount : 1 , UpsertedCount : 0 , UpsertedID : nil , Acknowledged : true },
282+ wantErr : func (t assert.TestingT , err error , i ... interface {}) bool {
283+ return assert .NoError (t , err )
284+ },
285+ },
286+ {
287+ name : "update one success when update use set_fields with map" ,
288+ before : func (ctx context.Context , t * testing.T ) {
289+ insertResult , err := collection .InsertOne (ctx , User {Id : "1" , Name : "Mingyong Chen" , Age : 18 })
290+ assert .NoError (t , err )
291+ assert .NotNil (t , insertResult .InsertedID )
292+ },
293+ after : func (ctx context.Context , t * testing.T ) {
294+ deleteResult , err := collection .DeleteOne (ctx , query .NewBuilder ().Eq ("name" , "chenmingyong" ).Eq ("age" , 19 ).Build ())
295+ assert .NoError (t , err )
296+ assert .Equal (t , int64 (1 ), deleteResult .DeletedCount )
297+ },
298+ ctx : context .Background (),
299+ filter : query .Id ("1" ),
300+ updates : update .SetFields (map [string ]any {"name" : "chenmingyong" , "age" : 19 }),
301+ want : & mongo.UpdateResult {MatchedCount : 1 , ModifiedCount : 1 , UpsertedCount : 0 , UpsertedID : nil , Acknowledged : true },
302+ wantErr : func (t assert.TestingT , err error , i ... interface {}) bool {
303+ return assert .NoError (t , err )
304+ },
305+ },
306+
225307 {
226308 name : "upserted count is 1" ,
227309 before : func (ctx context.Context , t * testing.T ) {
0 commit comments