浏览代码

完成事务批量操作测试

yjp 1 年之前
父节点
当前提交
b313ca2ae7
共有 1 个文件被更改,包括 146 次插入0 次删除
  1. 146 0
      test/v1/v1_test.go

+ 146 - 0
test/v1/v1_test.go

@@ -182,6 +182,152 @@ func TestTransaction(t *testing.T) {
 		assertEqual(int64(0), count, "数量不一致")
 }
 
+func TestTransactionBatch(t *testing.T) {
+	initClient(t, "localhost:30170")
+	defer destroyClient(t)
+
+	tablePrefix := "test." + simpleUUID()[0:8]
+
+	id1 := simpleUUID()
+	name1 := simpleUUID()
+	now1 := time.Now().Local()
+	tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10)
+
+	id2 := simpleUUID()
+	name2 := simpleUUID()
+	now2 := time.Now().Local()
+	tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10)
+
+	var count int64
+	resultMap := make(map[string]any)
+
+	newToolKit(t).
+		autoMigrate(&ports.AutoMigrateRequest{
+			DatabaseID:            "2b78141779ee432295ca371b91c5cac7",
+			TablePrefixWithSchema: tablePrefix,
+			Version:               "v1",
+			TableModelDescribe:    tableModelDescribe,
+		}).
+		transaction("2b78141779ee432295ca371b91c5cac7", func(tx ports.Transaction) error {
+			statement, err := tx.InsertBatchTx(&ports.InsertBatchRequest{
+				DatabaseID: "2b78141779ee432295ca371b91c5cac7",
+				Items: []*ports.InsertTableItem{
+					{
+						TablePrefixWithSchema: tablePrefix,
+						Version:               "v1",
+						Items: []*ports.InsertItem{
+							{
+								KeyColumns: []string{"id"},
+								TableRow: map[string]any{
+									"id":        id1,
+									"name":      name1,
+									"time":      now1,
+									"table_num": tableNum1,
+								},
+							},
+							{
+								KeyColumns: []string{"id"},
+								TableRow: map[string]any{
+									"id":        id2,
+									"name":      name2,
+									"time":      now2,
+									"table_num": tableNum2,
+								},
+							},
+						},
+					},
+				},
+				UserID: "test",
+			})
+			if err != nil {
+				return err
+			}
+
+			fmt.Println(statement)
+
+			err = tx.End()
+			if err != nil {
+				return err
+			}
+
+			return nil
+		}).
+		queryByKeys(&ports.QueryByKeysRequest{
+			DatabaseID:            "2b78141779ee432295ca371b91c5cac7",
+			TablePrefixWithSchema: tablePrefix,
+			Version:               "v1",
+			KeyValues:             map[string]string{"id": id1},
+		}, &resultMap).
+		assertEqual(id1, resultMap["id"], "ID不一致").
+		assertEqual(name1, resultMap["name"], "名称不一致").
+		assertEqual(now1.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致").
+		assertEqual(tableNum1, resultMap["table_num"], "表数量不一致").
+		queryByKeys(&ports.QueryByKeysRequest{
+			DatabaseID:            "2b78141779ee432295ca371b91c5cac7",
+			TablePrefixWithSchema: tablePrefix,
+			Version:               "v1",
+			KeyValues:             map[string]string{"id": id2},
+		}, &resultMap).
+		assertEqual(id2, resultMap["id"], "ID不一致").
+		assertEqual(name2, resultMap["name"], "名称不一致").
+		assertEqual(now2.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致").
+		assertEqual(tableNum2, resultMap["table_num"], "表数量不一致").
+		transaction("2b78141779ee432295ca371b91c5cac7", func(tx ports.Transaction) error {
+			statement, err := tx.DeleteBatchTx(&ports.DeleteBatchRequest{
+				DatabaseID: "2b78141779ee432295ca371b91c5cac7",
+				Items: []*ports.DeleteTableItem{
+					{
+						TablePrefixWithSchema: tablePrefix,
+						Version:               "v1",
+						Items: []*ports.DeleteItem{
+							{KeyValues: map[string]string{"id": id1}},
+							{KeyValues: map[string]string{"id": id2}},
+						},
+					},
+				},
+				UserID: "test",
+			})
+			if err != nil {
+				return err
+			}
+
+			fmt.Println(statement)
+
+			err = tx.End()
+			if err != nil {
+				return err
+			}
+
+			return nil
+		}).
+		countWhere(&ports.CountWhereRequest{
+			DatabaseID:            "2b78141779ee432295ca371b91c5cac7",
+			TablePrefixWithSchema: tablePrefix,
+			Version:               "v1",
+			Where: []ports.ColumnCompare{
+				{
+					Column:  "id",
+					Value:   id1,
+					Compare: ports.CompareEqual,
+				},
+			},
+		}, &count).
+		assertEqual(int64(0), count, "数量不一致").
+		countWhere(&ports.CountWhereRequest{
+			DatabaseID:            "2b78141779ee432295ca371b91c5cac7",
+			TablePrefixWithSchema: tablePrefix,
+			Version:               "v1",
+			Where: []ports.ColumnCompare{
+				{
+					Column:  "id",
+					Value:   id2,
+					Compare: ports.CompareEqual,
+				},
+			},
+		}, &count).
+		assertEqual(int64(0), count, "数量不一致")
+}
+
 func TestInsert(t *testing.T) {
 	initClient(t, "localhost:30170")
 	defer destroyClient(t)