Skip to content

Commit 6e7dcb0

Browse files
artparclaude
andcommitted
Fix filter test: operators pass through as-is, caller supplies wildcards
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent ee5bc96 commit 6e7dcb0

1 file changed

Lines changed: 24 additions & 2 deletions

File tree

cmd/filter_test.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,32 @@ func TestFilterToJSON(t *testing.T) {
129129
if len(parsed) != 2 {
130130
t.Fatalf("expected 2 entries, got %d", len(parsed))
131131
}
132-
if parsed[0]["column"] != "name" {
133-
t.Errorf("expected name, got %v", parsed[0]["column"])
132+
// Operators pass through as-is — caller supplies % wildcards for like/contains
133+
if parsed[0]["operator"] != "contains" {
134+
t.Errorf("expected contains, got %v", parsed[0]["operator"])
135+
}
136+
if parsed[0]["value"] != "foo" {
137+
t.Errorf("expected foo, got %v", parsed[0]["value"])
134138
}
135139
if parsed[1]["operator"] != "is true" {
136140
t.Errorf("expected is true, got %v", parsed[1]["operator"])
137141
}
138142
}
143+
144+
func TestFilterToJSON_LikeWithWildcards(t *testing.T) {
145+
// Caller explicitly passes % wildcards for partial matching
146+
filters := []FilterClause{
147+
{Column: "name", Operator: "like", Value: "%doc%"},
148+
}
149+
jsonStr := FilterToJSON(filters)
150+
151+
var parsed []map[string]interface{}
152+
json.Unmarshal([]byte(jsonStr), &parsed)
153+
154+
if parsed[0]["operator"] != "like" {
155+
t.Errorf("expected like, got %v", parsed[0]["operator"])
156+
}
157+
if parsed[0]["value"] != "%doc%" {
158+
t.Errorf("expected %%doc%%, got %v", parsed[0]["value"])
159+
}
160+
}

0 commit comments

Comments
 (0)