@@ -11,29 +11,15 @@ import * as log from "../../../../src/common/logging/notifications";
1111import { RedactableError } from "../../../../src/common/errors" ;
1212import { showAndLogExceptionWithTelemetry } from "../../../../src/common/logging" ;
1313import { QueryLanguage } from "../../../../src/common/query-language" ;
14- import { Query } from "../../../../src/data-extensions-editor/queries/query" ;
1514import { mockedUri } from "../../utils/mocking.helpers" ;
15+ import { Mode } from "../../../../src/data-extensions-editor/shared/mode" ;
1616
1717describe ( "runQuery" , ( ) => {
18- const languages = Object . keys ( fetchExternalApiQueries ) ;
18+ const language = Object . keys ( fetchExternalApiQueries ) [
19+ Math . floor ( Math . random ( ) * Object . keys ( fetchExternalApiQueries ) . length )
20+ ] as QueryLanguage ;
1921
20- const cases = languages . flatMap ( ( lang ) => {
21- const queryDir = dirSync ( { unsafeCleanup : true } ) . name ;
22-
23- const query = fetchExternalApiQueries [ lang as QueryLanguage ] ;
24- if ( ! query ) {
25- return [ ] ;
26- }
27-
28- const keys = new Set ( Object . keys ( query ) ) ;
29- keys . delete ( "dependencies" ) ;
30-
31- return Array . from ( keys ) . map ( ( name ) => ( {
32- language : lang as QueryLanguage ,
33- queryName : name as keyof Omit < Query , "dependencies" > ,
34- queryDir,
35- } ) ) ;
36- } ) ;
22+ const queryDir = dirSync ( { unsafeCleanup : true } ) . name ;
3723
3824 it ( "should log an error" , async ( ) => {
3925 const showAndLogExceptionWithTelemetrySpy : jest . SpiedFunction <
@@ -42,9 +28,9 @@ describe("runQuery", () => {
4228
4329 const logPath = ( await file ( ) ) . path ;
4430
45- const query = fetchExternalApiQueries [ cases [ 0 ] . language ] ;
31+ const query = fetchExternalApiQueries [ language ] ;
4632 if ( ! query ) {
47- throw new Error ( `No query found for language ${ cases [ 0 ] . language } ` ) ;
33+ throw new Error ( `No query found for language ${ language } ` ) ;
4834 }
4935
5036 const options = {
@@ -71,92 +57,89 @@ describe("runQuery", () => {
7157 name : "foo" ,
7258 datasetUri : mockedUri ( ) ,
7359 } ,
74- language : cases [ 0 ] . language ,
60+ language,
7561 } ,
7662 queryStorageDir : "/tmp/queries" ,
77- queryDir : cases [ 0 ] . queryDir ,
63+ queryDir,
7864 progress : jest . fn ( ) ,
7965 token : {
8066 isCancellationRequested : false ,
8167 onCancellationRequested : jest . fn ( ) ,
8268 } ,
8369 } ;
8470
85- expect ( await runQuery ( cases [ 0 ] . queryName , options ) ) . toBeUndefined ( ) ;
71+ expect ( await runQuery ( Mode . Application , options ) ) . toBeUndefined ( ) ;
8672 expect ( showAndLogExceptionWithTelemetrySpy ) . toHaveBeenCalledWith (
8773 expect . anything ( ) ,
8874 undefined ,
8975 expect . any ( RedactableError ) ,
9076 ) ;
9177 } ) ;
9278
93- test . each ( cases ) (
94- "should run $queryName for $language" ,
95- async ( { language, queryName, queryDir } ) => {
96- const logPath = ( await file ( ) ) . path ;
79+ it ( "should run query for random language" , async ( ) => {
80+ const logPath = ( await file ( ) ) . path ;
9781
98- const query = fetchExternalApiQueries [ language ] ;
99- if ( ! query ) {
100- throw new Error ( `No query found for language ${ language } ` ) ;
101- }
82+ const query = fetchExternalApiQueries [ language ] ;
83+ if ( ! query ) {
84+ throw new Error ( `No query found for language ${ language } ` ) ;
85+ }
10286
103- const options = {
104- cliServer : {
105- resolveQlpacks : jest . fn ( ) . mockResolvedValue ( {
106- "my/extensions" : "/a/b/c/" ,
107- } ) ,
108- } ,
109- queryRunner : {
110- createQueryRun : jest . fn ( ) . mockReturnValue ( {
111- evaluate : jest . fn ( ) . mockResolvedValue ( {
112- resultType : QueryResultType . SUCCESS ,
113- } ) ,
114- outputDir : {
115- logPath,
116- } ,
87+ const options = {
88+ cliServer : {
89+ resolveQlpacks : jest . fn ( ) . mockResolvedValue ( {
90+ "my/extensions" : "/a/b/c/" ,
91+ } ) ,
92+ } ,
93+ queryRunner : {
94+ createQueryRun : jest . fn ( ) . mockReturnValue ( {
95+ evaluate : jest . fn ( ) . mockResolvedValue ( {
96+ resultType : QueryResultType . SUCCESS ,
11797 } ) ,
118- logger : createMockLogger ( ) ,
119- } ,
120- databaseItem : {
121- databaseUri : mockedUri ( "/a/b/c/src.zip" ) ,
122- contents : {
123- kind : DatabaseKind . Database ,
124- name : "foo" ,
125- datasetUri : mockedUri ( ) ,
98+ outputDir : {
99+ logPath,
126100 } ,
127- language,
128- } ,
129- queryStorageDir : "/tmp/queries" ,
130- queryDir,
131- progress : jest . fn ( ) ,
132- token : {
133- isCancellationRequested : false ,
134- onCancellationRequested : jest . fn ( ) ,
101+ } ) ,
102+ logger : createMockLogger ( ) ,
103+ } ,
104+ databaseItem : {
105+ databaseUri : mockedUri ( "/a/b/c/src.zip" ) ,
106+ contents : {
107+ kind : DatabaseKind . Database ,
108+ name : "foo" ,
109+ datasetUri : mockedUri ( ) ,
135110 } ,
136- } ;
111+ language,
112+ } ,
113+ queryStorageDir : "/tmp/queries" ,
114+ queryDir,
115+ progress : jest . fn ( ) ,
116+ token : {
117+ isCancellationRequested : false ,
118+ onCancellationRequested : jest . fn ( ) ,
119+ } ,
120+ } ;
137121
138- const result = await runQuery ( queryName , options ) ;
122+ const result = await runQuery ( Mode . Framework , options ) ;
139123
140- expect ( result ?. resultType ) . toEqual ( QueryResultType . SUCCESS ) ;
124+ expect ( result ?. resultType ) . toEqual ( QueryResultType . SUCCESS ) ;
141125
142- expect ( options . cliServer . resolveQlpacks ) . toHaveBeenCalledTimes ( 1 ) ;
143- expect ( options . cliServer . resolveQlpacks ) . toHaveBeenCalledWith ( [ ] , true ) ;
144- expect ( options . queryRunner . createQueryRun ) . toHaveBeenCalledWith (
145- "/a/b/c/src.zip" ,
146- {
147- queryPath : expect . stringMatching ( / F e t c h E x t e r n a l A p i s \S * \. q l / ) ,
148- quickEvalPosition : undefined ,
149- quickEvalCountOnly : false ,
150- } ,
151- false ,
152- [ ] ,
153- [ "my/extensions" ] ,
154- "/tmp/queries" ,
155- undefined ,
156- undefined ,
157- ) ;
158- } ,
159- ) ;
126+ expect ( options . cliServer . resolveQlpacks ) . toHaveBeenCalledTimes ( 1 ) ;
127+ expect ( options . cliServer . resolveQlpacks ) . toHaveBeenCalledWith ( [ ] , true ) ;
128+ expect ( options . queryRunner . createQueryRun ) . toHaveBeenCalledWith (
129+ "/a/b/c/src.zip" ,
130+ {
131+ queryPath : expect . stringMatching ( / F e t c h E x t e r n a l A p i s \S * \. q l / ) ,
132+ quickEvalPosition : undefined ,
133+ quickEvalCountOnly : false ,
134+ } ,
135+ false ,
136+ [ ] ,
137+ [ "my/extensions" ] ,
138+ "/tmp/queries" ,
139+ undefined ,
140+ undefined ,
141+ ) ;
142+ } ) ;
160143} ) ;
161144
162145describe ( "readQueryResults" , ( ) => {
0 commit comments