Tests
This commit is contained in:
@ -249,11 +249,6 @@ func (sg sliceGetter) getValue(ff *FilterField, v reflect.Value) error {
|
|||||||
ff.appendStr(element.String())
|
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
|
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,
|
value: fieldValue,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
fmt.Println("-------------- RES --------------")
|
|
||||||
fmt.Printf("%+v\n", res)
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user