v1_test.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package v1
  2. import (
  3. "git.sxidc.com/service-supports/dps-sdk/ports"
  4. "math/rand"
  5. "testing"
  6. "time"
  7. )
  8. var tableModelDescribe = ports.TableModelDescribe{
  9. Fields: []ports.TableModelField{
  10. {"ID", "gorm:\"primary_key;type:varchar(32);comment:id;\""},
  11. {"Name", "gorm:\"not null;type:varchar(128);comment:数据库名称;\""},
  12. {"Time", "gorm:\"not null;type:timestamp with time zone;comment:数据库时间;\""},
  13. {"TableNum", "gorm:\"not null;type:integer;comment:数据库表数量;\""},
  14. },
  15. }
  16. func TestAutoMigrate(t *testing.T) {
  17. initClient(t, "localhost:30170")
  18. defer destroyClient(t)
  19. newToolKit(t).autoMigrate(&ports.AutoMigrateRequest{
  20. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  21. TablePrefixWithSchema: "test." + simpleUUID()[0:8],
  22. Version: "v1",
  23. TableModelDescribe: tableModelDescribe,
  24. })
  25. }
  26. func TestInsert(t *testing.T) {
  27. initClient(t, "localhost:30170")
  28. defer destroyClient(t)
  29. tablePrefix := "test." + simpleUUID()[0:8]
  30. id := simpleUUID()
  31. name := simpleUUID()
  32. now := time.Now().Local()
  33. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  34. resultMap := make(map[string]any)
  35. newToolKit(t).
  36. autoMigrate(&ports.AutoMigrateRequest{
  37. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  38. TablePrefixWithSchema: tablePrefix,
  39. Version: "v1",
  40. TableModelDescribe: tableModelDescribe,
  41. }).
  42. insert(&ports.InsertRequest{
  43. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  44. TablePrefixWithSchema: tablePrefix,
  45. Version: "v1",
  46. KeyColumns: []string{"id"},
  47. TableRow: map[string]any{
  48. "id": id,
  49. "name": name,
  50. "time": now,
  51. "table_num": tableNum,
  52. },
  53. UserID: "test",
  54. }).
  55. queryByKeys(&ports.QueryByKeysRequest{
  56. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  57. TablePrefixWithSchema: tablePrefix,
  58. Version: "v1",
  59. KeyValues: map[string]string{"id": id},
  60. }, &resultMap).
  61. assertEqual(id, resultMap["id"], "ID不一致").
  62. assertEqual(name, resultMap["name"], "名称不一致").
  63. assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致").
  64. assertEqual(tableNum, resultMap["table_num"], "表数量不一致")
  65. }
  66. func TestUpdate(t *testing.T) {
  67. initClient(t, "localhost:30170")
  68. defer destroyClient(t)
  69. tablePrefix := "test." + simpleUUID()[0:8]
  70. id := simpleUUID()
  71. name := simpleUUID()
  72. now := time.Now().Local()
  73. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  74. newName := simpleUUID()
  75. newNow := time.Now().Local()
  76. newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  77. resultMap := make(map[string]any)
  78. newToolKit(t).
  79. autoMigrate(&ports.AutoMigrateRequest{
  80. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  81. TablePrefixWithSchema: tablePrefix,
  82. Version: "v1",
  83. TableModelDescribe: tableModelDescribe,
  84. }).
  85. insert(&ports.InsertRequest{
  86. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  87. TablePrefixWithSchema: tablePrefix,
  88. Version: "v1",
  89. KeyColumns: []string{"id"},
  90. TableRow: map[string]any{
  91. "id": id,
  92. "name": name,
  93. "time": now,
  94. "table_num": tableNum,
  95. },
  96. UserID: "test",
  97. }).
  98. update(&ports.UpdateRequest{
  99. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  100. TablePrefixWithSchema: tablePrefix,
  101. Version: "v1",
  102. KeyValues: map[string]string{"id": id},
  103. NewTableRow: map[string]any{
  104. "id": id,
  105. "name": newName,
  106. "time": newNow,
  107. "table_num": newTableNum,
  108. },
  109. UserID: "test",
  110. }).
  111. queryByKeys(&ports.QueryByKeysRequest{
  112. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  113. TablePrefixWithSchema: tablePrefix,
  114. Version: "v1",
  115. KeyValues: map[string]string{"id": id},
  116. }, &resultMap).
  117. assertEqual(id, resultMap["id"], "ID不一致").
  118. assertEqual(newName, resultMap["name"], "名称不一致").
  119. assertEqual(newNow.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致").
  120. assertEqual(newTableNum, resultMap["table_num"], "表数量不一致")
  121. }
  122. func TestDelete(t *testing.T) {
  123. initClient(t, "localhost:30170")
  124. defer destroyClient(t)
  125. tablePrefix := "test." + simpleUUID()[0:8]
  126. id := simpleUUID()
  127. name := simpleUUID()
  128. now := time.Now().Local()
  129. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  130. var count int64
  131. newToolKit(t).
  132. autoMigrate(&ports.AutoMigrateRequest{
  133. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  134. TablePrefixWithSchema: tablePrefix,
  135. Version: "v1",
  136. TableModelDescribe: tableModelDescribe,
  137. }).
  138. insert(&ports.InsertRequest{
  139. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  140. TablePrefixWithSchema: tablePrefix,
  141. Version: "v1",
  142. KeyColumns: []string{"id"},
  143. TableRow: map[string]any{
  144. "id": id,
  145. "name": name,
  146. "time": now,
  147. "table_num": tableNum,
  148. },
  149. UserID: "test",
  150. }).
  151. delete(&ports.DeleteRequest{
  152. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  153. TablePrefixWithSchema: tablePrefix,
  154. Version: "v1",
  155. KeyValues: map[string]string{"id": id},
  156. UserID: "test",
  157. }).
  158. countWhere(&ports.CountWhereRequest{
  159. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  160. TablePrefixWithSchema: tablePrefix,
  161. Version: "v1",
  162. Where: []ports.ColumnCompare{
  163. {
  164. Column: "id",
  165. Value: id,
  166. Compare: ports.CompareEqual,
  167. },
  168. },
  169. }, &count).
  170. assertEqual(int64(0), count, "数量不一致")
  171. }