Skip to content

Commit 39a5eb3

Browse files
authored
Use MSW instead of nock. (#568)
nock doesn't support `window.fetch`. As a result, #541 failes. So, it's time to use MSW!
1 parent 07f8b68 commit 39a5eb3

20 files changed

+3746
-1752
lines changed

generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,57 @@ import { {{operations.classname}} } from "../../api";
66
import { {{import.classname}} } from '../{{import.filename}}';
77
{% endfor %}
88

9-
import * as nock from "nock";
9+
import { http, HttpResponse } from "msw";
10+
import { setupServer } from "msw/node";
1011
import { deepEqual, equal } from "assert";
1112

1213
const pkg = require("../../../../package.json");
1314

1415
const channel_access_token = "test_channel_access_token";
1516

1617
describe("{{operations.classname}}", () => {
17-
before(() => nock.disableNetConnect());
18-
afterEach(() => nock.cleanAll());
19-
after(() => nock.enableNetConnect());
18+
const server = setupServer();
19+
before(() => { server.listen() });
20+
after(() => { server.close() });
21+
afterEach(() => { server.resetHandlers() })
2022

2123
const client = new {{operations.classname}}({
2224
channelAccessToken: channel_access_token,
2325
});
2426

2527
{% for op in operations.operation %}
2628
it("{{op.nickname}}", async () => {
27-
const scope = nock("{{endpoint(operations.classname)}}", {
28-
reqheaders: {
29-
Authorization: `Bearer ${channel_access_token}`,
30-
"User-Agent": `${pkg.name}/${pkg.version}`,
31-
},
32-
})
33-
.{{ op.httpMethod|lower }}((u) => u.includes("{{op.path}}"
29+
let requestCount = 0;
30+
31+
const endpoint = "{{endpoint(operations.classname)}}{{op.path}}"
3432
{% for param in op.allParams -%}
3533
{% if param.isNumber or param.isInteger or param.isLong -%}
3634
.replace("{{ "{" + param.paramName + "}" }}", "0") // number
3735
{% elseif param.isString -%}
3836
.replace("{{ "{" + param.paramName + "}" }}", "DUMMY") // string
39-
{% endif %}
37+
{% endif -%}
4038
{% endfor %}{# allParams #}
41-
))
42-
.reply(200, {});
39+
;
40+
41+
server.use(
42+
http.{{ op.httpMethod|lower }}(
43+
endpoint,
44+
({ request, params, cookies }) => {
45+
requestCount++;
46+
47+
equal(
48+
request.headers.get("Authorization"),
49+
`Bearer ${channel_access_token}`,
50+
);
51+
equal(
52+
request.headers.get("User-Agent"),
53+
`${pkg.name}/${pkg.version}`,
54+
);
55+
56+
return HttpResponse.json({});
57+
},
58+
)
59+
);
4360

4461
const res = await client.{{op.nickname}}(
4562
{% for param in op.allParams -%}
@@ -63,7 +80,8 @@ describe("{{operations.classname}}", () => {
6380
{% endif -%}
6481
{% endfor %}
6582
);
66-
equal(scope.isDone(), true);
83+
84+
equal(requestCount, 1);
6785
});
6886

6987
{% endfor %}{# op #}

0 commit comments

Comments
 (0)