yjp 1 год назад
Родитель
Сommit
b85306ef41
2 измененных файлов с 227 добавлено и 1 удалено
  1. 1 1
      test/assign_tag_test.go
  2. 226 0
      test/sql_mapping_tag_test.go

+ 1 - 1
test/assign_tag_test.go

@@ -327,7 +327,7 @@ func (to AssignToPointerField) checkFields(t *testing.T, from AssignFrom) {
 	}
 }
 
-func TestDefaultUsage(t *testing.T) {
+func TestAssignTagDefaultUsage(t *testing.T) {
 	stringField := strutils.SimpleUUID()
 	boolField := rand.Intn(2) == 0
 	int8Field := int8(rand.Int())

+ 226 - 0
test/sql_mapping_tag_test.go

@@ -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)
+}