Use language display name for downloading databases

This commit is contained in:
Koen Vlaswinkel
2023-10-27 12:32:30 +02:00
parent 5ca084be91
commit a3735c21a1
2 changed files with 38 additions and 3 deletions

View File

@@ -32,6 +32,7 @@ import { AppCommandManager } from "../common/commands";
import { allowHttp } from "../config";
import { showAndLogInformationMessage } from "../common/logging";
import { AppOctokit } from "../common/octokit";
import { getLanguageDisplayName } from "../common/query-language";
/**
* Prompts a user to fetch a database from a remote location. Database is assumed to be an archive file.
@@ -579,10 +580,23 @@ export async function promptForLanguage(
return languages[0];
}
return await window.showQuickPick(languages, {
const items = languages
.map((language) => ({
label: getLanguageDisplayName(language),
description: language,
language,
}))
.sort((a, b) => a.label.localeCompare(b.label));
const selectedItem = await window.showQuickPick(items, {
placeHolder: "Select the database language to download:",
ignoreFocusOut: true,
});
if (!selectedItem) {
return undefined;
}
return selectedItem.language;
}
/**

View File

@@ -73,7 +73,12 @@ describe("database-fetcher", () => {
it("should convert a GitHub nwo to a database url", async () => {
mockRequest.mockResolvedValue(successfullMockApiResponse);
quickPickSpy.mockResolvedValue(mockedQuickPickItem("javascript"));
quickPickSpy.mockResolvedValue(
mockedQuickPickItem({
label: "JavaScript",
language: "javascript",
}),
);
const githubRepo = "github/codeql";
const result = await convertGithubNwoToDatabaseUrl(
githubRepo,
@@ -94,7 +99,23 @@ describe("database-fetcher", () => {
expect(owner).toBe("github");
expect(quickPickSpy).toHaveBeenNthCalledWith(
1,
["csharp", "javascript", "ql"],
[
expect.objectContaining({
label: "C#",
description: "csharp",
language: "csharp",
}),
expect.objectContaining({
label: "JavaScript",
description: "javascript",
language: "javascript",
}),
expect.objectContaining({
label: "ql",
description: "ql",
language: "ql",
}),
],
expect.anything(),
);
});