diff --git a/tests/Client/LocalGenerator.php b/tests/Client/LocalGenerator.php
new file mode 100644
index 0000000..107abb0
--- /dev/null
+++ b/tests/Client/LocalGenerator.php
@@ -0,0 +1,23 @@
+namingStrategy);
+ $soapConverter = new JmsSoapConverter($converter);
+
+ $this->setNamespaces($converter);
+ $items = $converter->convert($schemas);
+ $items = array_merge($items, $soapConverter->visitServices($services));
+ return $items;
+ }
+}
\ No newline at end of file
diff --git a/tests/Client/LocalTest.php b/tests/Client/LocalTest.php
new file mode 100644
index 0000000..f30f4df
--- /dev/null
+++ b/tests/Client/LocalTest.php
@@ -0,0 +1,200 @@
+ 'Example\Local'
+ ];
+ /**
+ * @var Generator
+ */
+ protected static $generator;
+
+ /**
+ * @var \GuzzleHttp\Handler\MockHandler
+ */
+ protected $responseMock;
+
+ protected $requestResponseStack = [];
+
+ /**
+ * @var ClientFactory
+ */
+ private $factory;
+
+ public static function setUpBeforeClass(): void
+ {
+ self::$generator = new LocalGenerator(self::$namespaces);
+ self::$generator->generate([__DIR__ . '/../Fixtures/Local/local.wsdl']);
+ self::$generator->registerAutoloader();
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ self::$generator->unRegisterAutoloader();
+ //self::$generator->cleanDirectories();
+ }
+
+ public function setUp(): void
+ {
+ $ref = new \ReflectionClass(Fault::class);
+ $headerHandler = new HeaderHandler();
+ $serializer = self::$generator->buildSerializer(function (HandlerRegistryInterface $h) use ($headerHandler) {
+ $h->registerSubscribingHandler($headerHandler);
+ $h->registerSubscribingHandler(new FaultHandler());
+ }, [
+ 'GoetasWebservices\SoapServices\SoapClient\Envelope\SoapEnvelope12' => dirname($ref->getFileName()) . '/../../../Resources/metadata/jms12',
+ 'GoetasWebservices\SoapServices\SoapClient\Envelope\SoapEnvelope' => dirname($ref->getFileName()) . '/../../../Resources/metadata/jms',
+ ]);
+
+ $this->responseMock = new MockHandler();
+ $history = Middleware::history($this->requestResponseStack);
+
+ $handler = HandlerStack::create($this->responseMock);
+ $handler->push($history);
+
+ $guzzle = new Client(['handler' => $handler]);
+
+
+ $naming = new ShortNamingStrategy();
+ $dispatcher = new EventDispatcher();
+ $wsdlReader = new DefinitionsReader(null, $dispatcher);
+ $soapReader = new SoapReader();
+ $dispatcher->addSubscriber($soapReader);
+
+ $metadataGenerator = new MetadataGenerator($naming, self::$namespaces);
+ $metadataLoader = new DevMetadataLoader($metadataGenerator, $soapReader, $wsdlReader);
+
+
+ $this->factory = new ClientFactory($metadataLoader, $serializer);
+ $this->factory->setHttpClient(new GuzzleAdapter($guzzle));
+ $this->factory->setHeaderHandler($headerHandler);
+ }
+
+ public function testLocalCheckOperation()
+ {
+ $httpResponse = new Response(200, ['Content-Type' => 'application/soap+xml'], '
+
+
+
+
+
+ 2
+
+
+
+');
+
+ $this->responseMock->append($httpResponse);
+
+ $client = $this->factory->getClient(__DIR__ . '/../Fixtures/Local/local.wsdl');
+ $this->assertNull($client->__getLastRequestMessage());
+
+ $element1 = "Example\Local\Element1";
+ $element2 = "Example\Local\Element2";
+ $type2Type = "Example\Local\Type2Type";
+
+ $input = new $element1();
+ $e2 = new $element2();
+
+ $data = new $type2Type();
+ $data->setId(1);
+ $e2->setData($data);
+ $input->setElement2($e2);
+
+ $response = $client->localCheckOperation($input);
+
+ $this->assertXmlStringEqualsXmlString(
+ '
+
+
+
+
+
+ 1
+
+
+
+
+',
+ (string)$client->__getLastRequestMessage()->getBody());
+
+ $this->assertNotNull($response);
+ $this->assertNotNull($response->getData());
+ $this->assertEquals(2, $response->getData()->getId());
+ }
+
+ public function testLocalCheckOperationReversed()
+ {
+ $httpResponse = new Response(200, ['Content-Type' => 'application/soap+xml'], '
+
+
+
+
+
+
+ 4
+
+
+
+
+');
+
+ $this->responseMock->append($httpResponse);
+
+ $client = $this->factory->getClient(__DIR__ . '/../Fixtures/Local/local.wsdl');
+ $this->assertNull($client->__getLastRequestMessage());
+
+ $element2 = "Example\Local\Element2";
+ $type2Type = "Example\Local\Type2Type";
+
+ $input = new $element2();
+ $data = new $type2Type();
+ $data->setId(3);
+ $input->setData($data);
+
+ $response = $client->localCheckOperationReversed($input);
+
+ $this->assertXmlStringEqualsXmlString(
+ '
+
+
+
+
+ 3
+
+
+
+
+',
+ (string)$client->__getLastRequestMessage()->getBody());
+
+ $this->assertNotNull($response);
+ $this->assertNotNull($response->getElement2());
+ $this->assertNotNull($response->getElement2()->getData());
+ $this->assertEquals(4, $response->getElement2()->getData()->getId());
+ }
+}
\ No newline at end of file
diff --git a/tests/Fixtures/Local/local.wsdl b/tests/Fixtures/Local/local.wsdl
new file mode 100644
index 0000000..c75fc44
--- /dev/null
+++ b/tests/Fixtures/Local/local.wsdl
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/Fixtures/Local/local.xsd b/tests/Fixtures/Local/local.xsd
new file mode 100644
index 0000000..b9a3906
--- /dev/null
+++ b/tests/Fixtures/Local/local.xsd
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+