Move test to separate file.

This commit is contained in:
Anders Starcke Henriksen
2023-08-24 16:16:24 +02:00
parent 359e23fc59
commit 74a12b9fed
2 changed files with 72 additions and 68 deletions

View File

@@ -0,0 +1,72 @@
import { readFile, readFileSync, readdir } from "fs-extra";
import { join } from "path";
import { load } from "js-yaml";
import { setUpPack } from "../../../../src/data-extensions-editor/data-extensions-editor-queries";
import { dirSync } from "tmp-promise";
import { fetchExternalApiQueries } from "../../../../src/data-extensions-editor/queries";
import { QueryLanguage } from "../../../../src/common/query-language";
import { Mode } from "../../../../src/data-extensions-editor/shared/mode";
describe("setUpPack", () => {
const languages = Object.keys(fetchExternalApiQueries).flatMap((lang) => {
const queryDir = dirSync({ unsafeCleanup: true }).name;
const query = fetchExternalApiQueries[lang as QueryLanguage];
if (!query) {
return [];
}
return { language: lang as QueryLanguage, queryDir, query };
});
test.each(languages)(
"should create files for $language",
async ({ language, queryDir, query }) => {
await setUpPack(queryDir, language);
const queryFiles = await readdir(queryDir);
expect(queryFiles.sort()).toEqual(
[
"codeql-pack.yml",
"FetchExternalApisApplicationMode.ql",
"FetchExternalApisFrameworkMode.ql",
"AutomodelVsCode.qll",
].sort(),
);
const suiteFileContents = await readFile(
join(queryDir, "codeql-pack.yml"),
"utf8",
);
const suiteYaml = load(suiteFileContents);
expect(suiteYaml).toEqual({
name: "codeql/external-api-usage",
version: "0.0.0",
dependencies: {
[`codeql/${language}-all`]: "*",
},
});
Object.values(Mode).forEach((mode) => {
expect(
readFileSync(
join(
queryDir,
`FetchExternalApis${
mode.charAt(0).toUpperCase() + mode.slice(1)
}Mode.ql`,
),
"utf8",
),
).toEqual(query[`${mode}ModeQuery`]);
});
for (const [filename, contents] of Object.entries(
query.dependencies ?? {},
)) {
expect(await readFile(join(queryDir, filename), "utf8")).toEqual(
contents,
);
}
},
);
});

View File

@@ -13,76 +13,8 @@ import { showAndLogExceptionWithTelemetry } from "../../../../src/common/logging
import { QueryLanguage } from "../../../../src/common/query-language";
import { mockedUri } from "../../utils/mocking.helpers";
import { Mode } from "../../../../src/data-extensions-editor/shared/mode";
import { readFile, readFileSync, readdir } from "fs-extra";
import { join } from "path";
import { load } from "js-yaml";
import { setUpPack } from "../../../../src/data-extensions-editor/data-extensions-editor-queries";
describe("external api usage query", () => {
describe("setUpPack", () => {
const languages = Object.keys(fetchExternalApiQueries).flatMap((lang) => {
const queryDir = dirSync({ unsafeCleanup: true }).name;
const query = fetchExternalApiQueries[lang as QueryLanguage];
if (!query) {
return [];
}
return { language: lang as QueryLanguage, queryDir, query };
});
test.each(languages)(
"should create files for $language",
async ({ language, queryDir, query }) => {
await setUpPack(queryDir, language);
const queryFiles = await readdir(queryDir);
expect(queryFiles.sort()).toEqual(
[
"codeql-pack.yml",
"FetchExternalApisApplicationMode.ql",
"FetchExternalApisFrameworkMode.ql",
"AutomodelVsCode.qll",
].sort(),
);
const suiteFileContents = await readFile(
join(queryDir, "codeql-pack.yml"),
"utf8",
);
const suiteYaml = load(suiteFileContents);
expect(suiteYaml).toEqual({
name: "codeql/external-api-usage",
version: "0.0.0",
dependencies: {
[`codeql/${language}-all`]: "*",
},
});
Object.values(Mode).forEach((mode) => {
expect(
readFileSync(
join(
queryDir,
`FetchExternalApis${
mode.charAt(0).toUpperCase() + mode.slice(1)
}Mode.ql`,
),
"utf8",
),
).toEqual(query[`${mode}ModeQuery`]);
});
for (const [filename, contents] of Object.entries(
query.dependencies ?? {},
)) {
expect(await readFile(join(queryDir, filename), "utf8")).toEqual(
contents,
);
}
},
);
});
describe("runQuery", () => {
const language = Object.keys(fetchExternalApiQueries)[
Math.floor(Math.random() * Object.keys(fetchExternalApiQueries).length)