diff --git a/pkg/storage/filter/filter_test.go b/pkg/storage/filter/filter_test.go new file mode 100644 index 0000000..3e8c829 --- /dev/null +++ b/pkg/storage/filter/filter_test.go @@ -0,0 +1,37 @@ +package filter + +import ( + "encoding/json" + "os" + "path/filepath" + "testing" + + "github.com/pkg/errors" +) + +func TestFilterFromJSON(t *testing.T) { + files, err := filepath.Glob("testdata/json/*.json") + if err != nil { + t.Fatalf("%+v", errors.WithStack(err)) + } + + for _, f := range files { + testName := filepath.Base(f) + t.Run(testName, func(t *testing.T) { + data, err := os.ReadFile(f) + if err != nil { + t.Fatalf("%+v", errors.WithStack(err)) + } + + var rawFilter map[string]any + + if err := json.Unmarshal(data, &rawFilter); err != nil { + t.Fatalf("%+v", errors.WithStack(err)) + } + + if _, err := NewFrom(rawFilter); err != nil { + t.Fatalf("%+v", errors.WithStack(err)) + } + }) + } +} diff --git a/pkg/storage/filter/testdata/json/multiple-root-operators.json b/pkg/storage/filter/testdata/json/multiple-root-operators.json new file mode 100644 index 0000000..2656877 --- /dev/null +++ b/pkg/storage/filter/testdata/json/multiple-root-operators.json @@ -0,0 +1,52 @@ +{ + "and": [ + { + "and": [ + { + "gt": { + "dateEnd": "2023-10-11T09:07:02.598Z" + } + }, + { + "lt": { + "dateStart": "2023-10-11T09:07:02.598Z" + } + }, + { + "eq": { + "enabled": true + } + } + ] + }, + { + "or": [ + { + "eq": { + "_id": "01GV0WXF6BADGWGNWVDVXPP8WF" + } + }, + { + "eq": { + "_id": "01HAVB47GM41XK2XRW1M2T3216" + } + }, + { + "eq": { + "_id": "01GV0WXF6BADGWGNWVDVXPP8WF" + } + }, + { + "eq": { + "_id": "01HAVB47GM41XK2XRW1M2T3216" + } + }, + { + "eq": { + "_id": "01HC1X2K5F726F8FWZFB1WCAM4" + } + } + ] + } + ] +} \ No newline at end of file