From 5caa9138ce3c0ea0ce1601e267ba07a30fece188 Mon Sep 17 00:00:00 2001 From: Sarangan Rajamanickam Date: Thu, 10 Oct 2024 10:42:35 -0700 Subject: [PATCH] [@typespec/http-specs] - Fix explode query check of mockapi for routes test case (#4680) A fix has been made to the routes test case in the `cadl-ranch` repository at https://github.com/Azure/cadl-ranch/pull/742. This was done to fix https://github.com/Azure/cadl-ranch/issues/731. This PR is to bring those changes to the `typespec` repository. `test:e2e` script is working fine. Please review and approve. Thanks --- packages/http-specs/specs/routes/mockapi.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/http-specs/specs/routes/mockapi.ts b/packages/http-specs/specs/routes/mockapi.ts index e0d7c4b534..ec8eb6a7af 100644 --- a/packages/http-specs/specs/routes/mockapi.ts +++ b/packages/http-specs/specs/routes/mockapi.ts @@ -19,8 +19,25 @@ function createTests(uri: string) { status: 204, }, handler: (req: MockRequest) => { + const queryMap = new Map(); for (const [key, value] of url.searchParams.entries()) { - req.expect.containsQueryParam(key, value); + if (queryMap.has(key)) { + const existing = queryMap.get(key)!; + if (Array.isArray(existing)) { + existing.push(value); + } else { + queryMap.set(key, [existing, value]); + } + } else { + queryMap.set(key, value); + } + } + for (const [key, value] of queryMap.entries()) { + if (Array.isArray(value)) { + req.expect.containsQueryParam(key, value, "multi"); + } else { + req.expect.containsQueryParam(key, value); + } } for (const param of Object.keys(req.query)) { if (!url.searchParams.has(param)) {