Convert db item methods to be static

So that we make it clear we should be passing state as params instead
of reading it off `this`.
This commit is contained in:
Elena Tanasoiu
2023-04-18 14:10:24 +00:00
parent 02dffe08d5
commit 02e17516d9
2 changed files with 45 additions and 35 deletions

View File

@@ -261,10 +261,11 @@ export class SkeletonQueryWizard {
throw new Error("QL Pack storage path is undefined");
}
const existingDatabaseItem = await this.findExistingDatabaseItem(
this.language,
this.databaseManager.databaseItems,
);
const existingDatabaseItem =
await SkeletonQueryWizard.findExistingDatabaseItem(
this.language,
this.databaseManager.databaseItems,
);
if (existingDatabaseItem) {
// select the found database
@@ -275,7 +276,7 @@ export class SkeletonQueryWizard {
}
}
public async findDatabaseItemByNwo(
public static async findDatabaseItemByNwo(
language: string,
databaseNwo: string,
databaseItems: readonly DatabaseItem[],
@@ -287,7 +288,7 @@ export class SkeletonQueryWizard {
return dbs.pop();
}
public async findDatabaseItemByLanguage(
public static async findDatabaseItemByLanguage(
language: string,
databaseItems: readonly DatabaseItem[],
): Promise<DatabaseItem | undefined> {
@@ -296,15 +297,17 @@ export class SkeletonQueryWizard {
return dbs.pop();
}
public async findExistingDatabaseItem(
public static async findExistingDatabaseItem(
language: string,
databaseItems: readonly DatabaseItem[],
): Promise<DatabaseItem | undefined> {
const defaultDatabaseNwo = QUERY_LANGUAGE_TO_DATABASE_REPO[language];
const dbItems = await this.sortDatabaseItemsByDateAdded(databaseItems);
const dbItems = await SkeletonQueryWizard.sortDatabaseItemsByDateAdded(
databaseItems,
);
const defaultDatabaseItem = await this.findDatabaseItemByNwo(
const defaultDatabaseItem = await SkeletonQueryWizard.findDatabaseItemByNwo(
language,
defaultDatabaseNwo,
dbItems,
@@ -314,10 +317,13 @@ export class SkeletonQueryWizard {
return defaultDatabaseItem;
}
return await this.findDatabaseItemByLanguage(language, dbItems);
return await SkeletonQueryWizard.findDatabaseItemByLanguage(
language,
dbItems,
);
}
public async sortDatabaseItemsByDateAdded(
public static async sortDatabaseItemsByDateAdded(
databaseItems: readonly DatabaseItem[],
) {
const validDbItems = databaseItems.filter((db) => db.error === undefined);

View File

@@ -320,7 +320,7 @@ describe("SkeletonQueryWizard", () => {
jest.spyOn(mockDbItem, "name", "get").mockReturnValue("mock-name");
const databaseItem = await wizard.findDatabaseItemByNwo(
const databaseItem = await SkeletonQueryWizard.findDatabaseItemByNwo(
mockDbItem.language,
mockDbItem.name,
[mockDbItem, mockDbItem2],
@@ -337,7 +337,7 @@ describe("SkeletonQueryWizard", () => {
const mockDbItem = createMockDB(dir);
const mockDbItem2 = createMockDB(dir);
const databaseItem = await wizard.findDatabaseItemByNwo(
const databaseItem = await SkeletonQueryWizard.findDatabaseItemByNwo(
"ruby",
"mock-nwo",
[mockDbItem, mockDbItem2],
@@ -358,10 +358,11 @@ describe("SkeletonQueryWizard", () => {
language: "javascript",
} as FullDatabaseOptions);
const databaseItem = await wizard.findDatabaseItemByLanguage("ruby", [
mockDbItem,
mockDbItem2,
]);
const databaseItem =
await SkeletonQueryWizard.findDatabaseItemByLanguage("ruby", [
mockDbItem,
mockDbItem2,
]);
expect(databaseItem).toEqual(mockDbItem);
});
@@ -372,10 +373,11 @@ describe("SkeletonQueryWizard", () => {
const mockDbItem = createMockDB(dir);
const mockDbItem2 = createMockDB(dir);
const databaseItem = await wizard.findDatabaseItemByLanguage("ruby", [
mockDbItem,
mockDbItem2,
]);
const databaseItem =
await SkeletonQueryWizard.findDatabaseItemByLanguage("ruby", [
mockDbItem,
mockDbItem2,
]);
expect(databaseItem).toBeUndefined();
});
@@ -510,12 +512,13 @@ describe("SkeletonQueryWizard", () => {
dateAdded: 345,
} as FullDatabaseOptions);
const sortedList = await wizard.sortDatabaseItemsByDateAdded([
mockDbItem,
mockDbItem2,
mockDbItem3,
mockDbItem4,
]);
const sortedList =
await SkeletonQueryWizard.sortDatabaseItemsByDateAdded([
mockDbItem,
mockDbItem2,
mockDbItem3,
mockDbItem4,
]);
expect(sortedList).toEqual([
mockDbItem3,
@@ -543,12 +546,13 @@ describe("SkeletonQueryWizard", () => {
.spyOn(mockDbItem, "error", "get")
.mockReturnValue(asError("database go boom!"));
const sortedList = await wizard.sortDatabaseItemsByDateAdded([
mockDbItem,
mockDbItem2,
mockDbItem3,
mockDbItem4,
]);
const sortedList =
await SkeletonQueryWizard.sortDatabaseItemsByDateAdded([
mockDbItem,
mockDbItem2,
mockDbItem3,
mockDbItem4,
]);
expect(sortedList).toEqual([mockDbItem2, mockDbItem4, mockDbItem3]);
});
@@ -582,7 +586,7 @@ describe("SkeletonQueryWizard", () => {
.spyOn(mockDbItem2, "name", "get")
.mockReturnValue(QUERY_LANGUAGE_TO_DATABASE_REPO["javascript"]);
const databaseItem = await wizard.findExistingDatabaseItem(
const databaseItem = await SkeletonQueryWizard.findExistingDatabaseItem(
"javascript",
[mockDbItem, mockDbItem2, mockDbItem3, mockDbItem4],
);
@@ -612,7 +616,7 @@ describe("SkeletonQueryWizard", () => {
dateAdded: undefined,
} as FullDatabaseOptions);
const databaseItem = await wizard.findExistingDatabaseItem(
const databaseItem = await SkeletonQueryWizard.findExistingDatabaseItem(
"javascript",
[mockDbItem, mockDbItem2, mockDbItem3, mockDbItem4],
);