@@ -20,6 +20,7 @@ import {
2020} from "../../../src/local-databases";
2121import * as databaseFetcher from "../../../src/databaseFetcher";
2222import { createMockDB } from "../../factories/databases/databases";
23+ import { asError } from "../../../src/pure/helpers-pure";
2324
2425jest.setTimeout(40_000);
2526
@@ -366,17 +367,56 @@ describe("SkeletonQueryWizard", () => {
366367 describe("findDatabaseItemByNwo", () => {
367368 describe("when the item exists", () => {
368369 it("should return the database item", async () => {
369- const mockDbItem = createMockDB(dir);
370- const mockDbItem2 = createMockDB(dir);
370+ const mockDbItem = createMockDB(dir, {
371+ language: "ruby",
372+ dateAdded: 123,
373+ } as FullDatabaseOptions);
374+ const mockDbItem2 = createMockDB(dir, {
375+ language: "javascript",
376+ } as FullDatabaseOptions);
377+
378+ jest.spyOn(mockDbItem, "name", "get").mockReturnValue("mock-name");
371379
372380 const databaseItem = await wizard.findDatabaseItemByNwo(
373381 mockDbItem.language,
374382 mockDbItem.name,
375383 [mockDbItem, mockDbItem2],
376384 );
377385
378- expect(databaseItem!.language).toEqual(mockDbItem.language);
379- expect(databaseItem!.name).toEqual(mockDbItem.name);
386+ expect(JSON.stringify(databaseItem)).toEqual(
387+ JSON.stringify(mockDbItem),
388+ );
389+ });
390+
391+ it("should ignore databases with errors", async () => {
392+ const mockDbItem = createMockDB(dir, {
393+ language: "ruby",
394+ dateAdded: 123,
395+ } as FullDatabaseOptions);
396+ const mockDbItem2 = createMockDB(dir, {
397+ language: "javascript",
398+ } as FullDatabaseOptions);
399+ const mockDbItem3 = createMockDB(dir, {
400+ language: "ruby",
401+ dateAdded: 345,
402+ } as FullDatabaseOptions);
403+
404+ jest.spyOn(mockDbItem, "name", "get").mockReturnValue("mock-name");
405+ jest.spyOn(mockDbItem3, "name", "get").mockReturnValue(mockDbItem.name);
406+
407+ jest
408+ .spyOn(mockDbItem, "error", "get")
409+ .mockReturnValue(asError("database go boom!"));
410+
411+ const databaseItem = await wizard.findDatabaseItemByNwo(
412+ mockDbItem.language,
413+ mockDbItem.name,
414+ [mockDbItem, mockDbItem2, mockDbItem3],
415+ );
416+
417+ expect(JSON.stringify(databaseItem)).toEqual(
418+ JSON.stringify(mockDbItem3),
419+ );
380420 });
381421 });
382422
@@ -413,6 +453,32 @@ describe("SkeletonQueryWizard", () => {
413453
414454 expect(databaseItem).toEqual(mockDbItem);
415455 });
456+
457+ it("should ignore databases with errors", async () => {
458+ const mockDbItem = createMockDB(dir, {
459+ language: "ruby",
460+ } as FullDatabaseOptions);
461+ const mockDbItem2 = createMockDB(dir, {
462+ language: "javascript",
463+ } as FullDatabaseOptions);
464+ const mockDbItem3 = createMockDB(dir, {
465+ language: "ruby",
466+ } as FullDatabaseOptions);
467+
468+ jest
469+ .spyOn(mockDbItem, "error", "get")
470+ .mockReturnValue(asError("database go boom!"));
471+
472+ const databaseItem = await wizard.findDatabaseItemByLanguage("ruby", [
473+ mockDbItem,
474+ mockDbItem2,
475+ mockDbItem3,
476+ ]);
477+
478+ expect(JSON.stringify(databaseItem)).toEqual(
479+ JSON.stringify(mockDbItem3),
480+ );
481+ });
416482 });
417483
418484 describe("when the item doesn't exist", () => {
0 commit comments