Browse Source

完善测试公共方法

guodj 4 năm trước cách đây
mục cha
commit
e05e947789
4 tập tin đã thay đổi với 98 bổ sung2 xóa
  1. 32 0
      common/code_style.go
  2. 32 0
      common/code_style_test.go
  3. 2 2
      common/date.go
  4. 32 0
      common/date_test.go

+ 32 - 0
common/code_style.go

@@ -0,0 +1,32 @@
+package common
+
+import "reflect"
+
+// setFieldInfo 根据反射获取实体的信息
+func setFieldInfo(entity interface{}) map[string]string {
+	rt := reflect.TypeOf(entity)
+	if rt.Kind().String() == "ptr" {
+		rt = rt.Elem()
+	}
+	if rt.Kind().String() != "struct" {
+		return nil
+	}
+	infoMap := make(map[string]string)
+	for i := 0; i < rt.NumField(); i++ {
+		jsonTag := rt.Field(i).Tag.Get("json")
+		ormTag := rt.Field(i).Tag.Get("orm")
+		if jsonTag == "" {
+			continue
+		}
+		if ormTag == "" {
+			infoMap[jsonTag] = rt.Field(i).Name
+		} else {
+			infoMap[jsonTag] = ormTag
+		}
+	}
+	return infoMap
+}
+
+func Snake2Orm(entity interface{}, field string) string {
+	return setFieldInfo(entity)[field]
+}

+ 32 - 0
common/code_style_test.go

@@ -0,0 +1,32 @@
+package common
+
+import "testing"
+
+func TestSnake2Orm(t *testing.T) {
+
+	type A struct {
+		Id   int    `json:"id" orm:"EntityId"`
+		Name string `json:"name" orm:"Name"`
+		Age  int
+	}
+
+	type args struct {
+		entity interface{}
+		field  string
+	}
+	tests := []struct {
+		name string
+		args args
+		want string
+	}{
+		{"struct 类型测试", args{entity: A{}, field: "id"}, "EntityId"},
+		{"ptr 类型测试", args{entity: &A{}, field: "id"}, "EntityId"},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := Snake2Orm(tt.args.entity, tt.args.field); got != tt.want {
+				t.Errorf("Snake2Orm() = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}

+ 2 - 2
common/date.go

@@ -25,9 +25,9 @@ func GetCNStartOfWeek(time *gtime.Time) *gtime.Time {
 func GetCNEndOfWeek(time *gtime.Time) *gtime.Time {
 	day := int(time.Weekday())
 	if day == 0 {
-		return time.AddDate(0, 0, 0)
+		return time.AddDate(0, 0, 0).EndOfDay()
 	} else {
-		return time.AddDate(0, 0, 7-day)
+		return time.AddDate(0, 0, 7-day).EndOfDay()
 	}
 }
 

+ 32 - 0
common/date_test.go

@@ -0,0 +1,32 @@
+package common
+
+import (
+	"github.com/gogf/gf/os/gtime"
+	"reflect"
+	"testing"
+)
+
+func TestGetCNEndOfWeek(t *testing.T) {
+	type args struct {
+		time *gtime.Time
+	}
+	tests := []struct {
+		name string
+		args args
+		want *gtime.Time
+	}{
+		{"日期测试", args{time: gtime.Now()}, gtime.NewFromStr("2020-09-19 23:59:59")},
+		{"时间测试", args{time: gtime.Now()}, gtime.NewFromStr("2020-09-19 23:59:59")},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			got := GetCNEndOfWeek(tt.args.time)
+			if !reflect.DeepEqual(got.Day(), tt.want.Day()) {
+				t.Errorf("GetCNEndOfWeek() = %v, want %v", got, tt.want)
+			}
+			if !reflect.DeepEqual(got.Hour(), tt.want.Hour()) {
+				t.Errorf("GetCNEndOfWeek() = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}