Skip to content

Commit 4d2cad0

Browse files
committed
Add test for group by string array field
1 parent 26c55fd commit 4d2cad0

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

typesense/test/search_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,50 @@ func TestCollectionSearchRange(t *testing.T) {
9999

100100
require.Equal(t, expectedDocs, docs)
101101
}
102+
103+
func TestCollectionGroupByStringArray(t *testing.T) {
104+
collectionName := "tags"
105+
_, err := typesenseClient.Collection(collectionName).Delete()
106+
107+
schema := &api.CollectionSchema{
108+
Name: collectionName,
109+
Fields: []api.Field{
110+
{
111+
Name: "tags",
112+
Type: "string[]",
113+
Facet: pointer.True(),
114+
},
115+
},
116+
}
117+
118+
_, err = typesenseClient.Collections().Create(schema)
119+
require.NoError(t, err)
120+
121+
type docWithArray struct {
122+
ID string `json:"id"`
123+
Tags []string `json:"tags"`
124+
}
125+
126+
documents := []interface{}{
127+
&docWithArray{
128+
ID: "1",
129+
Tags: []string{"go", "programming", "example"},
130+
},
131+
}
132+
133+
params := &api.ImportDocumentsParams{Action: pointer.String("create")}
134+
_, err = typesenseClient.Collection(collectionName).Documents().Import(documents, params)
135+
require.NoError(t, err)
136+
137+
searchParams := &api.SearchCollectionParams{
138+
Q: "*",
139+
GroupBy: pointer.String("tags"),
140+
}
141+
142+
result, err := typesenseClient.Collection(collectionName).Documents().Search(searchParams)
143+
require.NoError(t, err)
144+
145+
require.NoError(t, err)
146+
require.Equal(t, 1, *result.Found, "found documents number is invalid")
147+
require.Equal(t, 1, len(*result.GroupedHits), "number of grouped hits is invalid")
148+
}

0 commit comments

Comments
 (0)