update
func TestUpdateCompHisStatusById(t *testing.T) {
comp := model.Component{
ID: 1293,
ExtraInfoData: "{\"image_url\": \"\", \"config\": {}, \"multi_field\": [\"show_after_loop\", \"show_seconds\"], \"format\": 0}",
GroupId: 0,
Type: 5,
RitId: 10000001,
Name: "1",
Filters: "[]",
SupportVersion: "[[{\"type\": \"platform_id\", \"value\": 1, \"condition\": \"==\"}, {\"type\": \"app_version\", \"value\": \"0.0.0\", \"condition\": \">=\"}], [{\"type\": \"platform_id\", \"value\": 2, \"condition\": \"==\"}, {\"type\": \"app_version\", \"value\": \"0.0.0\", \"condition\": \">=\"}], [{\"type\": \"platform_id\", \"value\": 4, \"condition\": \"==\"}, {\"type\": \"app_version\", \"value\": \"0.0.0\", \"condition\": \">=\"}]]",
Status: 3,
CreateTime: 1659670886,
UpdateTime: 1659670886,
Creator: "hanyizhen,shiwenkang.12138",
DrawType: 0,
Priority: "[1024]",
}
compHis := model.CompHistory{
ID: 381,
ComponentId: 1293,
Status: 3,
Data: "{\"created_time\":1659670886,\"creator\":\"hanyizhen,shiwenkang.12138\",\"extra_info_data\":{\"config\":{},\"format\":0,\"image_url\":\"\",\"multi_field\":[\"show_after_loop\",\"show_seconds\"]},\"filters\":[],\"id\":1293,\"name\":\"1\",\"priority\":[1024],\"rit_id\":10000001,\"status\":3,\"support_version\":[[{\"condition\":\"==\",\"type\":\"platform_id\",\"value\":1},{\"condition\":\"\\u003e=\",\"type\":\"app_version\",\"value\":\"0.0.0\"}],[{\"condition\":\"==\",\"type\":\"platform_id\",\"value\":2},{\"condition\":\"\\u003e=\",\"type\":\"app_version\",\"value\":\"0.0.0\"}],[{\"condition\":\"==\",\"type\":\"platform_id\",\"value\":4},{\"condition\":\"\\u003e=\",\"type\":\"app_version\",\"value\":\"0.0.0\"}]],\"type\":5,\"updated_time\":1659670886}",
Version: 6,
CreateTime: 1659670988,
Operator: "shiwenkang.12138",
}
db, mock, err := sqlmock.New()
if err != nil {
t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
}
defer db.Close()
mock.ExpectBegin()
mock.ExpectExec("UPDATE `api_component_version` .* ").
WillReturnResult(sqlmock.NewResult(1, 1))
mock.ExpectCommit()
gormDB, err := gorm.Open(mysql.New(mysql.Config{
SkipInitializeWithVersion: true,
Conn: db,
}), &gorm.Config{})
if err != nil {
t.Fatalf("Init DB with sqlmock failed, err %v", err)
}
res, err := UpdateCompHisStatusById(context.Background(), gormDB, comp, compHis, 1, 10)
assert.NotNil(t, res)
assert.Nil(t, err)
assert.Equal(t, int64(10), res.Status)
}```
## select
```go
func TestGetCompHisByCompIdAndVersionAndStatus(t *testing.T) {
db, mock, err := sqlmock.New()
if err != nil {
t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
}
defer db.Close()
rows := sqlmock.NewRows(
[]string{"id", "component_id", "status", "data", "version", "created_time", "operator"},
).AddRow([]driver.Value{1293, 1293, 10, "data", 1, 1659670988, "shiwenkang.12138"}...)
mock.ExpectQuery("SELECT .*").WillReturnRows(rows)
gormDB, err := gorm.Open(mysql.New(mysql.Config{
SkipInitializeWithVersion: true,
Conn: db,
}), &gorm.Config{})
if err != nil {
t.Fatalf("Init DB with sqlmock failed, err %v", err)
}
res, err := GetCompHisByCompIdAndVersionAndStatus(context.Background(), gormDB, 1293, 1, 10)
assert.NotNil(t, res)
assert.Equal(t, int64(1), res.Version)
assert.Equal(t, int64(10), res.Status)
assert.Equal(t, int64(1293), res.ComponentId)
assert.Nil(t, err)
}