54 lines
2.1 KiB
Go
54 lines
2.1 KiB
Go
package common
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
|
"github.com/gogf/gf/v2/database/gdb"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
|
|
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/library/batchmetadata"
|
|
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model/entity"
|
|
)
|
|
|
|
func TestSaveBatchMainExecutionMetadata(t *testing.T) {
|
|
ctx := context.Background()
|
|
if err := gdb.SetConfig(gdb.Config{"default": gdb.ConfigGroup{{Type: "sqlite", Link: "sqlite::@file(:memory:)", MaxOpenConnCount: 1}}}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Cleanup(func() { _ = g.DB().Close(ctx) })
|
|
if err := g.DB().GetCore().ClearTableFieldsAll(ctx); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := g.DB().Exec(ctx, "CREATE TABLE batch_main (id INTEGER PRIMARY KEY AUTOINCREMENT, batch_no TEXT, tenant_id TEXT, dept_id INTEGER, source_channel TEXT, execution_mode INTEGER)"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, mode := range []int{batchmetadata.Single, batchmetadata.Bulk} {
|
|
batchNo := "SINGLE"
|
|
if mode == batchmetadata.Bulk {
|
|
batchNo = "BULK"
|
|
}
|
|
if err := g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
|
|
return New().SaveBatchMain(ctx, tx, &entity.BatchMain{BatchNo: batchNo, TenantId: "A", DeptId: 7}, mode)
|
|
}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
record, err := g.DB().GetOne(ctx, "SELECT * FROM batch_main WHERE batch_no = ?", batchNo)
|
|
if err != nil || record["source_channel"].String() != "api" || record["execution_mode"].Int() != mode || record["tenant_id"].String() != "A" || record["dept_id"].Int() != 7 {
|
|
t.Fatalf("metadata not persisted: record=%+v err=%v", record, err)
|
|
}
|
|
}
|
|
for _, mode := range []int{-1, batchmetadata.Unknown, 3} {
|
|
if err := g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
|
|
return New().SaveBatchMain(ctx, tx, &entity.BatchMain{BatchNo: "INVALID"}, mode)
|
|
}); err == nil {
|
|
t.Fatalf("invalid creation mode accepted: %d", mode)
|
|
}
|
|
}
|
|
count, err := g.DB().GetValue(ctx, "SELECT COUNT(*) FROM batch_main")
|
|
if err != nil || count.Int() != 2 {
|
|
t.Fatalf("invalid batch inserted: count=%v err=%v", count, err)
|
|
}
|
|
}
|