diff --git a/app/repository/smartfilter/filterfield_test.go b/app/repository/smartfilter/smartfilter_test.go similarity index 82% rename from app/repository/smartfilter/filterfield_test.go rename to app/repository/smartfilter/smartfilter_test.go index 40efef4..d8eca14 100644 --- a/app/repository/smartfilter/filterfield_test.go +++ b/app/repository/smartfilter/smartfilter_test.go @@ -98,4 +98,34 @@ func TestGetFilterFields(t *testing.T) { assert.Equal(t, createdTime, result[10].value.Elem().Interface()) assert.Equal(t, "created_at,LT", result[10].tagValue) }) + + t.Run("Skip nil fields", func(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"` + } + filter := TestFilter{} + result := getFilterFields(filter) + assert.Equal(t, 0, len(result)) + }) + + t.Run("Skip fields without filterfield tag", func(t *testing.T) { + var ( + alive bool = true + id int64 = 123456 + ) + type TestFilter struct { + Alive *bool + Id *int64 `funnytag:"created_at,LT"` + } + filter := TestFilter{ + Alive: &alive, + Id: &id, + } + result := getFilterFields(filter) + assert.Equal(t, 0, len(result)) + }) }