@@ -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