Skip to content

Commit e3b7ed8

Browse files
author
Eunjae Lee
authored
fix(js): add client tests (#110)
1 parent 9c1d656 commit e3b7ed8

File tree

4 files changed

+216
-23
lines changed

4 files changed

+216
-23
lines changed

tests/CTS/client/search/basic.json

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
[
2+
{
3+
"testName": "constructor throws with invalid parameters",
4+
"autoCreateClient": false,
5+
"steps": [
6+
{
7+
"type": "createClient",
8+
"expected": {
9+
"error": "`appId` is missing."
10+
}
11+
},
12+
{
13+
"type": "createClient",
14+
"parameters": {
15+
"apiKey": "my-api-key"
16+
},
17+
"expected": {
18+
"error": "`appId` is missing."
19+
}
20+
},
21+
{
22+
"type": "createClient",
23+
"parameters": {
24+
"appId": "my-app-id"
25+
},
26+
"expected": {
27+
"error": "`apiKey` is missing."
28+
}
29+
}
30+
]
31+
},
32+
{
33+
"testName": "`addApiKey` throws with invalid parameters",
34+
"steps": [
35+
{
36+
"type": "method",
37+
"object": "$client",
38+
"path": "addApiKey",
39+
"expected": {
40+
"error": "Parameter `apiKey` is required when calling `addApiKey`."
41+
}
42+
},
43+
{
44+
"type": "method",
45+
"object": "$client",
46+
"path": "addApiKey",
47+
"parameters": [{}],
48+
"expected": {
49+
"error": "Parameter `apiKey.acl` is required when calling `addApiKey`."
50+
}
51+
}
52+
]
53+
},
54+
{
55+
"testName": "`addOrUpdateObject` throws with invalid parameters",
56+
"steps": [
57+
{
58+
"type": "method",
59+
"object": "$client",
60+
"path": "addOrUpdateObject",
61+
"parameters": [{ "objectID": "my-object-id", "body": {} }],
62+
"expected": {
63+
"error": "Parameter `indexName` is required when calling `addOrUpdateObject`."
64+
}
65+
},
66+
{
67+
"type": "method",
68+
"object": "$client",
69+
"path": "addOrUpdateObject",
70+
"parameters": [{ "indexName": "my-index-name", "body": {} }],
71+
"expected": {
72+
"error": "Parameter `objectID` is required when calling `addOrUpdateObject`."
73+
}
74+
},
75+
{
76+
"type": "method",
77+
"object": "$client",
78+
"path": "addOrUpdateObject",
79+
"parameters": [
80+
{ "indexName": "my-index-name", "objectID": "my-object-id" }
81+
],
82+
"expected": {
83+
"error": "Parameter `body` is required when calling `addOrUpdateObject`."
84+
}
85+
}
86+
]
87+
}
88+
]

tests/CTS/client/templates/javascript/suite.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function createClient(): {{client}} {
1414
{{#blocks}}
1515
describe('{{operationId}}', () => {
1616
{{#tests}}
17-
test('{{testName}}', async () => {
17+
test('{{{testName}}}', async () => {
1818
{{#autoCreateClient}}
1919
const $client = createClient();
2020
{{/autoCreateClient}}

tests/output/javascript/tests/client/search.test.ts

Lines changed: 127 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/* eslint-disable @typescript-eslint/no-unused-vars */
2-
31
// @ts-nocheck
42
import { SearchApi, EchoRequester } from '@algolia/client-search';
53

@@ -10,14 +8,14 @@ function createClient(): SearchApi {
108
return new SearchApi(appId, apiKey, { requester: new EchoRequester() });
119
}
1210

13-
describe('basic', () => {
14-
test('client throws with invalid parameters', async () => {
11+
describe('parameters', () => {
12+
test('constructor throws with invalid parameters', async () => {
1513
let actual;
1614
await expect(
1715
new Promise((resolve, reject) => {
1816
const $client = new SearchApi(
1917
'',
20-
'blah',
18+
'',
2119

2220
{
2321
requester: new EchoRequester(),
@@ -32,5 +30,129 @@ describe('basic', () => {
3230
}
3331
})
3432
).rejects.toThrow('`appId` is missing.');
33+
34+
await expect(
35+
new Promise((resolve, reject) => {
36+
const $client = new SearchApi(
37+
'',
38+
'my-api-key',
39+
40+
{
41+
requester: new EchoRequester(),
42+
}
43+
);
44+
actual = $client;
45+
46+
if (actual instanceof Promise) {
47+
actual.then(resolve).catch(reject);
48+
} else {
49+
resolve();
50+
}
51+
})
52+
).rejects.toThrow('`appId` is missing.');
53+
54+
await expect(
55+
new Promise((resolve, reject) => {
56+
const $client = new SearchApi(
57+
'my-app-id',
58+
'',
59+
60+
{
61+
requester: new EchoRequester(),
62+
}
63+
);
64+
actual = $client;
65+
66+
if (actual instanceof Promise) {
67+
actual.then(resolve).catch(reject);
68+
} else {
69+
resolve();
70+
}
71+
})
72+
).rejects.toThrow('`apiKey` is missing.');
73+
});
74+
75+
test('`addApiKey` throws with invalid parameters', async () => {
76+
const $client = createClient();
77+
78+
let actual;
79+
await expect(
80+
new Promise((resolve, reject) => {
81+
actual = $client.addApiKey();
82+
if (actual instanceof Promise) {
83+
actual.then(resolve).catch(reject);
84+
} else {
85+
resolve();
86+
}
87+
})
88+
).rejects.toThrow(
89+
'Parameter `apiKey` is required when calling `addApiKey`.'
90+
);
91+
92+
await expect(
93+
new Promise((resolve, reject) => {
94+
actual = $client.addApiKey({});
95+
if (actual instanceof Promise) {
96+
actual.then(resolve).catch(reject);
97+
} else {
98+
resolve();
99+
}
100+
})
101+
).rejects.toThrow(
102+
'Parameter `apiKey.acl` is required when calling `addApiKey`.'
103+
);
104+
});
105+
106+
test('`addOrUpdateObject` throws with invalid parameters', async () => {
107+
const $client = createClient();
108+
109+
let actual;
110+
await expect(
111+
new Promise((resolve, reject) => {
112+
actual = $client.addOrUpdateObject({
113+
objectID: 'my-object-id',
114+
body: {},
115+
});
116+
if (actual instanceof Promise) {
117+
actual.then(resolve).catch(reject);
118+
} else {
119+
resolve();
120+
}
121+
})
122+
).rejects.toThrow(
123+
'Parameter `indexName` is required when calling `addOrUpdateObject`.'
124+
);
125+
126+
await expect(
127+
new Promise((resolve, reject) => {
128+
actual = $client.addOrUpdateObject({
129+
indexName: 'my-index-name',
130+
body: {},
131+
});
132+
if (actual instanceof Promise) {
133+
actual.then(resolve).catch(reject);
134+
} else {
135+
resolve();
136+
}
137+
})
138+
).rejects.toThrow(
139+
'Parameter `objectID` is required when calling `addOrUpdateObject`.'
140+
);
141+
142+
await expect(
143+
new Promise((resolve, reject) => {
144+
actual = $client.addOrUpdateObject({
145+
indexName: 'my-index-name',
146+
objectID: 'my-object-id',
147+
});
148+
if (actual instanceof Promise) {
149+
actual.then(resolve).catch(reject);
150+
} else {
151+
resolve();
152+
}
153+
})
154+
).rejects.toThrow(
155+
'Parameter `body` is required when calling `addOrUpdateObject`.'
156+
);
35157
});
36158
});

0 commit comments

Comments
 (0)