99 lines
2.1 KiB
Go
99 lines
2.1 KiB
Go
// Copyright 2017 The Xorm Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package xorm
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestUpdateMap(t *testing.T) {
|
|
assert.NoError(t, prepareEngine())
|
|
|
|
type UpdateTable struct {
|
|
Id int64
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
assert.NoError(t, testEngine.Sync2(new(UpdateTable)))
|
|
var tb = UpdateTable{
|
|
Name: "test",
|
|
Age: 35,
|
|
}
|
|
_, err := testEngine.Insert(&tb)
|
|
assert.NoError(t, err)
|
|
|
|
cnt, err := testEngine.Table("update_table").Where("id = ?", tb.Id).Update(map[string]interface{}{
|
|
"name": "test2",
|
|
"age": 36,
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 1, cnt)
|
|
}
|
|
|
|
func TestUpdateLimit(t *testing.T) {
|
|
assert.NoError(t, prepareEngine())
|
|
|
|
type UpdateTable struct {
|
|
Id int64
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
assert.NoError(t, testEngine.Sync2(new(UpdateTable)))
|
|
var tb = UpdateTable{
|
|
Name: "test1",
|
|
Age: 35,
|
|
}
|
|
cnt, err := testEngine.Insert(&tb)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
tb.Name = "test2"
|
|
tb.Id = 0
|
|
cnt, err = testEngine.Insert(&tb)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
cnt, err = testEngine.OrderBy("name desc").Limit(1).Update(&UpdateTable{
|
|
Age: 30,
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
var uts []UpdateTable
|
|
err = testEngine.Find(&uts)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 2, len(uts))
|
|
assert.EqualValues(t, 35, uts[0].Age)
|
|
assert.EqualValues(t, 30, uts[1].Age)
|
|
}
|
|
|
|
func TestUpdate(t *testing.T) {
|
|
assert.NoError(t, prepareEngine())
|
|
|
|
type UpdateTable2 struct {
|
|
Id int64 `xorm:"autoincr pk"`
|
|
Msg string `xorm:"varchar(255)"`
|
|
Created time.Time `xorm:"datetime updated"`
|
|
}
|
|
|
|
assert.NoError(t, testEngine.Sync2(new(UpdateTable2)))
|
|
|
|
data := UpdateTable2{Msg: "test1"}
|
|
|
|
cnt, err := testEngine.Insert(&data)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
cnt, err = testEngine.Where("id = ?", data.Id).Update(&UpdateTable2{
|
|
Msg: "test2",
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 1, cnt)
|
|
}
|