File tree Expand file tree Collapse file tree 2 files changed +104
-0
lines changed Expand file tree Collapse file tree 2 files changed +104
-0
lines changed Original file line number Diff line number Diff line change @@ -75,6 +75,12 @@ export default {
75
75
return undefined ;
76
76
} ) ;
77
77
78
+ // If there was an example in the original definition,
79
+ // keep it instead of merging with examples from other schema
80
+ if ( originalDefinitionObj . example ) {
81
+ // Delete other schema examples
82
+ patches . push ( specmap . remove ( [ ] . concat ( parent , 'example' ) ) ) ;
83
+ }
78
84
// Merge back the values from the original definition
79
85
patches . push ( specmap . mergeDeep ( parent , originalDefinitionObj ) ) ;
80
86
Original file line number Diff line number Diff line change @@ -541,4 +541,102 @@ describe('allOf', () => {
541
541
} ,
542
542
} ) ;
543
543
} ) ) ;
544
+
545
+ // https://github.com/swagger-api/swagger-ui/issues/4175
546
+ test ( 'should suppress merging examples when composing a schema' , async ( ) => {
547
+ const res = await mapSpec ( {
548
+ plugins : [ plugins . refs , plugins . allOf ] ,
549
+ spec : {
550
+ definitions : {
551
+ Pet : {
552
+ type : 'object' ,
553
+ properties : {
554
+ name : {
555
+ type : 'string' ,
556
+ } ,
557
+ } ,
558
+ example : {
559
+ name : 'my pet' ,
560
+ } ,
561
+ } ,
562
+ Cat : {
563
+ allOf : [
564
+ { $ref : '#/definitions/Pet' } ,
565
+ {
566
+ type : 'object' ,
567
+ properties : {
568
+ meow : {
569
+ type : 'string' ,
570
+ } ,
571
+ } ,
572
+ example : {
573
+ name : 'my cat' ,
574
+ meow : 'meow' ,
575
+ } ,
576
+ } ,
577
+ ] ,
578
+ } ,
579
+ PetCat : {
580
+ allOf : [ { $ref : '#/definitions/Pet' } , { $ref : '#/definitions/Cat' } ] ,
581
+ properties : {
582
+ id : {
583
+ type : 'string' ,
584
+ } ,
585
+ } ,
586
+ example : {
587
+ id : '1' ,
588
+ } ,
589
+ } ,
590
+ } ,
591
+ } ,
592
+ } ) ;
593
+ expect ( res . errors ) . toEqual ( [ ] ) ;
594
+ expect ( res . spec ) . toEqual ( {
595
+ definitions : {
596
+ Pet : {
597
+ type : 'object' ,
598
+ properties : {
599
+ name : {
600
+ type : 'string' ,
601
+ } ,
602
+ } ,
603
+ example : {
604
+ name : 'my pet' ,
605
+ } ,
606
+ } ,
607
+ Cat : {
608
+ type : 'object' ,
609
+ properties : {
610
+ name : {
611
+ type : 'string' ,
612
+ } ,
613
+ meow : {
614
+ type : 'string' ,
615
+ } ,
616
+ } ,
617
+ example : {
618
+ name : 'my cat' ,
619
+ meow : 'meow' ,
620
+ } ,
621
+ } ,
622
+ PetCat : {
623
+ type : 'object' ,
624
+ properties : {
625
+ id : {
626
+ type : 'string' ,
627
+ } ,
628
+ name : {
629
+ type : 'string' ,
630
+ } ,
631
+ meow : {
632
+ type : 'string' ,
633
+ } ,
634
+ } ,
635
+ example : {
636
+ id : '1' ,
637
+ } ,
638
+ } ,
639
+ } ,
640
+ } ) ;
641
+ } ) ;
544
642
} ) ;
You can’t perform that action at this time.
0 commit comments