session_update_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright 2017 The Xorm Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package xorm
  5. import (
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestUpdateMap(t *testing.T) {
  10. assert.NoError(t, prepareEngine())
  11. type UpdateTable struct {
  12. Id int64
  13. Name string
  14. Age int
  15. }
  16. assert.NoError(t, testEngine.Sync2(new(UpdateTable)))
  17. var tb = UpdateTable{
  18. Name: "test",
  19. Age: 35,
  20. }
  21. _, err := testEngine.Insert(&tb)
  22. assert.NoError(t, err)
  23. cnt, err := testEngine.Table("update_table").Where("id = ?", tb.Id).Update(map[string]interface{}{
  24. "name": "test2",
  25. "age": 36,
  26. })
  27. assert.NoError(t, err)
  28. assert.EqualValues(t, 1, cnt)
  29. }
  30. func TestUpdateLimit(t *testing.T) {
  31. assert.NoError(t, prepareEngine())
  32. type UpdateTable struct {
  33. Id int64
  34. Name string
  35. Age int
  36. }
  37. assert.NoError(t, testEngine.Sync2(new(UpdateTable)))
  38. var tb = UpdateTable{
  39. Name: "test1",
  40. Age: 35,
  41. }
  42. cnt, err := testEngine.Insert(&tb)
  43. assert.NoError(t, err)
  44. assert.EqualValues(t, 1, cnt)
  45. tb.Name = "test2"
  46. tb.Id = 0
  47. cnt, err = testEngine.Insert(&tb)
  48. assert.NoError(t, err)
  49. assert.EqualValues(t, 1, cnt)
  50. cnt, err = testEngine.OrderBy("name desc").Limit(1).Update(&UpdateTable{
  51. Age: 30,
  52. })
  53. assert.NoError(t, err)
  54. assert.EqualValues(t, 1, cnt)
  55. var uts []UpdateTable
  56. err = testEngine.Find(&uts)
  57. assert.NoError(t, err)
  58. assert.EqualValues(t, 2, len(uts))
  59. assert.EqualValues(t, 35, uts[0].Age)
  60. assert.EqualValues(t, 30, uts[1].Age)
  61. }