@@ -31,11 +31,18 @@ describe('object', () => {
3131 }
3232 ` ) ;
3333
34- const change = findFirstChangeByPath ( await diff ( a , b ) , 'B' ) ;
35- const mutation = findFirstChangeByPath ( await diff ( a , b ) , 'Mutation' ) ;
34+ const changes = await diff ( a , b ) ;
35+ expect ( changes ) . toHaveLength ( 4 ) ;
36+
37+ const change = findFirstChangeByPath ( changes , 'B' ) ;
38+ const mutation = findFirstChangeByPath ( changes , 'Mutation' ) ;
3639
3740 expect ( change . criticality . level ) . toEqual ( CriticalityLevel . NonBreaking ) ;
3841 expect ( mutation . criticality . level ) . toEqual ( CriticalityLevel . NonBreaking ) ;
42+ expect ( change . meta ) . toMatchObject ( {
43+ addedTypeKind : 'ObjectTypeDefinition' ,
44+ addedTypeName : 'B' ,
45+ } ) ;
3946 } ) ;
4047
4148 describe ( 'interfaces' , ( ) => {
@@ -63,7 +70,8 @@ describe('object', () => {
6370 b: String!
6471 }
6572
66- interface C {
73+ interface C implements B {
74+ b: String!
6775 c: String!
6876 }
6977
@@ -74,11 +82,43 @@ describe('object', () => {
7482 }
7583 ` ) ;
7684
77- const change = findFirstChangeByPath ( await diff ( a , b ) , 'Foo' ) ;
85+ const changes = await diff ( a , b ) ;
86+
87+ {
88+ const change = findFirstChangeByPath ( changes , 'Foo' ) ;
89+ expect ( change . criticality . level ) . toEqual ( CriticalityLevel . Dangerous ) ;
90+ expect ( change . type ) . toEqual ( 'OBJECT_TYPE_INTERFACE_ADDED' ) ;
91+ expect ( change . message ) . toEqual ( "'Foo' object implements 'C' interface" ) ;
92+ expect ( change . meta ) . toMatchObject ( {
93+ addedInterfaceName : 'C' ,
94+ objectTypeName : 'Foo' ,
95+ } ) ;
96+ }
97+
98+ const cChanges = findChangesByPath ( changes , 'C' ) ;
99+ expect ( cChanges ) . toHaveLength ( 2 ) ;
100+ {
101+ const change = cChanges [ 0 ] ;
102+ expect ( change . type ) . toEqual ( 'TYPE_ADDED' ) ;
103+ expect ( change . meta ) . toMatchObject ( {
104+ addedTypeKind : 'InterfaceTypeDefinition' ,
105+ addedTypeName : 'C' ,
106+ } ) ;
107+ }
108+
109+ {
110+ const change = cChanges [ 1 ] ;
111+ expect ( change . type ) . toEqual ( 'OBJECT_TYPE_INTERFACE_ADDED' ) ;
112+ expect ( change . meta ) . toMatchObject ( {
113+ addedInterfaceName : 'B' ,
114+ objectTypeName : 'C' ,
115+ } ) ;
116+ }
78117
79- expect ( change . criticality . level ) . toEqual ( CriticalityLevel . Dangerous ) ;
80- expect ( change . type ) . toEqual ( 'OBJECT_TYPE_INTERFACE_ADDED' ) ;
81- expect ( change . message ) . toEqual ( "'Foo' object implements 'C' interface" ) ;
118+ {
119+ const change = findFirstChangeByPath ( changes , 'C.b' ) ;
120+ expect ( change . criticality . level ) . toEqual ( CriticalityLevel . NonBreaking ) ;
121+ }
82122 } ) ;
83123
84124 test ( 'removed' , async ( ) => {
@@ -290,24 +330,24 @@ describe('object', () => {
290330 const changes = await diff ( a , b ) ;
291331 const change = {
292332 a : findFirstChangeByPath ( changes , 'Foo.a' ) ,
293- b : findChangesByPath ( changes , 'Foo.b' ) [ 1 ] ,
294- c : findChangesByPath ( changes , 'Foo.c' ) [ 1 ] ,
333+ b : findFirstChangeByPath ( changes , 'Foo.b' ) ,
334+ c : findFirstChangeByPath ( changes , 'Foo.c' ) ,
295335 } ;
296336
297337 // Changed
298- expect ( change . a . criticality . level ) . toEqual ( CriticalityLevel . NonBreaking ) ;
299338 expect ( change . a . type ) . toEqual ( 'FIELD_DEPRECATION_REASON_CHANGED' ) ;
339+ expect ( change . a . criticality . level ) . toEqual ( CriticalityLevel . NonBreaking ) ;
300340 expect ( change . a . message ) . toEqual (
301341 "Deprecation reason on field 'Foo.a' has changed from 'OLD' to 'NEW'" ,
302342 ) ;
303343 // Removed
304- expect ( change . b . criticality . level ) . toEqual ( CriticalityLevel . NonBreaking ) ;
305- expect ( change . b . type ) . toEqual ( 'FIELD_DEPRECATION_REASON_REMOVED' ) ;
306- expect ( change . b . message ) . toEqual ( "Deprecation reason was removed from field 'Foo.b'" ) ;
344+ expect ( change . b . type ) . toEqual ( 'FIELD_DEPRECATION_REMOVED' ) ;
345+ expect ( change . b . criticality . level ) . toEqual ( CriticalityLevel . Dangerous ) ;
346+ expect ( change . b . message ) . toEqual ( "Field 'Foo.b' is no longer deprecated " ) ;
307347 // Added
348+ expect ( change . c . type ) . toEqual ( 'FIELD_DEPRECATION_ADDED' ) ;
308349 expect ( change . c . criticality . level ) . toEqual ( CriticalityLevel . NonBreaking ) ;
309- expect ( change . c . type ) . toEqual ( 'FIELD_DEPRECATION_REASON_ADDED' ) ;
310- expect ( change . c . message ) . toEqual ( "Field 'Foo.c' has deprecation reason 'CCC'" ) ;
350+ expect ( change . c . message ) . toEqual ( "Field 'Foo.c' is deprecated" ) ;
311351 } ) ;
312352
313353 test ( 'deprecation added / removed' , async ( ) => {
0 commit comments