diff --git a/generator/src/main/resources/line-bot-sdk-nodejs-generator/apiBody/normal.pebble b/generator/src/main/resources/line-bot-sdk-nodejs-generator/apiBody/normal.pebble index 8af6f2cfa..344278345 100644 --- a/generator/src/main/resources/line-bot-sdk-nodejs-generator/apiBody/normal.pebble +++ b/generator/src/main/resources/line-bot-sdk-nodejs-generator/apiBody/normal.pebble @@ -21,7 +21,11 @@ }); {% elseif op.hasQueryParams %}const queryParams = { {% for param in op.queryParams -%} + {% if param.isArray -%} + "{{param.paramName}}": [...{{param.paramName}}].join(","), + {% else -%} "{{param.paramName}}": {{param.paramName}}, + {% endif -%} {% endfor %} }; Object.keys(queryParams).forEach((key: keyof typeof queryParams) => { diff --git a/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble b/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble index 350343b4d..1337d8f84 100644 --- a/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble +++ b/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble @@ -70,6 +70,32 @@ function parseForm( new Blob([]), // paramName={{ param.paramName }} {% elseif param.isModel -%} {} as unknown as {{ param.dataType }}, // paramName={{ param.paramName }} + {% elseif param.isArray -%} + new Set(["DUMMY1", "DUMMY2"]) as unknown as {{ param.dataType }}, + {% elseif param.isEnum -%} + "DUMMY" as unknown as {{ param.dataType }}, // paramName={{ param.paramName }}(enum) + {% elseif param.isExplode -%} + "DUMMY" as unknown as {{ param.dataType}}, // paramName={{param.paramName}}(enum) + {% elseif param.isString -%} + "DUMMY", // {{param.paramName}}(string) + {% elseif param.isNumber or param.isInteger or param.isLong -%} + 0, // paramName={{param.paramName}}(number or int or long) + {% elseif param.isBoolean -%} + true, // paramName={{param.paramName}} + {% else -%} + // UNKNOWN TYPE: paramName={{param.paramName}} {{ param.dataType }} + {% endif -%} +{% endmacro %} + +{% macro paramDummyValueString(param) %} +{# @pebvariable name="param" type="org.openapitools.codegen.CodegenParameter" #} + // {{ param.paramName }}: {{ param.dataType }} + {% if param.isFile -%} + new Blob([]), // paramName={{ param.paramName }} + {% elseif param.isModel -%} + {} as unknown as {{ param.dataType }}, // paramName={{ param.paramName }} + {% elseif param.isArray -%} + "DUMMY1,DUMMY2" as unknown as {{ param.dataType }}, {% elseif param.isEnum -%} "DUMMY" as unknown as {{ param.dataType }}, // paramName={{ param.paramName }}(enum) {% elseif param.isExplode -%} @@ -111,7 +137,7 @@ function parseForm( // Query parameters const queryParams = new URLSearchParams(reqUrl.search); {% for param in op.queryParams -%} - equal(queryParams.get("{{param.paramName}}"), String({{ paramDummyValue(param) }})); + equal(queryParams.get("{{param.paramName}}"), String({{ paramDummyValueString(param) }})); {% endfor %} {% endif %} {% if authMethods != null -%} @@ -148,7 +174,7 @@ function parseForm( // Form parameters const formData = parseForm(arrayBuffer); {% for param in op.formParams -%} - equal(formData["{{param.paramName}}"], String({{ paramDummyValue(param) }})); + equal(formData["{{param.paramName}}"], String({{ paramDummyValueString(param) }})); {% endfor %} res.writeHead(200, { "Content-Type": "application/json" }); diff --git a/lib/messaging-api/api/messagingApiClient.ts b/lib/messaging-api/api/messagingApiClient.ts index 09f090144..d3cbf04c9 100644 --- a/lib/messaging-api/api/messagingApiClient.ts +++ b/lib/messaging-api/api/messagingApiClient.ts @@ -1583,7 +1583,7 @@ export class MessagingApiClient { limit?: number, ): Promise> { const queryParams = { - status: status, + status: [...status].join(","), start: start, limit: limit, }; diff --git a/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts b/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts index 124a02822..f282b792c 100644 --- a/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts +++ b/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts @@ -4242,7 +4242,7 @@ describe("MessagingApiClient", () => { queryParams.get("status"), String( // status: Set<'DRAFT' | 'RUNNING' | 'CLOSED'> - "DUMMY" as unknown as Set<"DRAFT" | "RUNNING" | "CLOSED">, // paramName=status(enum) + "DUMMY1,DUMMY2" as unknown as Set<"DRAFT" | "RUNNING" | "CLOSED">, ), ); equal( @@ -4283,7 +4283,9 @@ describe("MessagingApiClient", () => { const res = await client.listCouponWithHttpInfo( // status: Set<'DRAFT' | 'RUNNING' | 'CLOSED'> - "DUMMY" as unknown as Set<"DRAFT" | "RUNNING" | "CLOSED">, // paramName=status(enum) + new Set(["DUMMY1", "DUMMY2"]) as unknown as Set< + "DRAFT" | "RUNNING" | "CLOSED" + >, // start: string "DUMMY" as unknown as string, // paramName=start(enum) @@ -4317,7 +4319,7 @@ describe("MessagingApiClient", () => { queryParams.get("status"), String( // status: Set<'DRAFT' | 'RUNNING' | 'CLOSED'> - "DUMMY" as unknown as Set<"DRAFT" | "RUNNING" | "CLOSED">, // paramName=status(enum) + "DUMMY1,DUMMY2" as unknown as Set<"DRAFT" | "RUNNING" | "CLOSED">, ), ); equal( @@ -4358,7 +4360,9 @@ describe("MessagingApiClient", () => { const res = await client.listCoupon( // status: Set<'DRAFT' | 'RUNNING' | 'CLOSED'> - "DUMMY" as unknown as Set<"DRAFT" | "RUNNING" | "CLOSED">, // paramName=status(enum) + new Set(["DUMMY1", "DUMMY2"]) as unknown as Set< + "DRAFT" | "RUNNING" | "CLOSED" + >, // start: string "DUMMY" as unknown as string, // paramName=start(enum) diff --git a/test/libs-messagingApi.spec.ts b/test/libs-messagingApi.spec.ts index 088c4ee68..868d9230f 100644 --- a/test/libs-messagingApi.spec.ts +++ b/test/libs-messagingApi.spec.ts @@ -180,6 +180,55 @@ describe("messagingApi", () => { }); }); + it("get coupon list", async () => { + let requestCount = 0; + server.use( + http.get( + "https://api.line.me/v2/bot/coupon", + async ({ request, params, cookies }) => { + requestCount++; + + equal( + request.headers.get("authorization"), + "Bearer test_channel_access_token", + ); + equal(request.headers.get("User-Agent"), "@line/bot-sdk/1.0.0-test"); + + const url = new URL(request.url); + const searchParams = url.searchParams; + equal(searchParams.get("status"), "DRAFT,RUNNING,CLOSED"); + equal(searchParams.get("start"), "xBQU2IB"); + equal(searchParams.get("limit"), "100"); + + return HttpResponse.json({ + items: [ + { + couponId: "coupon_id_1", + title: "coupon 1", + }, + ], + next: "yANU9IA..", + }); + }, + ), + ); + + const res = await client.listCoupon( + new Set(["DRAFT", "RUNNING", "CLOSED"]), + "xBQU2IB", + 100, + ); + deepEqual(res, { + items: [ + { + couponId: "coupon_id_1", + title: "coupon 1", + }, + ], + next: "yANU9IA..", + }); + }); + it("config is not overrided", async () => { const config = { channelAccessToken: "token-token",