@@ -339,7 +339,9 @@ describe('AppSyncModelVisitor', () => {
339
339
) ;
340
340
visit ( ast , { leave : visitor } ) ;
341
341
visitor . generate ( ) ;
342
- const projectTeamIdField = visitor . models . Project . fields . find ( field => { return field . name === 'projectTeamId' ; } ) ;
342
+ const projectTeamIdField = visitor . models . Project . fields . find ( field => {
343
+ return field . name === 'projectTeamId' ;
344
+ } ) ;
343
345
expect ( projectTeamIdField ) . toBeDefined ( ) ;
344
346
expect ( projectTeamIdField . isNullable ) . toBeTruthy ( ) ;
345
347
} ) ;
@@ -664,6 +666,7 @@ describe('AppSyncModelVisitor', () => {
664
666
let simpleManyToManySchema ;
665
667
let simpleManyModelMap ;
666
668
let transformedSimpleManyModelMap ;
669
+ let manyToManyModelNameSchema ;
667
670
668
671
beforeEach ( ( ) => {
669
672
simpleManyToManySchema = /* GraphQL */ `
@@ -678,6 +681,16 @@ describe('AppSyncModelVisitor', () => {
678
681
}
679
682
` ;
680
683
684
+ manyToManyModelNameSchema = /* GraphQL */ `
685
+ type ModelA @model {
686
+ models: [ModelB] @manyToMany(relationName: "Models")
687
+ }
688
+
689
+ type ModelB @model {
690
+ models: [ModelA] @manyToMany(relationName: "Models")
691
+ }
692
+ ` ;
693
+
681
694
simpleManyModelMap = {
682
695
Human : {
683
696
name : 'Human' ,
@@ -832,5 +845,36 @@ describe('AppSyncModelVisitor', () => {
832
845
expect ( visitor . models . Animal . fields [ 2 ] . directives [ 0 ] . arguments . fields [ 0 ] ) . toEqual ( 'id' ) ;
833
846
expect ( visitor . models . Animal . fields [ 2 ] . directives [ 0 ] . arguments . indexName ) . toEqual ( 'byAnimal' ) ;
834
847
} ) ;
848
+
849
+ it ( 'Should correctly field names for many to many join table' , ( ) => {
850
+ const visitor = createAndGeneratePipelinedTransformerVisitor ( manyToManyModelNameSchema ) ;
851
+
852
+ expect ( visitor . models . ModelA . fields . length ) . toEqual ( 4 ) ;
853
+ expect ( visitor . models . ModelA . fields [ 1 ] . directives [ 0 ] . name ) . toEqual ( 'hasMany' ) ;
854
+ expect ( visitor . models . ModelA . fields [ 1 ] . directives [ 0 ] . arguments . fields . length ) . toEqual ( 1 ) ;
855
+ expect ( visitor . models . ModelA . fields [ 1 ] . directives [ 0 ] . arguments . fields [ 0 ] ) . toEqual ( 'id' ) ;
856
+ expect ( visitor . models . ModelA . fields [ 1 ] . directives [ 0 ] . arguments . indexName ) . toEqual ( 'byModelA' ) ;
857
+
858
+ expect ( visitor . models . Models ) . toBeDefined ( ) ;
859
+ expect ( visitor . models . Models . fields . length ) . toEqual ( 5 ) ;
860
+
861
+ const modelA = visitor . models . Models . fields . find ( f => f . name === 'modelA' ) ;
862
+ expect ( modelA ) . toBeDefined ( ) ;
863
+ expect ( modelA . directives [ 0 ] . name ) . toEqual ( 'belongsTo' ) ;
864
+ expect ( modelA . directives [ 0 ] . arguments . fields . length ) . toEqual ( 1 ) ;
865
+ expect ( modelA . directives [ 0 ] . arguments . fields [ 0 ] ) . toEqual ( 'modelAID' ) ;
866
+
867
+ const modelB = visitor . models . Models . fields . find ( f => f . name === 'modelB' ) ;
868
+ expect ( modelB ) . toBeDefined ( ) ;
869
+ expect ( modelB . directives [ 0 ] . name ) . toEqual ( 'belongsTo' ) ;
870
+ expect ( modelB . directives [ 0 ] . arguments . fields . length ) . toEqual ( 1 ) ;
871
+ expect ( modelB . directives [ 0 ] . arguments . fields [ 0 ] ) . toEqual ( 'modelBID' ) ;
872
+
873
+ expect ( visitor . models . ModelB . fields . length ) . toEqual ( 4 ) ;
874
+ expect ( visitor . models . ModelB . fields [ 1 ] . directives [ 0 ] . name ) . toEqual ( 'hasMany' ) ;
875
+ expect ( visitor . models . ModelB . fields [ 1 ] . directives [ 0 ] . arguments . fields . length ) . toEqual ( 1 ) ;
876
+ expect ( visitor . models . ModelB . fields [ 1 ] . directives [ 0 ] . arguments . fields [ 0 ] ) . toEqual ( 'id' ) ;
877
+ expect ( visitor . models . ModelB . fields [ 1 ] . directives [ 0 ] . arguments . indexName ) . toEqual ( 'byModelB' ) ;
878
+ } ) ;
835
879
} ) ;
836
880
} ) ;
0 commit comments