@@ -23,6 +23,7 @@ import { testDisposeHandler } from "../test-dispose-handler";
2323import { QueryRunner } from "../../../src/queryRunner" ;
2424import * as helpers from "../../../src/helpers" ;
2525import { Setting } from "../../../src/config" ;
26+ import { QlPackGenerator } from "../../../src/qlpack-generator" ;
2627
2728describe ( "databases" , ( ) => {
2829 const MOCK_DB_OPTIONS : FullDatabaseOptions = {
@@ -32,11 +33,13 @@ describe("databases", () => {
3233 } ;
3334
3435 let databaseManager : DatabaseManager ;
36+ let extensionContext : ExtensionContext ;
3537
3638 let updateSpy : jest . Mock < Promise < void > , [ ] > ;
3739 let registerSpy : jest . Mock < Promise < void > , [ ] > ;
3840 let deregisterSpy : jest . Mock < Promise < void > , [ ] > ;
3941 let resolveDatabaseSpy : jest . Mock < Promise < DbInfo > , [ ] > ;
42+ let packAddSpy : jest . Mock < any , [ ] > ;
4043 let logSpy : jest . Mock < any , [ ] > ;
4144
4245 let showBinaryChoiceDialogSpy : jest . SpiedFunction <
@@ -52,6 +55,7 @@ describe("databases", () => {
5255 registerSpy = jest . fn ( ( ) => Promise . resolve ( undefined ) ) ;
5356 deregisterSpy = jest . fn ( ( ) => Promise . resolve ( undefined ) ) ;
5457 resolveDatabaseSpy = jest . fn ( ( ) => Promise . resolve ( { } as DbInfo ) ) ;
58+ packAddSpy = jest . fn ( ) ;
5559 logSpy = jest . fn ( ( ) => {
5660 /* */
5761 } ) ;
@@ -60,16 +64,19 @@ describe("databases", () => {
6064 . spyOn ( helpers , "showBinaryChoiceDialog" )
6165 . mockResolvedValue ( true ) ;
6266
67+ extensionContext = {
68+ workspaceState : {
69+ update : updateSpy ,
70+ get : ( ) => [ ] ,
71+ } ,
72+ // pretend like databases added in the temp dir are controlled by the extension
73+ // so that they are deleted upon removal
74+ storagePath : dir . name ,
75+ storageUri : Uri . parse ( dir . name ) ,
76+ } as unknown as ExtensionContext ;
77+
6378 databaseManager = new DatabaseManager (
64- {
65- workspaceState : {
66- update : updateSpy ,
67- get : ( ) => [ ] ,
68- } ,
69- // pretend like databases added in the temp dir are controlled by the extension
70- // so that they are deleted upon removal
71- storagePath : dir . name ,
72- } as unknown as ExtensionContext ,
79+ extensionContext ,
7380 {
7481 registerDatabase : registerSpy ,
7582 deregisterDatabase : deregisterSpy ,
@@ -79,6 +86,7 @@ describe("databases", () => {
7986 } as unknown as QueryRunner ,
8087 {
8188 resolveDatabase : resolveDatabaseSpy ,
89+ packAdd : packAddSpy ,
8290 } as unknown as CodeQLCliServer ,
8391 {
8492 log : logSpy ,
@@ -589,20 +597,46 @@ describe("databases", () => {
589597
590598 describe ( "createSkeletonPacks" , ( ) => {
591599 let mockDbItem : DatabaseItemImpl ;
600+ let language : string ;
601+ let generateSpy : jest . SpyInstance ;
602+
603+ beforeEach ( ( ) => {
604+ language = "ruby" ;
605+
606+ const options : FullDatabaseOptions = {
607+ dateAdded : 123 ,
608+ ignoreSourceArchive : false ,
609+ language,
610+ } ;
611+ mockDbItem = createMockDB ( options ) ;
612+
613+ generateSpy = jest
614+ . spyOn ( QlPackGenerator . prototype , "generate" )
615+ . mockImplementation ( ( ) => Promise . resolve ( ) ) ;
616+ } ) ;
592617
593618 describe ( "when the language is set" , ( ) => {
594619 it ( "should offer the user to set up a skeleton QL pack" , async ( ) => {
595- const options : FullDatabaseOptions = {
596- dateAdded : 123 ,
597- ignoreSourceArchive : false ,
598- language : "ruby" ,
599- } ;
600- mockDbItem = createMockDB ( options ) ;
601-
602620 await ( databaseManager as any ) . createSkeletonPacks ( mockDbItem ) ;
603621
604622 expect ( showBinaryChoiceDialogSpy ) . toBeCalledTimes ( 1 ) ;
605623 } ) ;
624+
625+ it ( "should return early if the user refuses help" , async ( ) => {
626+ showBinaryChoiceDialogSpy = jest
627+ . spyOn ( helpers , "showBinaryChoiceDialog" )
628+ . mockResolvedValue ( false ) ;
629+
630+ await ( databaseManager as any ) . createSkeletonPacks ( mockDbItem ) ;
631+
632+ expect ( generateSpy ) . not . toBeCalled ( ) ;
633+ } ) ;
634+
635+ it ( "should create the skeleton QL pack for the user" , async ( ) => {
636+ await ( databaseManager as any ) . createSkeletonPacks ( mockDbItem ) ;
637+
638+ expect ( generateSpy ) . toBeCalled ( ) ;
639+ } ) ;
606640 } ) ;
607641
608642 describe ( "when the language is not set" , ( ) => {
0 commit comments