@@ -75,19 +75,26 @@ function setupDirectoryStructure(
7575 } ,
7676 structure : Array < { path : string ; contents : string [ ] } >
7777) : void {
78- let callIndex = 0 ;
79-
8078 for ( const dir of structure ) {
81- fsStub . readdir . onCall ( callIndex ++ ) . returns ( dir . contents ) ;
79+ fsStub . readdir . withArgs ( dir . path ) . resolves ( dir . contents ) ;
8280
8381 for ( const item of dir . contents ) {
8482 const itemPath = `${ dir . path } /${ item } ` ;
85- const isFile = item . endsWith ( ".json" ) || item . endsWith ( ".yaml" ) ;
86- fsStub . stat . withArgs ( itemPath ) . returns ( { isDirectory : ( ) => ! isFile } ) ;
83+ const isFile =
84+ item . endsWith ( ".json" ) ||
85+ item . endsWith ( ".yaml" ) ||
86+ item . endsWith ( ".yml" ) ;
87+ fsStub . stat . withArgs ( itemPath ) . resolves ( {
88+ isDirectory : ( ) => ! isFile ,
89+ isFile : ( ) => isFile ,
90+ } ) ;
8791 }
8892 }
8993
90- fsStub . stat . returns ( { isDirectory : ( ) => true } ) ;
94+ fsStub . stat . resolves ( {
95+ isDirectory : ( ) => true ,
96+ isFile : ( ) => false ,
97+ } ) ;
9198}
9299
93100function createOasDiffProxy (
@@ -264,7 +271,9 @@ describe("oasDiffChangelog", () => {
264271 const result = await oasDiff . oasDiffChangelog ( baseApi , newApi , flags ) ;
265272
266273 expect ( execStub . called ) . to . be . true ;
267- expect ( execStub . args [ 1 ] [ 0 ] ) . to . include ( "base/api-v1/**/*.yaml" ) ;
274+ expect ( execStub . args [ 1 ] [ 0 ] ) . to . equal (
275+ 'oasdiff changelog "base/api-v1/spec.yaml" "new/api-v1/spec.yaml"'
276+ ) ;
268277 expect ( result ) . to . equal ( 0 ) ;
269278 } ) ;
270279
@@ -307,7 +316,7 @@ describe("oasDiffChangelog", () => {
307316
308317 expect ( execStub . called ) . to . be . true ;
309318 expect ( execStub . args [ 1 ] [ 0 ] ) . to . equal (
310- 'oasdiff changelog --composed "base/api-v1/**/* .yaml" "new/api-v1/**/* .yaml"'
319+ 'oasdiff changelog "base/api-v1/spec .yaml" "new/api-v1/spec .yaml"'
311320 ) ;
312321 } ) ;
313322
@@ -319,11 +328,11 @@ describe("oasDiffChangelog", () => {
319328 const fsStub = createMockFs ( ) ;
320329 setupDirectoryStructure ( fsStub , [
321330 { path : "base" , contents : [ "api-v1" , "api-v2" ] } ,
322- { path : "base/api-v1" , contents : [ "exchange.json" ] } ,
323- { path : "base/api-v2" , contents : [ "exchange.json" ] } ,
331+ { path : "base/api-v1" , contents : [ "exchange.json" , "spec.yaml" ] } ,
332+ { path : "base/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
324333 { path : "new" , contents : [ "api-v1" , "api-v2" ] } ,
325- { path : "new/api-v1" , contents : [ "exchange.json" ] } ,
326- { path : "new/api-v2" , contents : [ "exchange.json" ] } ,
334+ { path : "new/api-v1" , contents : [ "exchange.json" , "spec.yaml" ] } ,
335+ { path : "new/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
327336 ] ) ;
328337
329338 const oasDiff = createOasDiffProxy ( execStub , fsStub ) ;
@@ -357,11 +366,11 @@ describe("oasDiffChangelog", () => {
357366 const fsStub = createMockFs ( ) ;
358367 setupDirectoryStructure ( fsStub , [
359368 { path : "base" , contents : [ "api-v1" , "api-v2" ] } ,
360- { path : "base/api-v1" , contents : [ "exchange.json" ] } ,
361- { path : "base/api-v2" , contents : [ "exchange.json" ] } ,
369+ { path : "base/api-v1" , contents : [ "exchange.json" , "spec.yaml" ] } ,
370+ { path : "base/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
362371 { path : "new" , contents : [ "api-v1" , "api-v2" ] } ,
363- { path : "new/api-v1" , contents : [ "exchange.json" ] } ,
364- { path : "new/api-v2" , contents : [ "exchange.json" ] } ,
372+ { path : "new/api-v1" , contents : [ "exchange.json" , "spec.yaml" ] } ,
373+ { path : "new/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
365374 ] ) ;
366375
367376 const oasDiff = createOasDiffProxy ( execStub , fsStub ) ;
@@ -452,11 +461,11 @@ describe("oasDiffChangelog", () => {
452461 const fsStub = createMockFs ( ) ;
453462 setupDirectoryStructure ( fsStub , [
454463 { path : "base" , contents : [ "api-v1" , "api-v2" ] } ,
455- { path : "base/api-v1" , contents : [ "exchange.json" ] } ,
456- { path : "base/api-v2" , contents : [ "exchange.json" ] } ,
464+ { path : "base/api-v1" , contents : [ "exchange.json" , "spec.yaml" ] } ,
465+ { path : "base/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
457466 { path : "new" , contents : [ "api-v2" , "api-v3" ] } ,
458- { path : "new/api-v2" , contents : [ "exchange.json" ] } ,
459- { path : "new/api-v3" , contents : [ "exchange.json" ] } ,
467+ { path : "new/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
468+ { path : "new/api-v3" , contents : [ "exchange.json" , "spec.yaml" ] } ,
460469 ] ) ;
461470
462471 const oasDiff = createOasDiffProxy ( execStub , fsStub ) ;
@@ -485,13 +494,13 @@ describe("oasDiffChangelog", () => {
485494 const fsStub = createMockFs ( ) ;
486495 setupDirectoryStructure ( fsStub , [
487496 { path : "base" , contents : [ "common-api" , "stable-api" , "old-api" ] } ,
488- { path : "base/common-api" , contents : [ "exchange.json" ] } ,
489- { path : "base/stable-api" , contents : [ "exchange.json" ] } ,
490- { path : "base/old-api" , contents : [ "exchange.json" ] } ,
497+ { path : "base/common-api" , contents : [ "exchange.json" , "spec.yaml" ] } ,
498+ { path : "base/stable-api" , contents : [ "exchange.json" , "spec.yaml" ] } ,
499+ { path : "base/old-api" , contents : [ "exchange.json" , "spec.yaml" ] } ,
491500 { path : "new" , contents : [ "common-api" , "stable-api" , "new-api" ] } ,
492- { path : "new/common-api" , contents : [ "exchange.json" ] } ,
493- { path : "new/stable-api" , contents : [ "exchange.json" ] } ,
494- { path : "new/new-api" , contents : [ "exchange.json" ] } ,
501+ { path : "new/common-api" , contents : [ "exchange.json" , "spec.yaml" ] } ,
502+ { path : "new/stable-api" , contents : [ "exchange.json" , "spec.yaml" ] } ,
503+ { path : "new/new-api" , contents : [ "exchange.json" , "spec.yaml" ] } ,
495504 ] ) ;
496505
497506 const oasDiff = createOasDiffProxy ( execStub , fsStub ) ;
@@ -599,16 +608,16 @@ describe("oasDiffChangelog", () => {
599608 execStub
600609 . onSecondCall ( )
601610 . callsArgWith ( 1 , null , '[{"changes": "in api-v1"}]' , "" ) ;
602- execStub . onThirdCall ( ) . callsArgWith ( 1 , null , "[]" , "" ) ; // empty array
611+ execStub . onThirdCall ( ) . callsArgWith ( 1 , null , "[]" , "" ) ;
603612
604613 const fsStub = createMockFs ( ) ;
605614 setupDirectoryStructure ( fsStub , [
606615 { path : "base" , contents : [ "api-v1" , "api-v2" ] } ,
607- { path : "base/api-v1" , contents : [ "exchange.json" ] } ,
608- { path : "base/api-v2" , contents : [ "exchange.json" ] } ,
616+ { path : "base/api-v1" , contents : [ "exchange.json" , "spec.yaml" ] } ,
617+ { path : "base/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
609618 { path : "new" , contents : [ "api-v1" , "api-v2" ] } ,
610- { path : "new/api-v1" , contents : [ "exchange.json" ] } ,
611- { path : "new/api-v2" , contents : [ "exchange.json" ] } ,
619+ { path : "new/api-v1" , contents : [ "exchange.json" , "spec.yaml" ] } ,
620+ { path : "new/api-v2" , contents : [ "exchange.json" , "spec.yaml" ] } ,
612621 ] ) ;
613622
614623 const oasDiff = createOasDiffProxy ( execStub , fsStub ) ;
@@ -634,19 +643,18 @@ describe("oasDiffChangelog", () => {
634643
635644 it ( "should not include empty results in single file JSON mode" , async ( ) => {
636645 const execStub = createMockExec ( ) ;
637- execStub . onSecondCall ( ) . callsArgWith ( 1 , null , "[]" , "" ) ; // empty array result
646+ execStub . onSecondCall ( ) . callsArgWith ( 1 , null , "[]" , "" ) ;
638647
639648 const fsStub = createMockFs ( ) ;
640649 const oasDiff = createOasDiffProxy ( execStub , fsStub ) ;
641650
642- // Arrange
643651 const baseApi = "base.yaml" ;
644652 const newApi = "new.yaml" ;
645653 const flags = { format : "json" } ;
646654 const result = await oasDiff . oasDiffChangelog ( baseApi , newApi , flags ) ;
647655
648656 expect ( execStub . called ) . to . be . true ;
649- expect ( result ) . to . equal ( 0 ) ; // No changes should be reported
657+ expect ( result ) . to . equal ( 0 ) ;
650658 } ) ;
651659
652660 it ( "should include non-empty results in single file JSON mode" , async ( ) => {
0 commit comments