diff --git a/src/Federation/SchemaPrinter.php b/src/Federation/SchemaPrinter.php index 277b8569b5..32834b7d07 100644 --- a/src/Federation/SchemaPrinter.php +++ b/src/Federation/SchemaPrinter.php @@ -16,8 +16,12 @@ class SchemaPrinter extends GraphQLSchemaPrinter { protected static function printSchemaDefinition(Schema $schema): string { - $schemaExtensionDirectives = self::printDirectives(FederationHelper::schemaExtensionDirectives($schema)); - $result = "extend schema{$schemaExtensionDirectives}\n"; + $result = ''; + + $schemaExtensionDirectives = FederationHelper::schemaExtensionDirectives($schema); + if ($schemaExtensionDirectives !== []) { + $result .= 'extend schema' . self::printDirectives($schemaExtensionDirectives); + } $directivesToCompose = FederationHelper::directivesToCompose($schema); @@ -30,7 +34,7 @@ protected static function printSchemaDefinition(Schema $schema): string ->definition(), $directivesToCompose, ); - $result .= "\n" . implode("\n\n", $directivesToComposeDefinitions); + $result .= "\n\n" . implode("\n\n", $directivesToComposeDefinitions); } return $result; diff --git a/tests/Console/PrintFederationSchemaCommandTest.php b/tests/Console/PrintFederationSchemaCommandTest.php index 9a703fc3a1..5214a30668 100644 --- a/tests/Console/PrintFederationSchemaCommandTest.php +++ b/tests/Console/PrintFederationSchemaCommandTest.php @@ -38,8 +38,11 @@ public function testPrintsSchemaAsGraphQLSDL(): void $tester = $this->commandTester(new PrintSchemaCommand()); $tester->execute(['--federation' => true]); - $this->assertStringContainsString(self::SCHEMA_TYPE, $tester->getDisplay()); - $this->assertStringContainsString(self::SCHEMA_QUERY, $tester->getDisplay()); + $sdl = $tester->getDisplay(); + + $this->assertStringContainsString(self::SCHEMA_TYPE, $sdl); + $this->assertStringContainsString(self::SCHEMA_QUERY, $sdl); + $this->assertStringNotContainsString('extend schema', $sdl); } public function testWritesSchema(): void