1515 */
1616
1717import { Editor , loadFileAsString , LocalRegistry , VERSIONS_PATH } from './helpers'
18- import { BUILD_TYPE , PACKAGE , PackageNotifications , REST_API_TYPE } from '../src'
18+ import { BUILD_TYPE , BuildConfigAggregator , BuildResult , PACKAGE , PackageNotifications , REST_API_TYPE } from '../src'
1919import { load } from 'js-yaml'
2020
2121const GROUP_NAME = 'manualGroup'
@@ -76,15 +76,12 @@ describe('Document Group test', () => {
7676 } )
7777
7878 test ( 'should have components schema object which is referenced' , async ( ) => {
79- const pkg = LocalRegistry . openPackage ( `document-group/${ BASE_OPERATION_PATH } /referenced-json-schema-object` , groupToOnePathOperationIdsMap )
80- const editor = await Editor . openProject ( pkg . packageId , pkg )
81- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
79+ const result = await runWithPackage (
80+ `document-group/${ BASE_OPERATION_PATH } /referenced-json-schema-object` ,
81+ groupToOnePathOperationIdsMap ,
82+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
83+ )
8284
83- const result = await editor . run ( {
84- packageId : pkg . packageId ,
85- groupName : GROUP_NAME ,
86- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
87- } )
8885 for ( const document of Array . from ( result . documents . values ( ) ) ) {
8986 expect ( document . data ) . toHaveProperty ( [ 'components' , 'schemas' , 'MySchema' ] )
9087 }
@@ -148,15 +145,11 @@ describe('Document Group test', () => {
148145 } )
149146
150147 test ( 'should have save pathItems in components' , async ( ) => {
151- const pkg = LocalRegistry . openPackage ( `document-group/${ PATH_ITEMS_OPERATION_PATH } /multiple-pathitems-operations` , groupToOperationIdsMap )
152- const editor = await Editor . openProject ( pkg . packageId , pkg )
153- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
154-
155- const result = await editor . run ( {
156- packageId : pkg . packageId ,
157- groupName : GROUP_NAME ,
158- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
159- } )
148+ const result = await runWithPackage (
149+ `document-group/${ PATH_ITEMS_OPERATION_PATH } /multiple-pathitems-operations` ,
150+ groupToOperationIdsMap ,
151+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
152+ )
160153
161154 for ( const document of Array . from ( result . documents . values ( ) ) ) {
162155 expect ( Object . keys ( document . data . components . pathItems ) . length ) . toEqual ( document . operationIds . length )
@@ -184,32 +177,27 @@ describe('Document Group test', () => {
184177
185178 describe ( 'Chain pathItems Refs' , ( ) => {
186179 const COMPONENTS_ITEM_1_PATH = [ 'components' , 'pathItems' , 'componentsPathItem1' ]
180+
187181 test ( 'should have documents with keep pathItems in components' , async ( ) => {
188- const pkg = LocalRegistry . openPackage ( `document-group/${ PATH_ITEMS_OPERATION_PATH } /define-pathitems-via-reference-object-chain` , groupToOnePathOperationIdsMap )
189- const editor = await Editor . openProject ( pkg . packageId , pkg )
190- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
191-
192- const result = await editor . run ( {
193- packageId : pkg . packageId ,
194- groupName : GROUP_NAME ,
195- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
196- } )
182+ const result = await runWithPackage (
183+ `document-group/${ PATH_ITEMS_OPERATION_PATH } /define-pathitems-via-reference-object-chain` ,
184+ groupToOnePathOperationIdsMap ,
185+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
186+ )
187+
197188 for ( const document of Array . from ( result . documents . values ( ) ) ) {
198189 expect ( document . data ) . toHaveProperty ( [ ...COMPONENTS_ITEM_1_PATH , 'post' ] )
199190 expect ( document . data ) . toHaveProperty ( [ ...COMPONENTS_ITEM_1_PATH , 'get' ] )
200191 }
201192 } )
202193
203194 test ( 'should have documents stripped of operations other than from provided group' , async ( ) => {
204- const pkg = LocalRegistry . openPackage ( `document-group/${ PATH_ITEMS_OPERATION_PATH } /define-pathitems-via-reference-object-chain` , groupWithOneOperationIdsMap )
205- const editor = await Editor . openProject ( pkg . packageId , pkg )
206- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
207-
208- const result = await editor . run ( {
209- packageId : pkg . packageId ,
210- groupName : GROUP_NAME ,
211- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
212- } )
195+ const result = await runWithPackage (
196+ `document-group/${ PATH_ITEMS_OPERATION_PATH } /define-pathitems-via-reference-object-chain` ,
197+ groupWithOneOperationIdsMap ,
198+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
199+ )
200+
213201 for ( const document of Array . from ( result . documents . values ( ) ) ) {
214202 expect ( document . data ) . toHaveProperty ( [ ...COMPONENTS_ITEM_1_PATH , 'post' ] )
215203 expect ( document . data ) . not . toHaveProperty ( [ ...COMPONENTS_ITEM_1_PATH , 'get' ] )
@@ -220,15 +208,12 @@ describe('Document Group test', () => {
220208
221209 function runCommonTests ( folder : DOCUMENT_GROUP_PATHS ) : void {
222210 test ( 'should have keep a multiple operations in one path' , async ( ) => {
223- const pkg = LocalRegistry . openPackage ( `document-group/${ folder } /multiple-operations-in-one-path` , groupToOnePathOperationIdsMap )
224- const editor = await Editor . openProject ( pkg . packageId , pkg )
225- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
211+ const result = await runWithPackage (
212+ `document-group/${ folder } /multiple-operations-in-one-path` ,
213+ groupToOnePathOperationIdsMap ,
214+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
215+ )
226216
227- const result = await editor . run ( {
228- packageId : pkg . packageId ,
229- groupName : GROUP_NAME ,
230- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
231- } )
232217 for ( const document of Array . from ( result . documents . values ( ) ) ) {
233218 folder === PATH_ITEMS_OPERATION_PATH
234219 ? expect ( Object . keys ( document . data . components . pathItems [ 'pathItem1' ] ) . length ) . toEqual ( document . operationIds . length )
@@ -237,30 +222,23 @@ describe('Document Group test', () => {
237222 } )
238223
239224 test ( 'should define operations with servers prefix' , async ( ) => {
240- const pkg = LocalRegistry . openPackage ( `document-group/${ folder } /define-operations-with-servers-prefix` , groupToOneServerPrefixPathOperationIdsMap )
241- const editor = await Editor . openProject ( pkg . packageId , pkg )
242- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
225+ const result = await runWithPackage (
226+ `document-group/${ folder } /define-operations-with-servers-prefix` ,
227+ groupToOneServerPrefixPathOperationIdsMap ,
228+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
229+ )
243230
244- const result = await editor . run ( {
245- packageId : pkg . packageId ,
246- groupName : GROUP_NAME ,
247- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
248- } )
249231 for ( const document of Array . from ( result . documents . values ( ) ) ) {
250232 expect ( Object . keys ( document . data . paths ) . length ) . toEqual ( document . operationIds . length )
251233 }
252234 } )
253235
254236 test ( 'should delete pathItems object which is not referenced' , async ( ) => {
255- const pkg = LocalRegistry . openPackage ( `document-group/${ folder } /not-referenced-object` , groupToOperationIdsMap )
256- const editor = await Editor . openProject ( pkg . packageId , pkg )
257- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
258-
259- const result = await editor . run ( {
260- packageId : pkg . packageId ,
261- groupName : GROUP_NAME ,
262- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
263- } )
237+ const result = await runWithPackage (
238+ `document-group/${ folder } /not-referenced-object` ,
239+ groupToOperationIdsMap ,
240+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
241+ )
264242
265243 for ( const document of Array . from ( result . documents . values ( ) ) ) {
266244 folder === PATH_ITEMS_OPERATION_PATH
@@ -270,30 +248,23 @@ describe('Document Group test', () => {
270248 } )
271249
272250 test ( 'should have documents stripped of operations other than from provided group' , async ( ) => {
273- const pkg = LocalRegistry . openPackage ( `document-group/${ folder } /stripped-of-operations` , groupToOperationIdsMap )
274- const editor = await Editor . openProject ( pkg . packageId , pkg )
275- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
251+ const result = await runWithPackage (
252+ `document-group/${ folder } /stripped-of-operations` ,
253+ groupToOperationIdsMap ,
254+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
255+ )
276256
277- const result = await editor . run ( {
278- packageId : pkg . packageId ,
279- groupName : GROUP_NAME ,
280- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
281- } )
282257 for ( const document of Array . from ( result . documents . values ( ) ) ) {
283258 expect ( Object . keys ( document . data . paths ) . length ) . toEqual ( document . operationIds . length )
284259 }
285260 } )
286261
287262 test ( 'should not hang up when processing for response which points to itself' , async ( ) => {
288- const pkg = LocalRegistry . openPackage ( `document-group/${ folder } /not-hang-up-when-processing-for-response-which-points-to-itself` , groupToOnePathOperationIdsMap )
289- const editor = await Editor . openProject ( pkg . packageId , pkg )
290- await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
291-
292- const result = await editor . run ( {
293- packageId : pkg . packageId ,
294- groupName : GROUP_NAME ,
295- buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS ,
296- } )
263+ const result = await runWithPackage (
264+ `document-group/${ folder } /not-hang-up-when-processing-for-response-which-points-to-itself` ,
265+ groupToOnePathOperationIdsMap ,
266+ { buildType : BUILD_TYPE . REDUCED_SOURCE_SPECIFICATIONS } ,
267+ )
297268
298269 expect ( result . documents . size ) . toEqual ( 0 )
299270 } )
@@ -342,4 +313,22 @@ describe('Document Group test', () => {
342313
343314 expect ( result . merged ?. data ) . toEqual ( expectedResult )
344315 }
316+
317+ async function runWithPackage (
318+ packageId : string ,
319+ groupOperationIds : Record < string , string [ ] > ,
320+ options : Partial < BuildConfigAggregator > = { } ,
321+ ) : Promise < BuildResult > {
322+ const pkg = LocalRegistry . openPackage ( packageId , groupOperationIds )
323+ const editor = await Editor . openProject ( pkg . packageId , pkg )
324+ await pkg . publish ( pkg . packageId , { packageId : pkg . packageId } )
325+
326+ return editor . run ( {
327+ ...{
328+ packageId : pkg . packageId ,
329+ groupName : GROUP_NAME ,
330+ } ,
331+ ...options ,
332+ } )
333+ }
345334} )
0 commit comments