This commit is contained in:
Eden Kirin
2024-06-23 01:11:50 +02:00
parent 81d51c0bb5
commit b427747745
3 changed files with 101 additions and 7 deletions

View File

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

View File

@ -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: &notFirstName,
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)
})
}

View File

@ -75,8 +75,6 @@ func getFilterFields(filter interface{}) []ReflectedStructField {
value: fieldValue,
})
}
fmt.Println("-------------- RES --------------")
fmt.Printf("%+v\n", res)
return res
}