Skip to content

Commit ca4f2a5

Browse files
committed
issue #1 - fix getElementsByNameAndAttributes
1 parent 1e397b8 commit ca4f2a5

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/Wsdl.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,11 @@ public function getElementsByNameAndAttributes(string $name, array $attributes,
5656
]);
5757
/** @var Schema $externalSchema */
5858
foreach ($this->getExternalSchemas() as $index => $externalSchema) {
59-
$nodes = $externalSchema->searchTagsByXpath($name, $attributes, $node);
60-
if (!empty($nodes)) {
59+
if (0 < ($nodes = $externalSchema->searchTagsByXpath($name, $attributes, $node))->length) {
6160
$elements = array_merge($elements, $this->getElementsHandlers($nodes));
62-
break;
6361
}
6462
}
63+
$elements = array_unique($elements, SORT_REGULAR);
6564
} else {
6665
$elements = $this->useParentMethodAndExternals(__FUNCTION__, [
6766
$name,

tests/WsdlTest.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public function testGetElementsByNameAndAttributesMustReturnTheExtensionsFromThe
124124
$this->assertContainsOnlyInstancesOf(TagExtension::class, $extensions);
125125
}
126126

127-
public function testGetElementsByNameAndAttributesDomNodeMustReturnTheExtensionsFromTheExternalSchemas()
127+
public function testGetElementsByNameAndAttributesUsingDomNodeMustReturnTheExtensionsFromTheExternalSchemas()
128128
{
129129
$element = ($instance = self::wsdlVehicleSelectionServiceInstance())->getElementByNameAndAttributes(AbstractDocument::TAG_COMPLEX_TYPE, [
130130
'name' => 'getHgvPlatformSubModelDataResponse',
@@ -141,4 +141,12 @@ public function testGetElementsByNameAndAttributesDomNodeMustReturnTheExtensions
141141
], $fromNode, true));
142142
$this->assertContainsOnlyInstancesOf(TagElement::class, $elements);
143143
}
144+
145+
public function testGetElementsByNameAndAttributesMustReturnTheExtensionsFromTheLastExternalSchema()
146+
{
147+
$this->assertCount(1, $elements = self::wsdlPartnerInstance()->getElementsByNameAndAttributes(AbstractDocument::TAG_ELEMENT, [
148+
'name' => 'SimpleIsMemberFaultReason',
149+
], null, true));
150+
$this->assertContainsOnlyInstancesOf(TagElement::class, $elements);
151+
}
144152
}

0 commit comments

Comments
 (0)