#!/usr/bin/perl use Test::More tests => 10; use strict; use lib 'lib/'; use lib '../lib/'; use lib 't/lib'; use_ok qw(SOAP::WSDL::SOAP::Typelib::Fault11); use_ok qw(SOAP::WSDL::XSD::Typelib::Element); use_ok qw( MyElement ); use_ok qw( SOAP::WSDL::Client ); # simple type derived from builtin via restriction my $obj = MyAtomicComplexTypeElement->new({ test=> 'Test', test2 => 'Test2'}); ok $obj->isa('SOAP::WSDL::XSD::Typelib::Builtin::anyType') , 'inherited class'; # print $obj->get_test; ok $obj->get_test->isa('SOAP::WSDL::XSD::Typelib::Builtin::string') , 'element isa'; is $obj, 'Test' . 'Test2' , 'stringification'; my $soap = SOAP::WSDL::Client->new( { class_resolver => 'FakeResolver', } ) ->proxy('http://bla') ->no_dispatch(1); # TODO: use Test::XML for testing and re-integrate # is $soap->call('Test', $obj), q{} # . q{} # . q{Test} # . q{Test2} # . q{} # , 'SOAP Envelope generation with objects'; my $result = $soap->proxy('http://bla') ->no_dispatch(0) ->call('Test', $obj); ok $result->isa('SOAP::WSDL::SOAP::Typelib::Fault11'), 'return fault on impossible call'; ok ! $result, 'fault is false in boolean context'; # $soap->no_dispatch(1); ok ! $soap->call('Test'), 'second call'; package FakeResolver; my %class_list = ( 'Fault' => 'SOAP::WSDL::SOAP::Typelib::Fault11', 'Fault/faultactor' => 'SOAP::WSDL::XSD::Typelib::Builtin::string', 'Fault/faultcode' => 'SOAP::WSDL::XSD::Typelib::Builtin::anyURI', 'Fault/faultstring' => 'SOAP::WSDL::XSD::Typelib::Builtin::string', 'Fault/detail' => 'SOAP::WSDL::XSD::Typelib::Builtin::anyType', ); sub get_class { return $class_list{ $_[1] }; } sub get_typemap { return \%class_list; }