@@ -14,6 +14,8 @@ import { fetchExternalApiQueries } from "../../../../src/data-extensions-editor/
1414import * as log from "../../../../src/common/logging/notifications" ;
1515import { RedactableError } from "../../../../src/common/errors" ;
1616import { showAndLogExceptionWithTelemetry } from "../../../../src/common/logging" ;
17+ import { QueryLanguage } from "../../../../src/common/query-language" ;
18+ import { Query } from "../../../../src/data-extensions-editor/queries/query" ;
1719
1820function createMockUri ( path = "/a/b/c/foo" ) : Uri {
1921 return {
@@ -29,11 +31,31 @@ function createMockUri(path = "/a/b/c/foo"): Uri {
2931}
3032
3133describe ( "runQuery" , ( ) => {
32- it ( "runs all queries" , async ( ) => {
33- const logPath = ( await file ( ) ) . path ;
34+ const cases = Object . keys ( fetchExternalApiQueries ) . flatMap ( ( lang ) => {
35+ const query = fetchExternalApiQueries [ lang as QueryLanguage ] ;
36+ if ( ! query ) {
37+ return [ ] ;
38+ }
39+
40+ const keys = new Set ( Object . keys ( query ) ) ;
41+ keys . delete ( "dependencies" ) ;
42+
43+ return Array . from ( keys ) . map ( ( name ) => ( {
44+ language : lang as QueryLanguage ,
45+ queryName : name as keyof Omit < Query , "dependencies" > ,
46+ } ) ) ;
47+ } ) ;
48+
49+ test . each ( cases ) (
50+ "should run $queryName for $language" ,
51+ async ( { language, queryName } ) => {
52+ const logPath = ( await file ( ) ) . path ;
53+
54+ const query = fetchExternalApiQueries [ language ] ;
55+ if ( ! query ) {
56+ throw new Error ( `No query found for language ${ language } ` ) ;
57+ }
3458
35- // Test all queries
36- for ( const [ lang , query ] of Object . entries ( fetchExternalApiQueries ) ) {
3759 const options = {
3860 cliServer : {
3961 resolveQlpacks : jest . fn ( ) . mockResolvedValue ( {
@@ -58,7 +80,7 @@ describe("runQuery", () => {
5880 name : "foo" ,
5981 datasetUri : createMockUri ( ) ,
6082 } ,
61- language : lang ,
83+ language,
6284 } ,
6385 queryStorageDir : "/tmp/queries" ,
6486 progress : jest . fn ( ) ,
@@ -67,7 +89,8 @@ describe("runQuery", () => {
6789 onCancellationRequested : jest . fn ( ) ,
6890 } ,
6991 } ;
70- const result = await runQuery ( "applicationModeQuery" , options ) ;
92+
93+ const result = await runQuery ( queryName , options ) ;
7194
7295 expect ( result ?. resultType ) . toEqual ( QueryResultType . SUCCESS ) ;
7396
@@ -106,13 +129,13 @@ describe("runQuery", () => {
106129 name : "codeql/external-api-usage" ,
107130 version : "0.0.0" ,
108131 dependencies : {
109- [ `codeql/${ lang } -all` ] : "*" ,
132+ [ `codeql/${ language } -all` ] : "*" ,
110133 } ,
111134 } ) ;
112135
113136 expect (
114137 await readFile ( join ( queryDirectory , "FetchExternalApis.ql" ) , "utf8" ) ,
115- ) . toEqual ( query . applicationModeQuery ) ;
138+ ) . toEqual ( query [ queryName ] ) ;
116139
117140 for ( const [ filename , contents ] of Object . entries (
118141 query . dependencies ?? { } ,
@@ -121,8 +144,8 @@ describe("runQuery", () => {
121144 contents ,
122145 ) ;
123146 }
124- }
125- } ) ;
147+ } ,
148+ ) ;
126149} ) ;
127150
128151describe ( "readQueryResults" , ( ) => {
0 commit comments