Skip to content

Commit

Permalink
[TT-5279] Final clean up
Browse files Browse the repository at this point in the history
[changelog]
internal: Removed unnecessary visitor; changed tests to new expected outcome
  • Loading branch information
David Stutt committed May 24, 2022
1 parent e96a455 commit 96d3cc4
Show file tree
Hide file tree
Showing 17 changed files with 141 additions and 335 deletions.
27 changes: 0 additions & 27 deletions pkg/astnormalization/astnormalization_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -452,33 +452,6 @@ var run = func(normalizeFunc registerNormalizeFunc, definition, operation, expec
}
}

var runAndExpectError = func(t *testing.T, normalizeFunc registerNormalizeFunc, definition, operation, expectedError string) {
definitionDocument := unsafeparser.ParseGraphqlDocumentString(definition)
err := asttransform.MergeDefinitionWithBaseSchema(&definitionDocument)
if err != nil {
panic(err)
}

operationDocument := unsafeparser.ParseGraphqlDocumentString(operation)
report := operationreport.Report{}
walker := astvisitor.NewWalker(48)

normalizeFunc(&walker)

walker.Walk(&operationDocument, &definitionDocument, &report)

var got string
if report.HasErrors() {
if report.InternalErrors == nil {
got = report.ExternalErrors[0].Message
} else {
got = report.InternalErrors[0].Error()
}
}

assert.Equal(t, expectedError, got)
}

func runMany(definition, operation, expectedOutput string, normalizeFuncs ...registerNormalizeFunc) {
var runManyNormalizers = func(walker *astvisitor.Walker) {
for _, normalizeFunc := range normalizeFuncs {
Expand Down
60 changes: 0 additions & 60 deletions pkg/federation/sdlmerge/check_unresolved_extension_orphans.go

This file was deleted.

56 changes: 0 additions & 56 deletions pkg/federation/sdlmerge/check_unresolved_extension_orphans_test.go

This file was deleted.

15 changes: 10 additions & 5 deletions pkg/federation/sdlmerge/enum_type_extending.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (

type extendEnumTypeDefinitionVisitor struct {
*astvisitor.Walker
operation *ast.Document
document *ast.Document
}

func newExtendEnumTypeDefinition() *extendEnumTypeDefinitionVisitor {
Expand All @@ -22,11 +22,12 @@ func (e *extendEnumTypeDefinitionVisitor) Register(walker *astvisitor.Walker) {
}

func (e *extendEnumTypeDefinitionVisitor) EnterDocument(operation, _ *ast.Document) {
e.operation = operation
e.document = operation
}

func (e *extendEnumTypeDefinitionVisitor) EnterEnumTypeExtension(ref int) {
nodes, exists := e.operation.Index.NodesByNameBytes(e.operation.EnumTypeExtensionNameBytes(ref))
document := e.document
nodes, exists := document.Index.NodesByNameBytes(document.EnumTypeExtensionNameBytes(ref))
if !exists {
return
}
Expand All @@ -37,9 +38,13 @@ func (e *extendEnumTypeDefinitionVisitor) EnterEnumTypeExtension(ref int) {
continue
}
if hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(e.operation.EnumTypeExtensionNameString(ref)))
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(document.EnumTypeExtensionNameString(ref)))
}
e.operation.ExtendEnumTypeDefinitionByEnumTypeExtension(nodes[i].Ref, ref)
document.ExtendEnumTypeDefinitionByEnumTypeExtension(nodes[i].Ref, ref)
hasExtended = true
}

if !hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrExtensionOrphansMustResolveInSupergraph(document.EnumTypeExtensionNameBytes(ref)))
}
}
8 changes: 8 additions & 0 deletions pkg/federation/sdlmerge/enum_type_extending_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,12 @@ func TestExtendEnumObjectType(t *testing.T) {
}
`, SharedTypeExtensionErrorMessage("Starters"))
})

t.Run("Unresolved enum extension orphan returns an error", func(t *testing.T) {
runAndExpectError(t, newExtendEnumTypeDefinition(), `
extend enum Badges {
BOULDER
}
`, UnresolvedExtensionOrphansErrorMessage("Badges"))
})
}
15 changes: 10 additions & 5 deletions pkg/federation/sdlmerge/input_type_extending.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func newExtendInputObjectTypeDefinition() *extendInputObjectTypeDefinitionVisito

type extendInputObjectTypeDefinitionVisitor struct {
*astvisitor.Walker
operation *ast.Document
document *ast.Document
}

func (e *extendInputObjectTypeDefinitionVisitor) Register(walker *astvisitor.Walker) {
Expand All @@ -22,11 +22,12 @@ func (e *extendInputObjectTypeDefinitionVisitor) Register(walker *astvisitor.Wal
}

func (e *extendInputObjectTypeDefinitionVisitor) EnterDocument(operation, _ *ast.Document) {
e.operation = operation
e.document = operation
}

func (e *extendInputObjectTypeDefinitionVisitor) EnterInputObjectTypeExtension(ref int) {
nodes, exists := e.operation.Index.NodesByNameBytes(e.operation.InputObjectTypeExtensionNameBytes(ref))
document := e.document
nodes, exists := document.Index.NodesByNameBytes(document.InputObjectTypeExtensionNameBytes(ref))
if !exists {
return
}
Expand All @@ -37,9 +38,13 @@ func (e *extendInputObjectTypeDefinitionVisitor) EnterInputObjectTypeExtension(r
continue
}
if hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(e.operation.InputObjectTypeExtensionNameString(ref)))
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(document.InputObjectTypeExtensionNameString(ref)))
}
e.operation.ExtendInputObjectTypeDefinitionByInputObjectTypeExtension(nodes[i].Ref, ref)
document.ExtendInputObjectTypeDefinitionByInputObjectTypeExtension(nodes[i].Ref, ref)
hasExtended = true
}

if !hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrExtensionOrphansMustResolveInSupergraph(document.InputObjectTypeExtensionNameBytes(ref)))
}
}
8 changes: 8 additions & 0 deletions pkg/federation/sdlmerge/input_type_extending_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,12 @@ func TestExtendInputObjectType(t *testing.T) {
}
`, SharedTypeExtensionErrorMessage("Mammal"))
})

t.Run("Unresolved input extension orphan returns an error", func(t *testing.T) {
runAndExpectError(t, newExtendInputObjectTypeDefinition(), `
extend input Badges {
name: String!
}
`, UnresolvedExtensionOrphansErrorMessage("Badges"))
})
}
15 changes: 10 additions & 5 deletions pkg/federation/sdlmerge/interface_type_extending.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func newExtendInterfaceTypeDefinition() *extendInterfaceTypeDefinitionVisitor {

type extendInterfaceTypeDefinitionVisitor struct {
*astvisitor.Walker
operation *ast.Document
document *ast.Document
}

func (e *extendInterfaceTypeDefinitionVisitor) Register(walker *astvisitor.Walker) {
Expand All @@ -22,11 +22,12 @@ func (e *extendInterfaceTypeDefinitionVisitor) Register(walker *astvisitor.Walke
}

func (e *extendInterfaceTypeDefinitionVisitor) EnterDocument(operation, _ *ast.Document) {
e.operation = operation
e.document = operation
}

func (e *extendInterfaceTypeDefinitionVisitor) EnterInterfaceTypeExtension(ref int) {
nodes, exists := e.operation.Index.NodesByNameBytes(e.operation.InterfaceTypeExtensionNameBytes(ref))
document := e.document
nodes, exists := e.document.Index.NodesByNameBytes(document.InterfaceTypeExtensionNameBytes(ref))
if !exists {
return
}
Expand All @@ -37,9 +38,13 @@ func (e *extendInterfaceTypeDefinitionVisitor) EnterInterfaceTypeExtension(ref i
continue
}
if hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(e.operation.InterfaceTypeExtensionNameString(ref)))
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(document.InterfaceTypeExtensionNameString(ref)))
}
e.operation.ExtendInterfaceTypeDefinitionByInterfaceTypeExtension(node.Ref, ref)
e.document.ExtendInterfaceTypeDefinitionByInterfaceTypeExtension(node.Ref, ref)
hasExtended = true
}

if !hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrExtensionOrphansMustResolveInSupergraph(document.InterfaceTypeExtensionNameBytes(ref)))
}
}
8 changes: 8 additions & 0 deletions pkg/federation/sdlmerge/interface_type_extending_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,12 @@ func TestExtendInterfaceType(t *testing.T) {
}
`, SharedTypeExtensionErrorMessage("Mammal"))
})

t.Run("Unresolved interface extension orphan returns an error", func(t *testing.T) {
runAndExpectError(t, newExtendInterfaceTypeDefinition(), `
extend interface Badges {
name: String!
}
`, UnresolvedExtensionOrphansErrorMessage("Badges"))
})
}
18 changes: 12 additions & 6 deletions pkg/federation/sdlmerge/object_type_extending.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func newExtendObjectTypeDefinition() *extendObjectTypeDefinitionVisitor {

type extendObjectTypeDefinitionVisitor struct {
*astvisitor.Walker
operation *ast.Document
document *ast.Document
}

func (e *extendObjectTypeDefinitionVisitor) Register(walker *astvisitor.Walker) {
Expand All @@ -23,12 +23,13 @@ func (e *extendObjectTypeDefinitionVisitor) Register(walker *astvisitor.Walker)
}

func (e *extendObjectTypeDefinitionVisitor) EnterDocument(operation, _ *ast.Document) {
e.operation = operation
e.document = operation
}

func (e *extendObjectTypeDefinitionVisitor) EnterObjectTypeExtension(ref int) {
nameBytes := e.operation.ObjectTypeExtensionNameBytes(ref)
nodes, exists := e.operation.Index.NodesByNameBytes(nameBytes)
document := e.document
nameBytes := document.ObjectTypeExtensionNameBytes(ref)
nodes, exists := document.Index.NodesByNameBytes(nameBytes)
if !exists {
return
}
Expand All @@ -40,12 +41,17 @@ func (e *extendObjectTypeDefinitionVisitor) EnterObjectTypeExtension(ref int) {
continue
}
if hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(e.operation.ObjectTypeExtensionNameString(ref)))
e.Walker.StopWithExternalErr(operationreport.ErrSharedTypesMustNotBeExtended(document.ObjectTypeExtensionNameString(ref)))
}
e.operation.ExtendObjectTypeDefinitionByObjectTypeExtension(nodes[i].Ref, ref)

document.ExtendObjectTypeDefinitionByObjectTypeExtension(nodes[i].Ref, ref)
if shouldReturn {
return
}
hasExtended = true
}

if !hasExtended {
e.Walker.StopWithExternalErr(operationreport.ErrExtensionOrphansMustResolveInSupergraph(document.ObjectTypeExtensionNameBytes(ref)))
}
}
8 changes: 8 additions & 0 deletions pkg/federation/sdlmerge/object_type_extending_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,4 +120,12 @@ func TestExtendObjectType(t *testing.T) {
}
`, SharedTypeExtensionErrorMessage("Cat"))
})

t.Run("Unresolved object extension orphan returns an error", func(t *testing.T) {
runAndExpectError(t, newExtendObjectTypeDefinition(), `
extend type Badges {
name: String!
}
`, UnresolvedExtensionOrphansErrorMessage("Badges"))
})
}
Loading

0 comments on commit 96d3cc4

Please sign in to comment.