Tests
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
|
||||
101
app/repository/smartfilter/filterfield_test.go
Normal file
101
app/repository/smartfilter/filterfield_test.go
Normal 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: ¬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)
|
||||
})
|
||||
}
|
||||
@ -75,8 +75,6 @@ func getFilterFields(filter interface{}) []ReflectedStructField {
|
||||
value: fieldValue,
|
||||
})
|
||||
}
|
||||
fmt.Println("-------------- RES --------------")
|
||||
fmt.Printf("%+v\n", res)
|
||||
return res
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user