Skip to content

Commit 6e4641f

Browse files
committed
Clean up runQyery test
1 parent 553e5cb commit 6e4641f

File tree

1 file changed

+66
-83
lines changed

1 file changed

+66
-83
lines changed

extensions/ql-vscode/test/vscode-tests/no-workspace/data-extensions-editor/external-api-usage-query.test.ts

Lines changed: 66 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,15 @@ import * as log from "../../../../src/common/logging/notifications";
1111
import { RedactableError } from "../../../../src/common/errors";
1212
import { showAndLogExceptionWithTelemetry } from "../../../../src/common/logging";
1313
import { QueryLanguage } from "../../../../src/common/query-language";
14-
import { Query } from "../../../../src/data-extensions-editor/queries/query";
1514
import { mockedUri } from "../../utils/mocking.helpers";
15+
import { Mode } from "../../../../src/data-extensions-editor/shared/mode";
1616

1717
describe("runQuery", () => {
18-
const languages = Object.keys(fetchExternalApiQueries);
18+
const language = Object.keys(fetchExternalApiQueries)[
19+
Math.floor(Math.random() * Object.keys(fetchExternalApiQueries).length)
20+
] as QueryLanguage;
1921

20-
const cases = languages.flatMap((lang) => {
21-
const queryDir = dirSync({ unsafeCleanup: true }).name;
22-
23-
const query = fetchExternalApiQueries[lang as QueryLanguage];
24-
if (!query) {
25-
return [];
26-
}
27-
28-
const keys = new Set(Object.keys(query));
29-
keys.delete("dependencies");
30-
31-
return Array.from(keys).map((name) => ({
32-
language: lang as QueryLanguage,
33-
queryName: name as keyof Omit<Query, "dependencies">,
34-
queryDir,
35-
}));
36-
});
22+
const queryDir = dirSync({ unsafeCleanup: true }).name;
3723

3824
it("should log an error", async () => {
3925
const showAndLogExceptionWithTelemetrySpy: jest.SpiedFunction<
@@ -42,9 +28,9 @@ describe("runQuery", () => {
4228

4329
const logPath = (await file()).path;
4430

45-
const query = fetchExternalApiQueries[cases[0].language];
31+
const query = fetchExternalApiQueries[language];
4632
if (!query) {
47-
throw new Error(`No query found for language ${cases[0].language}`);
33+
throw new Error(`No query found for language ${language}`);
4834
}
4935

5036
const options = {
@@ -71,92 +57,89 @@ describe("runQuery", () => {
7157
name: "foo",
7258
datasetUri: mockedUri(),
7359
},
74-
language: cases[0].language,
60+
language,
7561
},
7662
queryStorageDir: "/tmp/queries",
77-
queryDir: cases[0].queryDir,
63+
queryDir,
7864
progress: jest.fn(),
7965
token: {
8066
isCancellationRequested: false,
8167
onCancellationRequested: jest.fn(),
8268
},
8369
};
8470

85-
expect(await runQuery(cases[0].queryName, options)).toBeUndefined();
71+
expect(await runQuery(Mode.Application, options)).toBeUndefined();
8672
expect(showAndLogExceptionWithTelemetrySpy).toHaveBeenCalledWith(
8773
expect.anything(),
8874
undefined,
8975
expect.any(RedactableError),
9076
);
9177
});
9278

93-
test.each(cases)(
94-
"should run $queryName for $language",
95-
async ({ language, queryName, queryDir }) => {
96-
const logPath = (await file()).path;
79+
it("should run query for random language", async () => {
80+
const logPath = (await file()).path;
9781

98-
const query = fetchExternalApiQueries[language];
99-
if (!query) {
100-
throw new Error(`No query found for language ${language}`);
101-
}
82+
const query = fetchExternalApiQueries[language];
83+
if (!query) {
84+
throw new Error(`No query found for language ${language}`);
85+
}
10286

103-
const options = {
104-
cliServer: {
105-
resolveQlpacks: jest.fn().mockResolvedValue({
106-
"my/extensions": "/a/b/c/",
107-
}),
108-
},
109-
queryRunner: {
110-
createQueryRun: jest.fn().mockReturnValue({
111-
evaluate: jest.fn().mockResolvedValue({
112-
resultType: QueryResultType.SUCCESS,
113-
}),
114-
outputDir: {
115-
logPath,
116-
},
87+
const options = {
88+
cliServer: {
89+
resolveQlpacks: jest.fn().mockResolvedValue({
90+
"my/extensions": "/a/b/c/",
91+
}),
92+
},
93+
queryRunner: {
94+
createQueryRun: jest.fn().mockReturnValue({
95+
evaluate: jest.fn().mockResolvedValue({
96+
resultType: QueryResultType.SUCCESS,
11797
}),
118-
logger: createMockLogger(),
119-
},
120-
databaseItem: {
121-
databaseUri: mockedUri("/a/b/c/src.zip"),
122-
contents: {
123-
kind: DatabaseKind.Database,
124-
name: "foo",
125-
datasetUri: mockedUri(),
98+
outputDir: {
99+
logPath,
126100
},
127-
language,
128-
},
129-
queryStorageDir: "/tmp/queries",
130-
queryDir,
131-
progress: jest.fn(),
132-
token: {
133-
isCancellationRequested: false,
134-
onCancellationRequested: jest.fn(),
101+
}),
102+
logger: createMockLogger(),
103+
},
104+
databaseItem: {
105+
databaseUri: mockedUri("/a/b/c/src.zip"),
106+
contents: {
107+
kind: DatabaseKind.Database,
108+
name: "foo",
109+
datasetUri: mockedUri(),
135110
},
136-
};
111+
language,
112+
},
113+
queryStorageDir: "/tmp/queries",
114+
queryDir,
115+
progress: jest.fn(),
116+
token: {
117+
isCancellationRequested: false,
118+
onCancellationRequested: jest.fn(),
119+
},
120+
};
137121

138-
const result = await runQuery(queryName, options);
122+
const result = await runQuery(Mode.Framework, options);
139123

140-
expect(result?.resultType).toEqual(QueryResultType.SUCCESS);
124+
expect(result?.resultType).toEqual(QueryResultType.SUCCESS);
141125

142-
expect(options.cliServer.resolveQlpacks).toHaveBeenCalledTimes(1);
143-
expect(options.cliServer.resolveQlpacks).toHaveBeenCalledWith([], true);
144-
expect(options.queryRunner.createQueryRun).toHaveBeenCalledWith(
145-
"/a/b/c/src.zip",
146-
{
147-
queryPath: expect.stringMatching(/FetchExternalApis\S*\.ql/),
148-
quickEvalPosition: undefined,
149-
quickEvalCountOnly: false,
150-
},
151-
false,
152-
[],
153-
["my/extensions"],
154-
"/tmp/queries",
155-
undefined,
156-
undefined,
157-
);
158-
},
159-
);
126+
expect(options.cliServer.resolveQlpacks).toHaveBeenCalledTimes(1);
127+
expect(options.cliServer.resolveQlpacks).toHaveBeenCalledWith([], true);
128+
expect(options.queryRunner.createQueryRun).toHaveBeenCalledWith(
129+
"/a/b/c/src.zip",
130+
{
131+
queryPath: expect.stringMatching(/FetchExternalApis\S*\.ql/),
132+
quickEvalPosition: undefined,
133+
quickEvalCountOnly: false,
134+
},
135+
false,
136+
[],
137+
["my/extensions"],
138+
"/tmp/queries",
139+
undefined,
140+
undefined,
141+
);
142+
});
160143
});
161144

162145
describe("readQueryResults", () => {

0 commit comments

Comments
 (0)