code: func UpdateWhere(t *testing.T, repo grimoire.Repo) {
  	user := User{Name: "update all"}
  	repo.From(users).MustSave(&user)
  
  	address := Address{Address: "update all"}
  	repo.From(addresses).MustSave(&address)
  
  	tests := []struct {
  		query  grimoire.Query
  		schema interface{}
  		record interface{}
  		params params.Params
  	}{
  		{repo.From(users).Where(c.Eq(name, "update all")), User{}, &[]User{}, params.Map{"name": "insert", "age": 100}},
  		{repo.From(addresses).Where(c.Eq(c.I("address"), "update_all")), Address{}, &[]Address{}, params.Map{"address": "address", "user_id": user.ID}},
  	}
  
  	for _, test := range tests {
  		ch := changeset.Cast(test.schema, test.params, []string{"name", "age", "note", "address", "user_id"})
  		statement, _ := builder.Update(test.query.Collection, ch.Changes(), test.query.Condition)
  
  		t.Run("UpdateWhere|"+statement, func(t *testing.T) {
  			assert.Nil(t, ch.Error())
  
  			assert.Nil(t, test.query.Update(nil, ch))
  			assert.Nil(t, test.query.Update(test.record, ch))
  		})
  	}
  }
docs: // UpdateWhere tests update specifications.