diff --git a/src/Phpro/SoapClient/CodeGenerator/Assembler/ExtendingTypeAssembler.php b/src/Phpro/SoapClient/CodeGenerator/Assembler/ExtendingTypeAssembler.php index df1edf6b..d3c8fbd3 100644 --- a/src/Phpro/SoapClient/CodeGenerator/Assembler/ExtendingTypeAssembler.php +++ b/src/Phpro/SoapClient/CodeGenerator/Assembler/ExtendingTypeAssembler.php @@ -39,7 +39,7 @@ public function assemble(ContextInterface $context) $namespace = $type->getNamespace(); $typeName = Normalizer::normalizeClassname($extending['type']); - $extendedClassName = sprintf('\\%s\\%s', $namespace, $typeName); + $extendedClassName = sprintf('%s\\%s', $namespace, $typeName); try { $extendAssembler = new ExtendAssembler($extendedClassName); diff --git a/test/PhproTest/SoapClient/Unit/CodeGenerator/Assembler/ExtendingTypeAssemblerTest.php b/test/PhproTest/SoapClient/Unit/CodeGenerator/Assembler/ExtendingTypeAssemblerTest.php index eaf610d7..fef4d08c 100644 --- a/test/PhproTest/SoapClient/Unit/CodeGenerator/Assembler/ExtendingTypeAssemblerTest.php +++ b/test/PhproTest/SoapClient/Unit/CodeGenerator/Assembler/ExtendingTypeAssemblerTest.php @@ -41,7 +41,7 @@ function it_can_assemble_type_context() /** * @test */ - function it_assembles_a_type() + function it_assembles_a_type_in_same_namespace() { $assembler = new ExtendingTypeAssembler(); $context = $this->createContext(); @@ -51,7 +51,29 @@ function it_assembles_a_type() $expected = <<assertEquals($expected, $code); + } + + /** + * @test + */ + function it_assembles_a_type_in_other_namespace() + { + $assembler = new ExtendingTypeAssembler(); + $context = $this->createContext('OtherNamespace'); + $assembler->assemble($context); + + $code = $context->getClass()->generate(); + $expected = <<withMeta(static fn (TypeMeta $meta) => $meta->withExtends([ + $type = new Type($importedNamespace ?? 'MyNamespace', 'MyType', [], XsdType::create('MyType')->withMeta(static fn (TypeMeta $meta) => $meta->withExtends([ 'type' => 'MyBaseType', 'namespace' => 'xxxx' ])));