File tree Expand file tree Collapse file tree
main/java/graphql/schema/diffing/ana
test/groovy/graphql/schema/diffing/ana Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -300,16 +300,21 @@ private void appliedDirectiveArgumentDeleted(EditOperation editOperation) {
300300 Vertex interfaceOrObjective = oldSchemaGraph .getFieldsContainerForField (field );
301301 if (interfaceOrObjective .isOfType (SchemaGraph .OBJECT )) {
302302 Vertex object = interfaceOrObjective ;
303+ if (isObjectDeleted (object .getName ())) {
304+ return ;
305+ }
303306 AppliedDirectiveObjectFieldLocation location = new AppliedDirectiveObjectFieldLocation (object .getName (), field .getName ());
304307 getObjectModification (object .getName ()).getDetails ().add (new AppliedDirectiveArgumentDeletion (location , deletedArgument .getName ()));
305308 } else {
306309 assertTrue (interfaceOrObjective .isOfType (SchemaGraph .INTERFACE ));
307310 Vertex interfaze = interfaceOrObjective ;
311+ if (isInterfaceDeleted (interfaze .getName ())) {
312+ return ;
313+ }
308314 AppliedDirectiveInterfaceFieldLocation location = new AppliedDirectiveInterfaceFieldLocation (interfaze .getName (), field .getName ());
309315 getInterfaceModification (interfaze .getName ()).getDetails ().add (new AppliedDirectiveArgumentDeletion (location , deletedArgument .getName ()));
310316 }
311317 }
312-
313318 }
314319
315320 private void appliedDirectiveArgumentChanged (EditOperation editOperation ) {
Original file line number Diff line number Diff line change @@ -2123,6 +2123,56 @@ class EditOperationAnalyzerTest extends Specification {
21232123 changes. directiveDifferences[" test" ] instanceof DirectiveAddition
21242124 }
21252125
2126+ def " delete object with applied directive on field" () {
2127+ given :
2128+ def oldSdl = '''
2129+ type Query {
2130+ user(id: ID!): User
2131+ }
2132+ directive @id(type: String, owner: String) on FIELD_DEFINITION
2133+ type User {
2134+ id: ID! @id(type: "user", owner: "profiles")
2135+ }
2136+ '''
2137+ def newSdl = '''
2138+ type Query {
2139+ echo: String
2140+ }
2141+ directive @id(type: String, owner: String) on FIELD_DEFINITION
2142+ '''
2143+
2144+ when :
2145+ def changes = calcDiff(oldSdl, newSdl)
2146+
2147+ then :
2148+ changes. objectDifferences[" User" ] instanceof ObjectDeletion
2149+ }
2150+
2151+ def " delete interface with applied directive on field" () {
2152+ given :
2153+ def oldSdl = '''
2154+ type Query {
2155+ user(id: ID!): User
2156+ }
2157+ directive @id(type: String, owner: String) on FIELD_DEFINITION
2158+ interface User {
2159+ id: ID! @id(type: "user", owner: "profiles")
2160+ }
2161+ '''
2162+ def newSdl = '''
2163+ type Query {
2164+ echo: String
2165+ }
2166+ directive @id(type: String, owner: String) on FIELD_DEFINITION
2167+ '''
2168+
2169+ when :
2170+ def changes = calcDiff(oldSdl, newSdl)
2171+
2172+ then :
2173+ changes. interfaceDifferences[" User" ] instanceof InterfaceDeletion
2174+ }
2175+
21262176 EditOperationAnalysisResult calcDiff (
21272177 String oldSdl ,
21282178 String newSdl
You can’t perform that action at this time.
0 commit comments