diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/data-extensions-editor/external-api-usage-query.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/data-extensions-editor/external-api-usage-query.test.ts index 3ce757c2a..546485981 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/data-extensions-editor/external-api-usage-query.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/data-extensions-editor/external-api-usage-query.test.ts @@ -14,6 +14,8 @@ import { fetchExternalApiQueries } from "../../../../src/data-extensions-editor/ import * as log from "../../../../src/common/logging/notifications"; import { RedactableError } from "../../../../src/common/errors"; import { showAndLogExceptionWithTelemetry } from "../../../../src/common/logging"; +import { QueryLanguage } from "../../../../src/common/query-language"; +import { Query } from "../../../../src/data-extensions-editor/queries/query"; function createMockUri(path = "/a/b/c/foo"): Uri { return { @@ -29,11 +31,31 @@ function createMockUri(path = "/a/b/c/foo"): Uri { } describe("runQuery", () => { - it("runs all queries", async () => { - const logPath = (await file()).path; + const cases = Object.keys(fetchExternalApiQueries).flatMap((lang) => { + const query = fetchExternalApiQueries[lang as QueryLanguage]; + if (!query) { + return []; + } + + const keys = new Set(Object.keys(query)); + keys.delete("dependencies"); + + return Array.from(keys).map((name) => ({ + language: lang as QueryLanguage, + queryName: name as keyof Omit, + })); + }); + + test.each(cases)( + "should run $queryName for $language", + async ({ language, queryName }) => { + const logPath = (await file()).path; + + const query = fetchExternalApiQueries[language]; + if (!query) { + throw new Error(`No query found for language ${language}`); + } - // Test all queries - for (const [lang, query] of Object.entries(fetchExternalApiQueries)) { const options = { cliServer: { resolveQlpacks: jest.fn().mockResolvedValue({ @@ -58,7 +80,7 @@ describe("runQuery", () => { name: "foo", datasetUri: createMockUri(), }, - language: lang, + language, }, queryStorageDir: "/tmp/queries", progress: jest.fn(), @@ -67,7 +89,8 @@ describe("runQuery", () => { onCancellationRequested: jest.fn(), }, }; - const result = await runQuery("applicationModeQuery", options); + + const result = await runQuery(queryName, options); expect(result?.resultType).toEqual(QueryResultType.SUCCESS); @@ -106,13 +129,13 @@ describe("runQuery", () => { name: "codeql/external-api-usage", version: "0.0.0", dependencies: { - [`codeql/${lang}-all`]: "*", + [`codeql/${language}-all`]: "*", }, }); expect( await readFile(join(queryDirectory, "FetchExternalApis.ql"), "utf8"), - ).toEqual(query.applicationModeQuery); + ).toEqual(query[queryName]); for (const [filename, contents] of Object.entries( query.dependencies ?? {}, @@ -121,8 +144,8 @@ describe("runQuery", () => { contents, ); } - } - }); + }, + ); }); describe("readQueryResults", () => {