11import {
22 readQueryResults ,
3- runQuery ,
3+ runExternalApiQueries ,
44} from "../../../../src/data-extensions-editor/external-api-usage-queries" ;
55import { createMockLogger } from "../../../__mocks__/loggerMock" ;
6- import { DatabaseKind } from "../../../../src/databases/local-databases" ;
6+ import {
7+ DatabaseItem ,
8+ DatabaseKind ,
9+ } from "../../../../src/databases/local-databases" ;
710import { dirSync , file } from "tmp-promise" ;
811import { QueryResultType } from "../../../../src/query-server/new-messages" ;
912import { fetchExternalApiQueries } from "../../../../src/data-extensions-editor/queries" ;
1013import * as log from "../../../../src/common/logging/notifications" ;
1114import { RedactableError } from "../../../../src/common/errors" ;
1215import { showAndLogExceptionWithTelemetry } from "../../../../src/common/logging" ;
1316import { QueryLanguage } from "../../../../src/common/query-language" ;
14- import { mockedUri } from "../../utils/mocking.helpers" ;
17+ import { mockedObject , mockedUri } from "../../utils/mocking.helpers" ;
1518import { Mode } from "../../../../src/data-extensions-editor/shared/mode" ;
19+ import { join } from "path" ;
20+ import { CodeQLCliServer } from "../../../../src/codeql-cli/cli" ;
21+ import { QueryRunner } from "../../../../src/query-server" ;
22+ import { QueryOutputDir } from "../../../../src/run-queries-shared" ;
1623
1724describe ( "external api usage query" , ( ) => {
1825 describe ( "runQuery" , ( ) => {
@@ -27,39 +34,44 @@ describe("external api usage query", () => {
2734 typeof showAndLogExceptionWithTelemetry
2835 > = jest . spyOn ( log , "showAndLogExceptionWithTelemetry" ) ;
2936
30- const logPath = ( await file ( ) ) . path ;
37+ const outputDir = new QueryOutputDir ( join ( ( await file ( ) ) . path , "1" ) ) ;
3138
3239 const query = fetchExternalApiQueries [ language ] ;
3340 if ( ! query ) {
3441 throw new Error ( `No query found for language ${ language } ` ) ;
3542 }
3643
3744 const options = {
38- cliServer : {
45+ cliServer : mockedObject < CodeQLCliServer > ( {
3946 resolveQlpacks : jest . fn ( ) . mockResolvedValue ( {
4047 "my/extensions" : "/a/b/c/" ,
4148 } ) ,
42- } ,
43- queryRunner : {
49+ packPacklist : jest
50+ . fn ( )
51+ . mockResolvedValue ( [
52+ "/a/b/c/qlpack.yml" ,
53+ "/a/b/c/qlpack.lock.yml" ,
54+ "/a/b/c/qlpack2.yml" ,
55+ ] ) ,
56+ } ) ,
57+ queryRunner : mockedObject < QueryRunner > ( {
4458 createQueryRun : jest . fn ( ) . mockReturnValue ( {
4559 evaluate : jest . fn ( ) . mockResolvedValue ( {
4660 resultType : QueryResultType . CANCELLATION ,
4761 } ) ,
48- outputDir : {
49- logPath,
50- } ,
62+ outputDir,
5163 } ) ,
5264 logger : createMockLogger ( ) ,
53- } ,
54- databaseItem : {
65+ } ) ,
66+ databaseItem : mockedObject < DatabaseItem > ( {
5567 databaseUri : mockedUri ( "/a/b/c/src.zip" ) ,
5668 contents : {
5769 kind : DatabaseKind . Database ,
5870 name : "foo" ,
5971 datasetUri : mockedUri ( ) ,
6072 } ,
6173 language,
62- } ,
74+ } ) ,
6375 queryStorageDir : "/tmp/queries" ,
6476 queryDir,
6577 progress : jest . fn ( ) ,
@@ -69,7 +81,9 @@ describe("external api usage query", () => {
6981 } ,
7082 } ;
7183
72- expect ( await runQuery ( Mode . Application , options ) ) . toBeUndefined ( ) ;
84+ expect (
85+ await runExternalApiQueries ( Mode . Application , options ) ,
86+ ) . toBeUndefined ( ) ;
7387 expect ( showAndLogExceptionWithTelemetrySpy ) . toHaveBeenCalledWith (
7488 expect . anything ( ) ,
7589 undefined ,
@@ -78,39 +92,48 @@ describe("external api usage query", () => {
7892 } ) ;
7993
8094 it ( "should run query for random language" , async ( ) => {
81- const logPath = ( await file ( ) ) . path ;
95+ const outputDir = new QueryOutputDir ( join ( ( await file ( ) ) . path , "1" ) ) ;
8296
8397 const query = fetchExternalApiQueries [ language ] ;
8498 if ( ! query ) {
8599 throw new Error ( `No query found for language ${ language } ` ) ;
86100 }
87101
88102 const options = {
89- cliServer : {
103+ cliServer : mockedObject < CodeQLCliServer > ( {
90104 resolveQlpacks : jest . fn ( ) . mockResolvedValue ( {
91105 "my/extensions" : "/a/b/c/" ,
92106 } ) ,
93- } ,
94- queryRunner : {
107+ packPacklist : jest
108+ . fn ( )
109+ . mockResolvedValue ( [
110+ "/a/b/c/qlpack.yml" ,
111+ "/a/b/c/qlpack.lock.yml" ,
112+ "/a/b/c/qlpack2.yml" ,
113+ ] ) ,
114+ bqrsInfo : jest . fn ( ) . mockResolvedValue ( {
115+ "result-sets" : [ ] ,
116+ } ) ,
117+ } ) ,
118+ queryRunner : mockedObject < QueryRunner > ( {
95119 createQueryRun : jest . fn ( ) . mockReturnValue ( {
96120 evaluate : jest . fn ( ) . mockResolvedValue ( {
97121 resultType : QueryResultType . SUCCESS ,
122+ outputDir,
98123 } ) ,
99- outputDir : {
100- logPath,
101- } ,
124+ outputDir,
102125 } ) ,
103126 logger : createMockLogger ( ) ,
104- } ,
105- databaseItem : {
127+ } ) ,
128+ databaseItem : mockedObject < DatabaseItem > ( {
106129 databaseUri : mockedUri ( "/a/b/c/src.zip" ) ,
107130 contents : {
108131 kind : DatabaseKind . Database ,
109132 name : "foo" ,
110133 datasetUri : mockedUri ( ) ,
111134 } ,
112135 language,
113- } ,
136+ } ) ,
114137 queryStorageDir : "/tmp/queries" ,
115138 queryDir,
116139 progress : jest . fn ( ) ,
@@ -120,9 +143,9 @@ describe("external api usage query", () => {
120143 } ,
121144 } ;
122145
123- const result = await runQuery ( Mode . Framework , options ) ;
146+ const result = await runExternalApiQueries ( Mode . Framework , options ) ;
124147
125- expect ( result ?. resultType ) . toEqual ( QueryResultType . SUCCESS ) ;
148+ expect ( result ) . not . toBeUndefined ;
126149
127150 expect ( options . cliServer . resolveQlpacks ) . toHaveBeenCalledTimes ( 1 ) ;
128151 expect ( options . cliServer . resolveQlpacks ) . toHaveBeenCalledWith ( [ ] , true ) ;
0 commit comments