From b427747745b4504b541e8822eaf9a4bb351439db Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Sun, 23 Jun 2024 01:11:50 +0200 Subject: [PATCH] Tests --- app/repository/smartfilter/filterfield.go | 5 - .../smartfilter/filterfield_test.go | 101 ++++++++++++++++++ app/repository/smartfilter/smartfilter.go | 2 - 3 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 app/repository/smartfilter/filterfield_test.go diff --git a/app/repository/smartfilter/filterfield.go b/app/repository/smartfilter/filterfield.go index 714d433..e2c2fa4 100644 --- a/app/repository/smartfilter/filterfield.go +++ b/app/repository/smartfilter/filterfield.go @@ -249,11 +249,6 @@ func (sg sliceGetter) getValue(ff *FilterField, v reflect.Value) error { ff.appendStr(element.String()) } } - fmt.Println(v.Len()) - fmt.Printf(">>> getValue %+v\n", v) - fmt.Printf(">>> ff %+v\n", ff.strValues) - // fmt.Printf("%+v\n", v.Slice(0, 1)) - // sg.elemGetter(ff, v.Elem()) return nil } diff --git a/app/repository/smartfilter/filterfield_test.go b/app/repository/smartfilter/filterfield_test.go new file mode 100644 index 0000000..40efef4 --- /dev/null +++ b/app/repository/smartfilter/filterfield_test.go @@ -0,0 +1,101 @@ +package smartfilter + +import ( + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestGetFilterFields(t *testing.T) { + type TestFilter struct { + Alive *bool `filterfield:"alive,EQ"` + Id *int64 `filterfield:"id,EQ"` + Ids *[]uint `filterfield:"id,IN"` + IdsNot *[]uint `filterfield:"id,NOT_IN"` + FirstName *string `filterfield:"first_name,EQ"` + NotFirstName *string `filterfield:"first_name,NE"` + FirstNameLike *string `filterfield:"first_name,LIKE"` + CreatedAt_GE *time.Time `filterfield:"created_at,GE"` + CreatedAt_GT *time.Time `filterfield:"created_at,GT"` + CreatedAt_LE *time.Time `filterfield:"created_at,LE"` + CreatedAt_LT *time.Time `filterfield:"created_at,LT"` + } + + t.Run("Parse filter fields", func(t *testing.T) { + utc, _ := time.LoadLocation("UTC") + + var ( + alive bool = true + id int64 = 123456 + ids []uint = []uint{111, 222, 333, 444, 555} + idsNot []uint = []uint{666, 777, 888, 999} + firstName string = "Mirko" + notFirstName string = "Pero" + firstNameLike string = "irko" + createdTime time.Time = time.Date(2024, 5, 26, 16, 8, 0, 0, utc) + ) + filter := TestFilter{ + Alive: &alive, + Id: &id, + Ids: &ids, + IdsNot: &idsNot, + FirstName: &firstName, + NotFirstName: ¬FirstName, + FirstNameLike: &firstNameLike, + CreatedAt_GE: &createdTime, + CreatedAt_GT: &createdTime, + CreatedAt_LE: &createdTime, + CreatedAt_LT: &createdTime, + } + result := getFilterFields(filter) + + fmt.Printf("%+v\n", result[0].value) + fmt.Printf("%+v\n", &alive) + + assert.Equal(t, "Alive", result[0].name) + assert.Equal(t, alive, result[0].value.Elem().Bool()) + assert.Equal(t, "alive,EQ", result[0].tagValue) + + assert.Equal(t, "Id", result[1].name) + assert.Equal(t, id, result[1].value.Elem().Int()) + assert.Equal(t, "id,EQ", result[1].tagValue) + + assert.Equal(t, "Ids", result[2].name) + assert.Equal(t, ids, result[2].value.Elem().Interface()) + assert.Equal(t, "id,IN", result[2].tagValue) + + assert.Equal(t, "IdsNot", result[3].name) + assert.Equal(t, idsNot, result[3].value.Elem().Interface()) + assert.Equal(t, "id,NOT_IN", result[3].tagValue) + + assert.Equal(t, "FirstName", result[4].name) + assert.Equal(t, firstName, result[4].value.Elem().String()) + assert.Equal(t, "first_name,EQ", result[4].tagValue) + + assert.Equal(t, "NotFirstName", result[5].name) + assert.Equal(t, notFirstName, result[5].value.Elem().String()) + assert.Equal(t, "first_name,NE", result[5].tagValue) + + assert.Equal(t, "FirstNameLike", result[6].name) + assert.Equal(t, firstNameLike, result[6].value.Elem().String()) + assert.Equal(t, "first_name,LIKE", result[6].tagValue) + + assert.Equal(t, "CreatedAt_GE", result[7].name) + assert.Equal(t, createdTime, result[7].value.Elem().Interface()) + assert.Equal(t, "created_at,GE", result[7].tagValue) + + assert.Equal(t, "CreatedAt_GT", result[8].name) + assert.Equal(t, createdTime, result[8].value.Elem().Interface()) + assert.Equal(t, "created_at,GT", result[8].tagValue) + + assert.Equal(t, "CreatedAt_LE", result[9].name) + assert.Equal(t, createdTime, result[9].value.Elem().Interface()) + assert.Equal(t, "created_at,LE", result[9].tagValue) + + assert.Equal(t, "CreatedAt_LT", result[10].name) + assert.Equal(t, createdTime, result[10].value.Elem().Interface()) + assert.Equal(t, "created_at,LT", result[10].tagValue) + }) +} diff --git a/app/repository/smartfilter/smartfilter.go b/app/repository/smartfilter/smartfilter.go index 5349696..89f3597 100644 --- a/app/repository/smartfilter/smartfilter.go +++ b/app/repository/smartfilter/smartfilter.go @@ -75,8 +75,6 @@ func getFilterFields(filter interface{}) []ReflectedStructField { value: fieldValue, }) } - fmt.Println("-------------- RES --------------") - fmt.Printf("%+v\n", res) return res }