|
|
@@ -0,0 +1,226 @@
|
|
|
+package test
|
|
|
+
|
|
|
+import (
|
|
|
+ "git.sxidc.com/go-framework/baize/framework/core/tag/sql/sql_mapping"
|
|
|
+ "git.sxidc.com/go-tools/utils/encoding"
|
|
|
+ "git.sxidc.com/go-tools/utils/strutils"
|
|
|
+ "strings"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+type SqlMappingStruct struct {
|
|
|
+ Ignore string `sqlmapping:"-"`
|
|
|
+ Column string `sqlmapping:"column:test_column"`
|
|
|
+ Key string `sqlmapping:"key"`
|
|
|
+ NotUpdate string `sqlmapping:"notUpdate"`
|
|
|
+ UpdateClear string `sqlmapping:"updateClear"`
|
|
|
+ Aes string `sqlmapping:"aes:@MKU^*HF%p%G43Fd)UAHCVD#$XZSWQ@L"`
|
|
|
+ JoinWith []string `sqlmapping:"joinWith:##"`
|
|
|
+ Trim string `sqlmapping:"trim:||"`
|
|
|
+ TrimPrefix string `sqlmapping:"trimPrefix:{{"`
|
|
|
+ TrimSuffix string `sqlmapping:"trimSuffix:}}"`
|
|
|
+ WrongAes int `sqlmapping:"aes:@MKU^*HF%p%G43Fd)UAHCVD#$XZSWQ@L"`
|
|
|
+ WrongJoinWith string `sqlmapping:"joinWith:##"`
|
|
|
+ WrongTrim int `sqlmapping:"trim:||"`
|
|
|
+ WrongTrimPrefix int `sqlmapping:"trimPrefix:{{"`
|
|
|
+ WrongTrimSuffix int `sqlmapping:"trimSuffix:}}"`
|
|
|
+}
|
|
|
+
|
|
|
+func (s SqlMappingStruct) checkFields(t *testing.T, fields []sql_mapping.Field) {
|
|
|
+ for _, field := range fields {
|
|
|
+ if field.FieldName == "Ignore" || field.ColumnName == "ignore" {
|
|
|
+ t.Fatal("忽略字段没有被忽略")
|
|
|
+ }
|
|
|
+
|
|
|
+ switch field.FieldName {
|
|
|
+ case "Column":
|
|
|
+ if s.Column != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.Column, field.Value)
|
|
|
+ }
|
|
|
+
|
|
|
+ if field.ColumnName != "test_column" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+ case "Key":
|
|
|
+ if field.ColumnName != "key" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.Key != field.Value {
|
|
|
+ t.Fatalf("值不正确: fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.Key, field.Value)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !field.IsKey {
|
|
|
+ t.Fatal("key解析错误")
|
|
|
+ }
|
|
|
+ case "NotUpdate":
|
|
|
+ if field.ColumnName != "not_update" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.NotUpdate != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.NotUpdate, field.Value)
|
|
|
+ }
|
|
|
+
|
|
|
+ if field.CanUpdate {
|
|
|
+ t.Fatal("notUpdate解析错误")
|
|
|
+ }
|
|
|
+ case "UpdateClear":
|
|
|
+ if field.ColumnName != "update_clear" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.UpdateClear != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.UpdateClear, field.Value)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !field.CanUpdateClear {
|
|
|
+ t.Fatal("updateClear解析错误")
|
|
|
+ }
|
|
|
+ case "Aes":
|
|
|
+ if field.ColumnName != "aes" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ encrypted, err := encoding.AESEncrypt(s.Aes, "@MKU^*HF%p%G43Fd)UAHCVD#$XZSWQ@L")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if encrypted != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, encrypted, field.Value)
|
|
|
+ }
|
|
|
+ case "JoinWith":
|
|
|
+ if field.ColumnName != "join_with" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if strings.Join(s.JoinWith, "##") != field.Value {
|
|
|
+ t.Fatalf("值不正确: fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, strings.Join(s.JoinWith, "##"), field.Value)
|
|
|
+ }
|
|
|
+ case "Trim":
|
|
|
+ if field.ColumnName != "trim" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if strings.Trim(s.Trim, "||") != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, strings.Trim(s.Trim, "||"), field.Value)
|
|
|
+ }
|
|
|
+ case "TrimPrefix":
|
|
|
+ if field.ColumnName != "trim_prefix" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if strings.TrimPrefix(s.TrimPrefix, "{{") != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, strings.TrimPrefix(s.TrimPrefix, "{{"), field.Value)
|
|
|
+ }
|
|
|
+ case "TrimSuffix":
|
|
|
+ if field.ColumnName != "trim_suffix" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if strings.TrimSuffix(s.TrimSuffix, "}}") != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, strings.TrimSuffix(s.TrimPrefix, "}}"), field.Value)
|
|
|
+ }
|
|
|
+ case "WrongAes":
|
|
|
+ if field.ColumnName != "wrong_aes" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.WrongAes != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.WrongAes, field.Value)
|
|
|
+ }
|
|
|
+ case "WrongJoinWith":
|
|
|
+ if field.ColumnName != "wrong_join_with" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.WrongJoinWith != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.WrongJoinWith, field.Value)
|
|
|
+ }
|
|
|
+ case "WrongTrim":
|
|
|
+ if field.ColumnName != "wrong_trim" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.WrongTrim != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.WrongTrim, field.Value)
|
|
|
+ }
|
|
|
+ case "WrongTrimPrefix":
|
|
|
+ if field.ColumnName != "wrong_trim_prefix" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.WrongTrimPrefix != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.WrongTrimPrefix, field.Value)
|
|
|
+ }
|
|
|
+ case "WrongTrimSuffix":
|
|
|
+ if field.ColumnName != "wrong_trim_suffix" {
|
|
|
+ t.Fatalf("列名解析测试错误: fieldName: %v, actual columnName: %v",
|
|
|
+ field.FieldName, field.ColumnName)
|
|
|
+ }
|
|
|
+
|
|
|
+ if s.WrongTrimSuffix != field.Value {
|
|
|
+ t.Fatalf("值不正确:fieldName: %v, fieldValue %v, tagValue %v",
|
|
|
+ field.FieldName, s.WrongTrimPrefix, field.Value)
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ t.Fatalf("未知的字段名: tag fieldName: %v", field.FieldName)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestSqlMappingTagDefaultTag(t *testing.T) {
|
|
|
+ s := SqlMappingStruct{
|
|
|
+ Ignore: strutils.SimpleUUID(),
|
|
|
+ Column: strutils.SimpleUUID(),
|
|
|
+ Key: strutils.SimpleUUID(),
|
|
|
+ NotUpdate: strutils.SimpleUUID(),
|
|
|
+ UpdateClear: strutils.SimpleUUID(),
|
|
|
+ Aes: strutils.SimpleUUID(),
|
|
|
+ JoinWith: []string{strutils.SimpleUUID(), strutils.SimpleUUID()},
|
|
|
+ Trim: strutils.SimpleUUID(),
|
|
|
+ TrimPrefix: strutils.SimpleUUID(),
|
|
|
+ TrimSuffix: strutils.SimpleUUID(),
|
|
|
+ }
|
|
|
+
|
|
|
+ fields, err := sql_mapping.DefaultUsage(s)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ s.checkFields(t, fields)
|
|
|
+
|
|
|
+ fields, err = sql_mapping.DefaultUsage(&s)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ s.checkFields(t, fields)
|
|
|
+}
|