Merge pull request #1860 from github/nora/show-error-empty-list

Show error message when running query on empty list
This commit is contained in:
Nora
2022-12-13 17:48:18 +01:00
committed by GitHub
2 changed files with 34 additions and 9 deletions

View File

@@ -41,20 +41,30 @@ export async function getRepositorySelection(
if (selectedDbItem) {
switch (selectedDbItem.kind) {
case DbItemKind.LocalDatabase || DbItemKind.LocalList:
throw new Error("Local databases and lists are not supported yet.");
throw new UserCancellationException(
"Local databases and lists are not supported yet.",
);
case DbItemKind.RemoteSystemDefinedList:
return { repositoryLists: [selectedDbItem.listName] };
case DbItemKind.RemoteUserDefinedList:
return {
repositories: selectedDbItem.repos.map((repo) => repo.repoFullName),
};
if (selectedDbItem.repos.length === 0) {
throw new UserCancellationException(
"The selected repository list is empty. Please add repositories to it before running a variant analysis.",
);
} else {
return {
repositories: selectedDbItem.repos.map(
(repo) => repo.repoFullName,
),
};
}
case DbItemKind.RemoteOwner:
return { owners: [selectedDbItem.ownerName] };
case DbItemKind.RemoteRepo:
return { repositories: [selectedDbItem.repoFullName] };
}
} else {
throw new Error(
throw new UserCancellationException(
"Please select a remote database to run the query against.",
);
}

View File

@@ -5,7 +5,11 @@ import { UserCancellationException } from "../../../commandRunner";
import * as config from "../../../config";
import { getRepositorySelection } from "../../../remote-queries/repository-selection";
import { DbManager } from "../../../databases/db-manager";
import { DbItem, DbItemKind } from "../../../databases/db-item";
import {
DbItem,
DbItemKind,
RemoteRepoDbItem,
} from "../../../databases/db-item";
describe("repository selection", () => {
describe("newQueryRunExperience true", () => {
@@ -19,17 +23,28 @@ describe("repository selection", () => {
const dbManager = setUpDbManager(undefined);
await expect(getRepositorySelection(dbManager)).rejects.toThrow(
Error("Please select a remote database to run the query against."),
"Please select a remote database to run the query against.",
);
});
it("should throw error when local database item is selected", async () => {
it("should log error when local database item is selected", async () => {
const dbManager = setUpDbManager({
kind: DbItemKind.LocalDatabase,
} as DbItem);
await expect(getRepositorySelection(dbManager)).rejects.toThrow(
Error("Local databases and lists are not supported yet."),
"Local databases and lists are not supported yet.",
);
});
it("should log an error when an empty remote user defined list is selected", async () => {
const dbManager = setUpDbManager({
kind: DbItemKind.RemoteUserDefinedList,
repos: [] as RemoteRepoDbItem[],
} as DbItem);
await expect(getRepositorySelection(dbManager)).rejects.toThrow(
"The selected repository list is empty. Please add repositories to it before running a variant analysis.",
);
});