Skip to content

Commit 4750322

Browse files
committed
fix: use object for cts parameters
1 parent cc57be8 commit 4750322

31 files changed

+844
-720
lines changed

doc/CTS.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ The test generation script requires a JSON file name from the `operationId` (e.g
2525
{
2626
"testName": "the name of the test (e.g. test('search endpoint')) (default: 'method')",
2727
"method": "the method to call (e.g. search)",
28-
"parameters": [
29-
"indexName",
30-
{
28+
"parameters": {
29+
"indexName": "testIndex",
30+
"searchParam": {
3131
"$objectName": "the name of the object for strongly type language",
3232
"query": "the string to search"
3333
}
34-
],
34+
},
3535
"request": {
36-
"path": "/1/indexes/indexName/query",
36+
"path": "/1/indexes/testIndex/query",
3737
"method": "POST",
3838
"data": { "query": "the string to search" }
3939
}
@@ -47,3 +47,11 @@ And that's it! If the name of the file matches a real `operationId` in the spec,
4747

4848
- Create a template in `test/CTS/templates/<your language>.mustache` that parse a array of test into your test framework of choice
4949
- Add the language in the array `languages` in `tests/generateCTS.ts`.
50+
51+
## Get the list of remaining CTS to implement
52+
53+
To get the list of `operationId` not yet in the CTS but in the spec, run this command:
54+
```bash
55+
rm -rf ./specs/dist
56+
comm -3 <(grep -r operationId ./specs | awk -F: '{gsub(/ /,""); print $NF}' | sort) <(find ./tests/CTS/clients -type f -name '*.json' | awk -F/ '{gsub(/.json/,"");print $NF}' | sort)
57+
```

tests/CTS/clients/recommend/getRecommendations.json

Lines changed: 124 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@
22
{
33
"method": "getRecommendations",
44
"testName": "get recommendations with minimal parameters",
5-
"parameters": [
6-
{
7-
"getRecommendations": {
8-
"requests": [
9-
{
10-
"indexName": "indexName",
11-
"objectID": "objectID",
12-
"model": "related-products",
13-
"threshold": 42
14-
}
15-
]
16-
}
5+
"parameters": {
6+
"getRecommendations": {
7+
"requests": [
8+
{
9+
"indexName": "indexName",
10+
"objectID": "objectID",
11+
"model": "related-products",
12+
"threshold": 42
13+
}
14+
]
1715
}
18-
],
16+
},
1917
"request": {
2018
"path": "/1/indexes/*/recommendations",
2119
"method": "POST",
@@ -34,22 +32,28 @@
3432
{
3533
"method": "getRecommendations",
3634
"testName": "get recommendations with all parameters",
37-
"parameters": [
38-
{
39-
"getRecommendations": {
40-
"requests": [
41-
{
42-
"indexName": "indexName",
43-
"objectID": "objectID",
44-
"model": "related-products",
45-
"threshold": 42,
46-
"queryParameters": { "facetFilters": ["query"] },
47-
"fallbackParameters": { "facetFilters": ["fallback"] }
35+
"parameters": {
36+
"getRecommendations": {
37+
"requests": [
38+
{
39+
"indexName": "indexName",
40+
"objectID": "objectID",
41+
"model": "related-products",
42+
"threshold": 42,
43+
"queryParameters": {
44+
"facetFilters": [
45+
"query"
46+
]
47+
},
48+
"fallbackParameters": {
49+
"facetFilters": [
50+
"fallback"
51+
]
4852
}
49-
]
50-
}
53+
}
54+
]
5155
}
52-
],
56+
},
5357
"request": {
5458
"path": "/1/indexes/*/recommendations",
5559
"method": "POST",
@@ -60,8 +64,16 @@
6064
"objectID": "objectID",
6165
"model": "related-products",
6266
"threshold": 42,
63-
"queryParameters": { "facetFilters": ["query"] },
64-
"fallbackParameters": { "facetFilters": ["fallback"] }
67+
"queryParameters": {
68+
"facetFilters": [
69+
"query"
70+
]
71+
},
72+
"fallbackParameters": {
73+
"facetFilters": [
74+
"fallback"
75+
]
76+
}
6577
}
6678
]
6779
}
@@ -70,26 +82,24 @@
7082
{
7183
"method": "getRecommendations",
7284
"testName": "get multiple recommendations with minimal parameters",
73-
"parameters": [
74-
{
75-
"getRecommendations": {
76-
"requests": [
77-
{
78-
"indexName": "indexName1",
79-
"objectID": "objectID1",
80-
"model": "related-products",
81-
"threshold": 21
82-
},
83-
{
84-
"indexName": "indexName2",
85-
"objectID": "objectID2",
86-
"model": "related-products",
87-
"threshold": 21
88-
}
89-
]
90-
}
85+
"parameters": {
86+
"getRecommendations": {
87+
"requests": [
88+
{
89+
"indexName": "indexName1",
90+
"objectID": "objectID1",
91+
"model": "related-products",
92+
"threshold": 21
93+
},
94+
{
95+
"indexName": "indexName2",
96+
"objectID": "objectID2",
97+
"model": "related-products",
98+
"threshold": 21
99+
}
100+
]
91101
}
92-
],
102+
},
93103
"request": {
94104
"path": "/1/indexes/*/recommendations",
95105
"method": "POST",
@@ -114,30 +124,44 @@
114124
{
115125
"method": "getRecommendations",
116126
"testName": "get multiple recommendations with all parameters",
117-
"parameters": [
118-
{
119-
"getRecommendations": {
120-
"requests": [
121-
{
122-
"indexName": "indexName1",
123-
"objectID": "objectID1",
124-
"model": "related-products",
125-
"threshold": 21,
126-
"queryParameters": { "facetFilters": ["query1"] },
127-
"fallbackParameters": { "facetFilters": ["fallback1"] }
127+
"parameters": {
128+
"getRecommendations": {
129+
"requests": [
130+
{
131+
"indexName": "indexName1",
132+
"objectID": "objectID1",
133+
"model": "related-products",
134+
"threshold": 21,
135+
"queryParameters": {
136+
"facetFilters": [
137+
"query1"
138+
]
139+
},
140+
"fallbackParameters": {
141+
"facetFilters": [
142+
"fallback1"
143+
]
144+
}
145+
},
146+
{
147+
"indexName": "indexName2",
148+
"objectID": "objectID2",
149+
"model": "related-products",
150+
"threshold": 21,
151+
"queryParameters": {
152+
"facetFilters": [
153+
"query2"
154+
]
128155
},
129-
{
130-
"indexName": "indexName2",
131-
"objectID": "objectID2",
132-
"model": "related-products",
133-
"threshold": 21,
134-
"queryParameters": { "facetFilters": ["query2"] },
135-
"fallbackParameters": { "facetFilters": ["fallback2"] }
156+
"fallbackParameters": {
157+
"facetFilters": [
158+
"fallback2"
159+
]
136160
}
137-
]
138-
}
161+
}
162+
]
139163
}
140-
],
164+
},
141165
"request": {
142166
"path": "/1/indexes/*/recommendations",
143167
"method": "POST",
@@ -148,16 +172,32 @@
148172
"objectID": "objectID1",
149173
"model": "related-products",
150174
"threshold": 21,
151-
"queryParameters": { "facetFilters": ["query1"] },
152-
"fallbackParameters": { "facetFilters": ["fallback1"] }
175+
"queryParameters": {
176+
"facetFilters": [
177+
"query1"
178+
]
179+
},
180+
"fallbackParameters": {
181+
"facetFilters": [
182+
"fallback1"
183+
]
184+
}
153185
},
154186
{
155187
"indexName": "indexName2",
156188
"objectID": "objectID2",
157189
"model": "related-products",
158190
"threshold": 21,
159-
"queryParameters": { "facetFilters": ["query2"] },
160-
"fallbackParameters": { "facetFilters": ["fallback2"] }
191+
"queryParameters": {
192+
"facetFilters": [
193+
"query2"
194+
]
195+
},
196+
"fallbackParameters": {
197+
"facetFilters": [
198+
"fallback2"
199+
]
200+
}
161201
}
162202
]
163203
}
@@ -166,20 +206,18 @@
166206
{
167207
"method": "getRecommendations",
168208
"testName": "get frequently bought together recommendations",
169-
"parameters": [
170-
{
171-
"getRecommendations": {
172-
"requests": [
173-
{
174-
"indexName": "indexName1",
175-
"objectID": "objectID1",
176-
"model": "bought-together",
177-
"threshold": 42
178-
}
179-
]
180-
}
209+
"parameters": {
210+
"getRecommendations": {
211+
"requests": [
212+
{
213+
"indexName": "indexName1",
214+
"objectID": "objectID1",
215+
"model": "bought-together",
216+
"threshold": 42
217+
}
218+
]
181219
}
182-
],
220+
},
183221
"request": {
184222
"path": "/1/indexes/*/recommendations",
185223
"method": "POST",

tests/CTS/clients/search/addApiKey.json

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
11
[
22
{
33
"method": "addApiKey",
4-
"parameters": [
5-
{
6-
"apiKey": {
7-
"acl": ["search", "addObject"],
8-
"description": "my new api key",
9-
"validity": 300,
10-
"maxQueriesPerIPPerHour": 100,
11-
"maxHitsPerQuery": 20
12-
}
4+
"parameters": {
5+
"apiKey": {
6+
"acl": [
7+
"search",
8+
"addObject"
9+
],
10+
"description": "my new api key",
11+
"validity": 300,
12+
"maxQueriesPerIPPerHour": 100,
13+
"maxHitsPerQuery": 20
1314
}
14-
],
15+
},
1516
"request": {
1617
"path": "/1/keys",
1718
"method": "POST",
1819
"data": {
19-
"acl": ["search", "addObject"],
20+
"acl": [
21+
"search",
22+
"addObject"
23+
],
2024
"description": "my new api key",
2125
"validity": 300,
2226
"maxQueriesPerIPPerHour": 100,

0 commit comments

Comments
 (0)