function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
JacobusJacobus 

Test class for SOAP web service

Hi,

I need urgent help with test class a SOAP web service!

Followed this article - https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_callouts_wsdl2apex_testing.htm on how to create mock responses.

My test class however still fails.

Appreciate any help!

Thank you,



 
pconpcon
Can you please include the part of your code that you are trying to test, the mock code and the test that you wrote?  Also include how it is failing.

Please use the "Add a code sample" button (Icon <>) when pasting code to increase readability.
JacobusJacobus
Hi pcon,

This applies to discussion - https://developer.salesforce.com/forums/ForumsMain?id=906F0000000B1rH which I have replied with the necessary
information.
pconpcon
That discussion does have the test and mock but it does not have the web service.  If you could please re-paste all three into this discussion using the "Add a code sample" button, and explain what you mean by "test class still fails," I can help you more.

By putting putting your code in this discussion, instead of forcing people to cross-reference discussions, it will make it easier for people trying to find answers in the future to follow the conversation.
JacobusJacobus
Hi pcon,

Please see code below as requested.

Thank you

//Generated by wsdl2apex

public class FAMExternalWebservice {
    //public class GetVehicleModelsByMakeDDLResponse_element {
      //  public FAMExternalWebservice.ArrayOfGenericListItem GetVehicleModelsByMakeDDLResult;
       // private String[] GetVehicleModelsByMakeDDLResult_type_info = new String[]{'GetVehicleModelsByMakeDDLResult','http://releases.firstmanagement.co.za/',null,'0','1','false'};
       // private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{'GetVehicleModelsByMakeDDLResult'};
    //}
    public class ThirdPartyReleaseEntry {
        public String DateOfRequest;
        public Integer Insurer;
        public String ClaimNumber;
        public String DateOfLoss;
        public Integer VehicleCondition;
        public String CustomerSurname;
        public String CustomerName;
        public String VehicleCommercialPassenger;
        public String VehicleMake;
        public String VehicleModel;
        public String VehicleMMCode;
        public String VehicleYear;
        public String VehicleRegistrationNumber;
        public String LocationName;
        public String LocationContactPerson;
        public String LocationContactNumber;
        public String LocationEmailAddress;
        public String LocationStreetAddress;
        public String LocationSuburb;
        public String LocationPostalCode;
        public String LocationCity;
        public String LocationProvince;
        public String SalesForceCapturer;
        public String SalesForceReferenceNumber;
        private String[] DateOfRequest_type_info = new String[]{'DateOfRequest','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] Insurer_type_info = new String[]{'Insurer','http://releases.firstmanagement.co.za/',null,'1','1','false'};
        private String[] ClaimNumber_type_info = new String[]{'ClaimNumber','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] DateOfLoss_type_info = new String[]{'DateOfLoss','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] VehicleCondition_type_info = new String[]{'VehicleCondition','http://releases.firstmanagement.co.za/',null,'1','1','false'};
        private String[] CustomerSurname_type_info = new String[]{'CustomerSurname','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] CustomerName_type_info = new String[]{'CustomerName','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] VehicleCommercialPassenger_type_info = new String[]{'VehicleCommercialPassenger','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] VehicleMake_type_info = new String[]{'VehicleMake','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] VehicleModel_type_info = new String[]{'VehicleModel','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] VehicleMMCode_type_info = new String[]{'VehicleMMCode','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] VehicleYear_type_info = new String[]{'VehicleYear','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] VehicleRegistrationNumber_type_info = new String[]{'VehicleRegistrationNumber','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationName_type_info = new String[]{'LocationName','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationContactPerson_type_info = new String[]{'LocationContactPerson','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationContactNumber_type_info = new String[]{'LocationContactNumber','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationEmailAddress_type_info = new String[]{'LocationEmailAddress','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationStreetAddress_type_info = new String[]{'LocationStreetAddress','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationSuburb_type_info = new String[]{'LocationSuburb','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationPostalCode_type_info = new String[]{'LocationPostalCode','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationCity_type_info = new String[]{'LocationCity','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] LocationProvince_type_info = new String[]{'LocationProvince','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] SalesForceCapturer_type_info = new String[]{'SalesForceCapturer','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] SalesForceReferenceNumber_type_info = new String[]{'SalesForceReferenceNumber','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        private String[] field_order_type_info = new String[]{'DateOfRequest','Insurer','ClaimNumber','DateOfLoss','VehicleCondition','CustomerSurname','CustomerName','VehicleCommercialPassenger','VehicleMake','VehicleModel','VehicleMMCode','VehicleYear','VehicleRegistrationNumber','LocationName','LocationContactPerson','LocationContactNumber','LocationEmailAddress','LocationStreetAddress','LocationSuburb','LocationPostalCode','LocationCity','LocationProvince','SalesForceCapturer','SalesForceReferenceNumber'};
    }
    //public class GetSalesForceInsurersDDLResponse_element {
        //public FAMExternalWebservice.ArrayOfGenericListItem GetSalesForceInsurersDDLResult;
        //private String[] GetSalesForceInsurersDDLResult_type_info = new String[]{'GetSalesForceInsurersDDLResult','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{'GetSalesForceInsurersDDLResult'};
    //}
    public class SumbitReleaseFromThirdPartyResponse_element {
        public String SumbitReleaseFromThirdPartyResult;
        private String[] SumbitReleaseFromThirdPartyResult_type_info = new String[]{'SumbitReleaseFromThirdPartyResult','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        private String[] field_order_type_info = new String[]{'SumbitReleaseFromThirdPartyResult'};
    }
    //public class GetVehicleMakesDDL_element {
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{};
    //}
    //public class GetProvincesDDL_element {
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{};
    //}
    public class ArrayOfString {
        public String[] string_x;
        private String[] string_x_type_info = new String[]{'string','http://releases.firstmanagement.co.za/',null,'0','-1','true'};
        private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        private String[] field_order_type_info = new String[]{'string_x'};
    }
    //public class GetVehicleCommercialPassengerDDL_element {
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{};
    //}
    //public class GetVehicleMakesDDLResponse_element {
        //public FAMExternalWebservice.ArrayOfString GetVehicleMakesDDLResult;
        //private String[] GetVehicleMakesDDLResult_type_info = new String[]{'GetVehicleMakesDDLResult','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{'GetVehicleMakesDDLResult'};
    //}
    //public class GetVehicleConditionsDDLResponse_element {
        //public FAMExternalWebservice.ArrayOfGenericListItem GetVehicleConditionsDDLResult;
        //private String[] GetVehicleConditionsDDLResult_type_info = new String[]{'GetVehicleConditionsDDLResult','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{'GetVehicleConditionsDDLResult'};
    //}
    //public class GetVehicleConditionsDDL_element {
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{};
    //}
    //public class GetVehicleModelsByMakeDDL_element {
        //public String make;
        //private String[] make_type_info = new String[]{'make','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{'make'};
    //}
    public class SumbitReleaseFromThirdParty_element {
        public FAMExternalWebservice.ThirdPartyReleaseEntry new_release;
        private String[] new_release_type_info = new String[]{'new_release','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        private String[] field_order_type_info = new String[]{'new_release'};
    }
    //public class GetSalesForceInsurersDDL_element {
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{};
    //}
    public class GenericListItem {
        public String value;
        public String text;
        private String[] value_type_info = new String[]{'value','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] text_type_info = new String[]{'text','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        private String[] field_order_type_info = new String[]{'value','text'};
    }
    //public class GetVehicleCommercialPassengerDDLResponse_element {
        //public FAMExternalWebservice.ArrayOfString GetVehicleCommercialPassengerDDLResult;
        //private String[] GetVehicleCommercialPassengerDDLResult_type_info = new String[]{'GetVehicleCommercialPassengerDDLResult','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{'GetVehicleCommercialPassengerDDLResult'};
    //}
    //public class GetProvincesDDLResponse_element {
        //public FAMExternalWebservice.ArrayOfString GetProvincesDDLResult;
        //private String[] GetProvincesDDLResult_type_info = new String[]{'GetProvincesDDLResult','http://releases.firstmanagement.co.za/',null,'0','1','false'};
        //private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        //private String[] field_order_type_info = new String[]{'GetProvincesDDLResult'};
    //}
    public class ArrayOfGenericListItem {
        public FAMExternalWebservice.GenericListItem[] GenericListItem;
        private String[] GenericListItem_type_info = new String[]{'GenericListItem','http://releases.firstmanagement.co.za/',null,'0','-1','true'};
        private String[] apex_schema_type_info = new String[]{'http://releases.firstmanagement.co.za/','true','false'};
        private String[] field_order_type_info = new String[]{'GenericListItem'};
    }
    public class SumbitReleaseFromThirdParty {
        public String endpoint_x = 'http://releases.firstmanagement.co.za/FAMExternalPartyWS.asmx';
        public Map<String,String> inputHttpHeaders_x;
        public Map<String,String> outputHttpHeaders_x;
        public String clientCertName_x;
        public String clientCert_x;
        public String clientCertPasswd_x;
        public Integer timeout_x;
        private String[] ns_map_type_info = new String[]{'http://releases.firstmanagement.co.za/', 'FAMExternalWebservice'};
        public String SumbitReleaseFromThirdParty(FAMExternalWebservice.ThirdPartyReleaseEntry new_release) {
            FAMExternalWebservice.SumbitReleaseFromThirdParty_element request_x = new FAMExternalWebservice.SumbitReleaseFromThirdParty_element();
            request_x.new_release = new_release;
            FAMExternalWebservice.SumbitReleaseFromThirdPartyResponse_element response_x;
            Map<String, FAMExternalWebservice.SumbitReleaseFromThirdPartyResponse_element> response_map_x = new Map<String, FAMExternalWebservice.SumbitReleaseFromThirdPartyResponse_element>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'http://releases.firstmanagement.co.za/SumbitReleaseFromThirdParty',
              'http://releases.firstmanagement.co.za/',
              'SumbitReleaseFromThirdParty',
              'http://releases.firstmanagement.co.za/',
              'SumbitReleaseFromThirdPartyResponse',
              'FAMExternalWebservice.SumbitReleaseFromThirdPartyResponse_element'}
            );
            response_x = response_map_x.get('response_x');
            return response_x.SumbitReleaseFromThirdPartyResult;
        }
        //public FAMExternalWebservice.ArrayOfString GetProvincesDDL() {
            //FAMExternalWebservice.GetProvincesDDL_element request_x = new FAMExternalWebservice.GetProvincesDDL_element();
            //FAMExternalWebservice.GetProvincesDDLResponse_element response_x;
            //Map<String, FAMExternalWebservice.GetProvincesDDLResponse_element> response_map_x = new Map<String, FAMExternalWebservice.GetProvincesDDLResponse_element>();
            //response_map_x.put('response_x', response_x);
            //WebServiceCallout.invoke(
              //this,
              //request_x,
              //response_map_x,
              //new String[]{endpoint_x,
              //'http://releases.firstmanagement.co.za/GetProvincesDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetProvincesDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetProvincesDDLResponse',
              //'FAMExternalWebservice.GetProvincesDDLResponse_element'}
            //);
            //response_x = response_map_x.get('response_x');
            //return response_x.GetProvincesDDLResult;
        //}
        //public FAMExternalWebservice.ArrayOfGenericListItem GetVehicleConditionsDDL() {
            //FAMExternalWebservice.GetVehicleConditionsDDL_element request_x = new FAMExternalWebservice.GetVehicleConditionsDDL_element();
            //FAMExternalWebservice.GetVehicleConditionsDDLResponse_element response_x;
            //Map<String, FAMExternalWebservice.GetVehicleConditionsDDLResponse_element> response_map_x = new Map<String, FAMExternalWebservice.GetVehicleConditionsDDLResponse_element>();
            //response_map_x.put('response_x', response_x);
            //WebServiceCallout.invoke(
              //this,
              //request_x,
              //response_map_x,
              //new String[]{endpoint_x,
              //'http://releases.firstmanagement.co.za/GetVehicleConditionsDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleConditionsDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleConditionsDDLResponse',
              //'FAMExternalWebservice.GetVehicleConditionsDDLResponse_element'}
            //);
            //response_x = response_map_x.get('response_x');
            //return response_x.GetVehicleConditionsDDLResult;
        //}
        //public FAMExternalWebservice.ArrayOfString GetVehicleMakesDDL() {
            //FAMExternalWebservice.GetVehicleMakesDDL_element request_x = new FAMExternalWebservice.GetVehicleMakesDDL_element();
            //FAMExternalWebservice.GetVehicleMakesDDLResponse_element response_x;
            //Map<String, FAMExternalWebservice.GetVehicleMakesDDLResponse_element> response_map_x = new Map<String, FAMExternalWebservice.GetVehicleMakesDDLResponse_element>();
            //response_map_x.put('response_x', response_x);
            //WebServiceCallout.invoke(
              //this,
              //request_x,
              //response_map_x,
              //new String[]{endpoint_x,
              //'http://releases.firstmanagement.co.za/GetVehicleMakesDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleMakesDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleMakesDDLResponse',
              //'FAMExternalWebservice.GetVehicleMakesDDLResponse_element'}
            //);
            //response_x = response_map_x.get('response_x');
            //return response_x.GetVehicleMakesDDLResult;
        //}
        //public FAMExternalWebservice.ArrayOfGenericListItem GetVehicleModelsByMakeDDL(String make) {
            //FAMExternalWebservice.GetVehicleModelsByMakeDDL_element request_x = new FAMExternalWebservice.GetVehicleModelsByMakeDDL_element();
            //request_x.make = make;
            //FAMExternalWebservice.GetVehicleModelsByMakeDDLResponse_element response_x;
            //Map<String, FAMExternalWebservice.GetVehicleModelsByMakeDDLResponse_element> response_map_x = new Map<String, FAMExternalWebservice.GetVehicleModelsByMakeDDLResponse_element>();
            //response_map_x.put('response_x', response_x);
            //WebServiceCallout.invoke(
              //this,
              //request_x,
              //response_map_x,
              //new String[]{endpoint_x,
              //'http://releases.firstmanagement.co.za/GetVehicleModelsByMakeDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleModelsByMakeDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleModelsByMakeDDLResponse',
              //'FAMExternalWebservice.GetVehicleModelsByMakeDDLResponse_element'}
            //);
            //response_x = response_map_x.get('response_x');
            //return response_x.GetVehicleModelsByMakeDDLResult;
        //}
        //public FAMExternalWebservice.ArrayOfString GetVehicleCommercialPassengerDDL() {
            //FAMExternalWebservice.GetVehicleCommercialPassengerDDL_element request_x = new FAMExternalWebservice.GetVehicleCommercialPassengerDDL_element();
            //FAMExternalWebservice.GetVehicleCommercialPassengerDDLResponse_element response_x;
            //Map<String, FAMExternalWebservice.GetVehicleCommercialPassengerDDLResponse_element> response_map_x = new Map<String, FAMExternalWebservice.GetVehicleCommercialPassengerDDLResponse_element>();
            //response_map_x.put('response_x', response_x);
            //WebServiceCallout.invoke(
              //this,
              //request_x,
              //response_map_x,
              //new String[]{endpoint_x,
              //'http://releases.firstmanagement.co.za/GetVehicleCommercialPassengerDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleCommercialPassengerDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetVehicleCommercialPassengerDDLResponse',
              //'FAMExternalWebservice.GetVehicleCommercialPassengerDDLResponse_element'}
            //);
            //response_x = response_map_x.get('response_x');
            //return response_x.GetVehicleCommercialPassengerDDLResult;
        //}
        //public FAMExternalWebservice.ArrayOfGenericListItem GetSalesForceInsurersDDL() {
            //FAMExternalWebservice.GetSalesForceInsurersDDL_element request_x = new FAMExternalWebservice.GetSalesForceInsurersDDL_element();
            //FAMExternalWebservice.GetSalesForceInsurersDDLResponse_element response_x;
            //Map<String, FAMExternalWebservice.GetSalesForceInsurersDDLResponse_element> response_map_x = new Map<String, FAMExternalWebservice.GetSalesForceInsurersDDLResponse_element>();
            //response_map_x.put('response_x', response_x);
            //WebServiceCallout.invoke(
              //this,
              //request_x,
              //response_map_x,
              //new String[]{endpoint_x,
              //'http://releases.firstmanagement.co.za/GetSalesForceInsurersDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetSalesForceInsurersDDL',
              //'http://releases.firstmanagement.co.za/',
              //'GetSalesForceInsurersDDLResponse',
              //'FAMExternalWebservice.GetSalesForceInsurersDDLResponse_element'}
            //);
            //response_x = response_map_x.get('response_x');
            //return response_x.GetSalesForceInsurersDDLResult;
        //}
    }
}

//@future class that calls above web service method

global class UpliftmentRequestFutureWebService {
	
	@future (callout=true)
	public static void sendvehiclerequest (String dateofrequest, 
										   Integer insurer, 
										   String claimno, 
										   String dateofloss, 
										   Integer vehiclecondition, 
										   String customerlastname,
										   String customerfirstname,
										   String vehiclecommercialpassenger, 
										   String vehiclemake,
										   String vehiclemodel, 
										   String vehicleMMCode,
										   String vehicleyear, 
										   String vehicleregistrationno, 
										   String locationname, 
										   String locationcontactperson,
										   String locationcontactno,
										   String locationemailaddress, 
										   String locationstreetaddress, 
										   String locationsuburb, 
										   String locationpostalcode,
										   String locationcity,
										   String locationprovince, 								   
										   String salesforcecapturer, 
										   String salesforcerefno) {									   	
										   		   	
				//GetSalesforceInsurerDDL					   	
				FAMExternalWebservice.SumbitReleaseFromThirdParty stub = new FAMExternalWebservice.SumbitReleaseFromThirdParty();
				//FAMExternalWebservice.ArrayOfGenericListItem insurers = stub.GetSalesForceInsurersDDL();

				//FAMExternalWebservice.ArrayOfString vehiclemakes = stub.GetVehicleMakesDDL();
				//system.debug('List of vehicle makes : ' + vehiclemakes);
				//stub.GetVehicleModelsByMakeDDL('');
				FAMExternalWebservice.ThirdPartyReleaseEntry tpr = new FAMExternalWebservice.ThirdPartyReleaseEntry();	

				tpr.DateOfRequest = dateofrequest;
				tpr.Insurer = Insurer;
				tpr.ClaimNumber = claimno;
				tpr.DateOfLoss = dateofloss;
				tpr.VehicleCondition = vehiclecondition;
				tpr.CustomerSurname = customerlastname;
				tpr.CustomerName = customerfirstname;
				tpr.VehicleCommercialPassenger = vehiclecommercialpassenger;				
				tpr.VehicleMake = vehiclemake;
				tpr.VehicleModel = vehiclemodel;
				tpr.VehicleMMCode = vehicleMMCode;
				tpr.VehicleYear = vehicleyear;
				tpr.VehicleRegistrationNumber = vehicleregistrationno;
				tpr.LocationName = locationname;
				tpr.LocationContactPerson = locationcontactperson;
				tpr.LocationContactNumber = locationcontactno;
				tpr.LocationEmailAddress = locationemailaddress;
				tpr.LocationStreetAddress = locationstreetaddress;
				tpr.LocationSuburb = locationsuburb;
				tpr.LocationPostalCode = locationpostalcode;
				tpr.LocationCity = locationcity;
				tpr.LocationProvince = locationprovince;
				tpr.SalesForceCapturer = salesforcecapturer;
				tpr.SalesForceReferenceNumber = salesforcerefno;	 
				
				system.debug('The vehicle salesforce object to be send to the web services : ' + tpr);						

			  	stub.SumbitReleaseFromThirdParty(tpr);	
										   		
	}
}

//MOCK CLASS TEST

@isTest

private class WebServiceMockImpl implements WebServiceMock {
    public void doInvoke(
           Object stub,
           Object request,
           Map<String, Object> response,
           String endpoint,
           String soapAction,
           String requestName,
           String responseNS,
           String responseName,
           String responseType) {
             	
       	   FAMExternalWebservice.SumbitReleaseFromThirdPartyResponse_element respElement = new FAMExternalWebservice.SumbitReleaseFromThirdPartyResponse_element();
       	   respElement.SumbitReleaseFromThirdPartyResult = 'Mock response';
           response.put('response_x', respElement); 
         	
           }  
}

//MOCK CLASS TEST
@isTest

private class UpliftmentRequestWSDLTest {

    @isTest static void testWSDL() {  	
    	          

        // This causes a fake response to be generated
        Test.setMock(WebServiceMock.class, new WebServiceMockImpl ());
        
        FAMExternalWebservice.ThirdPartyReleaseEntry tpr = new FAMExternalWebservice.ThirdPartyReleaseEntry();	
        FAMExternalWebservice.SumbitReleaseFromThirdParty stub = new FAMExternalWebservice.SumbitReleaseFromThirdParty();	
        
                tpr.DateOfRequest = 'system.now()';
				tpr.Insurer = 1;
				tpr.ClaimNumber = 'claimno';
				tpr.DateOfLoss = 'system.now()';
				tpr.VehicleCondition = 1;
				tpr.CustomerSurname = 'customerlastname';
				tpr.CustomerName = 'customerfirstname';
				tpr.VehicleCommercialPassenger = 'vehiclecommercialpassenger';				
				tpr.VehicleMake = 'vehiclemake';
				tpr.VehicleModel = 'vehiclemodel';
				tpr.VehicleMMCode = 'vehicleMMCode';
				tpr.VehicleYear = 'vehicleyear';
				tpr.VehicleRegistrationNumber = 'vehicleregistrationno';
				tpr.LocationName = 'locationname';
				tpr.LocationContactPerson = 'locationcontactperson';
				tpr.LocationContactNumber = 'locationcontactno';
				tpr.LocationEmailAddress = 'locationemailaddress';
				tpr.LocationStreetAddress = 'locationstreetaddress';
				tpr.LocationSuburb = 'locationsuburb';
				tpr.LocationPostalCode = 'locationpostalcode';
				tpr.LocationCity = 'locationcity';
				tpr.LocationProvince = 'locationprovince';
				tpr.SalesForceCapturer = 'salesforcecapturer';
				tpr.SalesForceReferenceNumber = 'salesforcerefno';	


        // Call the method that invokes a callout
        Test.startTest() ;
        String output = stub.SumbitReleaseFromThirdParty(tpr);
		Test.stopTest();
         
        // Verify that a fake result is returned
        System.assertEquals('Mock response', output);

    }
}
JacobusJacobus
Hi pcon,

I tried deploying using inbound/ outbound change sets which also fails with the below messages.

API Name
Type
Line
Column
Error Message
UpliftmentRequestCreate_TestClass	Apex Class	168	64	Invalid type: FAMExternalWebservice.ThirdPartyReleaseEntry
WebServiceMockImpl	Apex Class	15	96	Invalid type: FAMExternalWebservice.SumbitReleaseFromThirdPartyResponse_element
UpliftmentRequestCreate	Apex Trigger	276	7	Variable does not exist: UpliftmentRequestFutureWebService
UpliftmentRequestFutureWebService	Apex Class	30	66	Invalid type: FAMExternalWebservice.SumbitReleaseFromThirdParty
UpliftmentRequestWSDLTest	Apex Class	9	48	Type is not visible: webservicemockimpl
pconpcon
A lot of this seems that you do not have correct visiblilty on your classes.  For example, 
 
private class WebServiceMockImpl implements WebServiceMock {
should be
global class WebServiceMockImpl implements WebServiceMock {
The deployment issues may be becuase the individual classes may have saved at one point but then they were changed underneath them and now cannot be pushed.
JacobusJacobus
Hi pcon,

I changed the WebServiceMockImpl back to global.

I also tried to only validate the FAMExternalWebservice, UpliftmentRequestWSDLTest and the WebServiceMockImpl using change sets and this seems to be working.

Will let you know, thank you for your help thus far.
JacobusJacobus
Hi pcon,

Please help with the following.

Below is a trigger that calls an @future class which calls the web service.

My test class fails with : 
- System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling out 
Fails on this line in my test class - 
String output = stub.SumbitReleaseFromThirdParty(tpr);


 
trigger UpliftmentRequestCreate on Vehicle__c (after insert) {
	
	DateTime createdate = system.now();
	String dateofrequest;
	Integer insurer;
	String claimno;
	DateTime dateoflossconvert;
	String dateofloss;
	Integer vehiclecondition;
	String customerfirstname;
	String customerlastname;
	String vehiclemake;
	String vehiclemodel;
	String vehiclemmcode;
	String vehicleyear;
	String vehicleregistrationno;
	String vehiclecommercialpassenger;
	String locationname;
	String locationcontactperson;
	String locationcontactno;
	String locationemailaddress;
	String locationstreetaddress;
	String locationsuburb;
	String locationpostalcode;
	String locationcity;
	String locationprovince;
	String createuserfirstname;
	String createuserlastname;
	String salesforcecapturer;
	String salesforcerefno;
	String refno;
	id customer;
	id vehicleid;
		
	User currentuser=[Select FirstName, LastName from User Where Id =: UserInfo.getUserId() LIMIT 1];
	createuserfirstname = currentuser.FirstName;
	createuserlastname = currentuser.LastName;
	salesforcecapturer = createuserfirstname+' '+createuserlastname;
	system.debug ('Current User : ' + createuserfirstname +' '+createuserlastname);

	for (Vehicle__c v : Trigger.new) {
		vehicleid = v.id;
		customer = v.Customer__c;
		//
		//DateOfRequest	
		if (v.Insurance_Group__c == 'AFI' || v.Insurance_Group__c == 'Zurich'){
			
		dateofrequest = createdate.format('yyyy/MM/dd HH:mm:ss');
		system.debug ('Date of Request New : ' + dateofrequest);							   
		//
		//Insurer
		if (v.Insurance_Group__c != null){
				if (v.Insurance_Group__c == 'AFI'){
					insurer = 1046;
				}
				
				else if (v.Insurance_Group__c == 'Zurich'){
					insurer = 1045;
				}
				else{
					insurer = 1;
				}
		}
		else{
				insurer = 0;
		}
		system.debug('Insurer : ' + insurer);
		//
		//ClaimNumber				
		if (v.PolicyNo__c != null){
				claimno = v.PolicyNo__c;
		}
		else{
				claimno = 'Not Specified';
		}
		system.debug('Claim No : ' + claimno);
		//
		//DateOfLoss	
		if (v.Date_Of_Loss__c != null){
				
				dateoflossconvert = DateTime.newInstance(v.Date_Of_Loss__c.year(), v.Date_Of_Loss__c.month(), v.Date_Of_Loss__c.day());
				dateofloss = dateoflossconvert.format('yyyy/MM/dd HH:mm:ss');
		}
		else{
				dateofloss = null;
		}		
		system.debug('Date of Loss : ' + dateofloss);
		//
		//VehicleCondition		
		if(v.Vehicle_Condition__c != null){
				if (v.Vehicle_Condition__c == 'Repairable'){
					vehiclecondition = 1;
				}
				else if (v.Vehicle_Condition__c == 'WriteOff'){
					vehiclecondition = 2;
				}
				else{
					vehiclecondition = 0;
				}
		}
		else{
				vehiclecondition = 0;
		}
		system.debug('Vehicle Condition : ' + vehiclecondition);
		//
		//VehicleCommercialPassenger
		if(v.Vehicle_Commercial_Passenger__c != null){
				vehiclecommercialpassenger = v.Vehicle_Commercial_Passenger__c;
		}
		else{
				vehiclecommercialpassenger = 'Not Specified';
		}
		system.debug ('Vehicle Commercial Passenger : ' + vehiclecommercialpassenger);
		//
		//VehicleMake
		if(v.Make__c != null){
			vehiclemake = v.Make__c;
		}	
		else{
			vehiclemake = 'Not Specified';
		}
		system.debug ('Vehicle Make : ' + vehiclemake);
		//
		//VehicleModel
		if (v.Model__c != null){
				vehiclemodel = v.Model__c;
		}		
		else{
				vehiclemodel = 'Not Specified';
		}
		system.debug('Vehicle Model : ' + vehiclemodel);
		//
		//VehicleMMCode
		if (v.MMCode__c != null){
			vehiclemmcode = v.MMCode__c;
		}
		else{
			vehiclemmcode = 'Not Specified';
		}
		system.debug ('Vehicle MMCode : ' + vehiclemmcode);
		//
		//VehicleYear
		if (v.Reg_Year__c != null){
				vehicleyear = v.Reg_Year__c;	
		}
		else{
				vehicleyear = 'Not Specified';
		}
		system.debug('Vehicle Year : ' + vehicleyear);
		//
		//VehicleRegistrationNumber
		if(v.RegNo__c != null){
				vehicleregistrationno = v.RegNo__c;	
		}
		else{
				vehicleregistrationno = 'Not Specified';
		}
		system.debug('Vehicle Registration No : ' + vehicleregistrationno);
		//
		//LocationName
		if (v.MBR_Name__c != null){
				locationname = v.MBR_Name__c;	
		}
		else {
				locationname = 'Not Specified';
		}
		system.debug('Location Name : ' + locationname);
		//
		//LocationContactPerson	
		if (v.MBR_Contact_Person__c != null){
				locationcontactperson = v.MBR_Contact_Person__c;	
		}
		else{
				locationcontactperson = 'Not Specified';
		}
		system.debug('Location Contact Person : ' + locationcontactperson);
		//
		//LocationEmailAddress	
		if (v.MBR_Email__c != null) {
				locationemailaddress = v.MBR_Email__c;	
		}
		else {
				locationemailaddress = 'Not Specified';
		}
		system.debug('Location Email Address : ' + locationemailaddress);
		//
		//LocationStreetAddress	
		if (v.MBR_Address__c != null){
				locationstreetaddress = v.MBR_Address__c;	
		}
		else {
				locationstreetaddress = 'Not Specified';
		}
		system.debug('Location Address : ' + locationstreetaddress);
		//
		//LocationSuburb	
		if (v.MBR_Suburb__c != null){
				locationsuburb = v.MBR_Suburb__c;	
		}
		else{
				locationsuburb = 'Not Specified';
		}
		system.debug('Location Suburb : ' + locationsuburb);
		//
		//LocationPostalCode
		if (v.MBR_Postal_Code__c != null){
			locationpostalcode = v.MBR_Postal_Code__c;
		}
		else{
			locationpostalcode = '';
		}
		//
		//LocationCity
		if (v.MBR_City__c != null){
			locationcity = v.MBR_City__c;
		}
		else{
			locationcity = '';
		}
		//
		//LocationProvince	
		if (v.MBR_Province__c != null){
				locationprovince = v.MBR_Province__c;	
		}
		else {
				locationprovince = 'Not Specified';
		}		
		system.debug('Location Province : ' + locationprovince);	
		//
		//LocationContactNumber	
		if (v.MBR_Contact_No__c != null){
				locationcontactno = v.MBR_Contact_No__c;
		}
		else{
				locationcontactno = 'Not Specified';
		}
		system.debug('Location Province : ' + locationcontactno);
		//
		//SalesforceReferenceNumber	
		if (v.StockNo__c != null){
				salesforcerefno = v.StockNo__c;	
		}
		else{
				salesforcerefno = 'Not Specified';
		}
		//
		}	
	}
	
	
	for (Vehicle__c v : Trigger.new) {
		
		if (v.Insurance_Group__c == 'AFI' || v.Insurance_Group__c == 'Zurich'){ 
	
				try {
				
						system.debug ('About to call the web service class');
						UpliftmentRequestFutureWebService.sendvehiclerequest(dateofrequest, insurer, claimno, dateofloss, vehiclecondition, customerlastname, customerfirstname, vehiclecommercialpassenger, vehiclemake, vehiclemodel, 
																	 vehicleMMCode, vehicleyear, vehicleregistrationno, locationname, locationcontactperson, locationcontactno, locationemailaddress, locationstreetaddress, 
																	 locationsuburb, locationpostalcode, locationcity, locationprovince, salesforcecapturer, salesforcerefno);		
				}
					catch(DmlException e){
					system.debug('The following exception has occured: ' + e.getMessage());
					}
		}
	}			
}

@FUTURE CLASS
global class UpliftmentRequestFutureWebService {
	
	@future (callout=true)
	public static void sendvehiclerequest (String dateofrequest, 
										   Integer insurer, 
										   String claimno, 
										   String dateofloss, 
										   Integer vehiclecondition, 
										   String customerlastname,
										   String customerfirstname,
										   String vehiclecommercialpassenger, 
										   String vehiclemake,
										   String vehiclemodel, 
										   String vehicleMMCode,
										   String vehicleyear, 
										   String vehicleregistrationno, 
										   String locationname, 
										   String locationcontactperson,
										   String locationcontactno,
										   String locationemailaddress, 
										   String locationstreetaddress, 
										   String locationsuburb, 
										   String locationpostalcode,
										   String locationcity,
										   String locationprovince, 								   
										   String salesforcecapturer, 
										   String salesforcerefno) {									   	
										   		   	
				//GetSalesforceInsurerDDL					   	
				FAMExternalWebservice.SumbitReleaseFromThirdParty stub = new FAMExternalWebservice.SumbitReleaseFromThirdParty();
				//FAMExternalWebservice.ArrayOfGenericListItem insurers = stub.GetSalesForceInsurersDDL();

				//FAMExternalWebservice.ArrayOfString vehiclemakes = stub.GetVehicleMakesDDL();
				//system.debug('List of vehicle makes : ' + vehiclemakes);
				//stub.GetVehicleModelsByMakeDDL('');
				FAMExternalWebservice.ThirdPartyReleaseEntry tpr = new FAMExternalWebservice.ThirdPartyReleaseEntry();	

				tpr.DateOfRequest = dateofrequest;
				tpr.Insurer = Insurer;
				tpr.ClaimNumber = claimno;
				tpr.DateOfLoss = dateofloss;
				tpr.VehicleCondition = vehiclecondition;
				tpr.CustomerSurname = customerlastname;
				tpr.CustomerName = customerfirstname;
				tpr.VehicleCommercialPassenger = vehiclecommercialpassenger;				
				tpr.VehicleMake = vehiclemake;
				tpr.VehicleModel = vehiclemodel;
				tpr.VehicleMMCode = vehicleMMCode;
				tpr.VehicleYear = vehicleyear;
				tpr.VehicleRegistrationNumber = vehicleregistrationno;
				tpr.LocationName = locationname;
				tpr.LocationContactPerson = locationcontactperson;
				tpr.LocationContactNumber = locationcontactno;
				tpr.LocationEmailAddress = locationemailaddress;
				tpr.LocationStreetAddress = locationstreetaddress;
				tpr.LocationSuburb = locationsuburb;
				tpr.LocationPostalCode = locationpostalcode;
				tpr.LocationCity = locationcity;
				tpr.LocationProvince = locationprovince;
				tpr.SalesForceCapturer = salesforcecapturer;
				tpr.SalesForceReferenceNumber = salesforcerefno;	 
				
				system.debug('The vehicle salesforce object to be send to the web services : ' + tpr);						

			  	stub.SumbitReleaseFromThirdParty(tpr);	
										   		
	}
}

TEST CLASS
@isTest


public class UpliftmentRequestCreate_TestClass {
    @isTest static void UpliftmentRequestCreateTestClass() {
    	
    	Profile p = [SELECT Id FROM Profile WHERE Name='System Administrator']; 
    	
    	User u = [SELECT Id from User WHERE Name = 'Auction Nation Admin'];
    	System.runAs(u){

    	Contact c = new Contact (FirstName = 'John', LastName = 'Smith');
    	insert c;
    	Account a = new Account (Name = 'Test Account');
    	insert a;
    	
        Vehicle__c vehicle1 = new Vehicle__c(Name = 'KNAFX411LE5110158', 
                                            StockNo__c = '12345', 
                                            Insurance_Group__c = 'AFI',
                                            RegNo__c = 'CY67KMGP1', 
                                            EngineNo__c = '4587956874', 
                                            MMCode__c = '10010030', 
                                            ManufacturerYear__c = 2012, 
                                            Reg_Year__c = '2012', 
                                            Make__c = 'Ford', 
                                            PolicyNo__c = '13456',
                                            Date_Of_Loss__c = system.Today(),
                                            Vehicle_Condition__c = 'Repairable',
                                            Vehicle_Commercial_Passenger__c = 'passenger',
                                            Model__c = 'Focus', 
                                            MBR_Name__c = 'mbr test',
                                            MBR_Contact_Person__c = c.id,
                                            MBR_Email__c = 'steve@gmail.com',
                                            MBR_Address__c = 'test address',
                                            MBR_Suburb__c = 'test suburb',
                                            MBR_Postal_Code__c = '123',
                                            MBR_City__c = 'test city',
                                            MBR_Province__c = 'test province',
                                            MBR_Contact_No__c = '0118946523',
                                            Derivative__c = '2.0 TDCi', 
                                            Colour__c = 'Silver', 
                                            ODO_Reading__c = '25698', 
                                            HasKeys__c = TRUE, 
                                            VehicleStarts__c = TRUE, 
                                            HasPapers__c = TRUE, 
                                            Code__c = '123456789', 
                                            MakeAnOfferMinValue__c = 50000, 
                                            SubjectToConfirmationValue__c = 50000, 
                                            ReservedPriceValue__c = 50000, 
                                            TradeValue__c = 50000, 
                                            RetailValue__c = 50000, 
                                            Customer__c = a.id,
                                            VehicleLocation__c = 'Johannesburg', 
                                            Vehicle_Status__c = 'MAKEANOFFER');
        insert vehicle1; 
        system.debug ('VEHICLE 1 : ' + vehicle1);
        
        Vehicle__c vehicle2 = new Vehicle__c(Name = 'KMAFX411LE5110156', 
                                            StockNo__c = '123456', 
                                            Insurance_Group__c = 'Zurich',
                                            RegNo__c = 'BR55mt', 
                                            EngineNo__c = '4587956874', 
                                            MMCode__c = '10010030', 
                                            ManufacturerYear__c = 2012, 
                                            Reg_Year__c = '2012', 
                                            Make__c = 'Ford', 
                                            PolicyNo__c = '134567',
                                            Date_Of_Loss__c = system.Today(),
                                            Vehicle_Condition__c = 'WriteOff',
                                            Vehicle_Commercial_Passenger__c = 'passenger',
                                            Model__c = 'Focus', 
                                            MBR_Name__c = 'mbr test',
                                            MBR_Contact_Person__c = c.id,
                                            MBR_Email__c = 'steve@gmail.com',
                                            MBR_Address__c = 'test address',
                                            MBR_Suburb__c = 'test suburb',
                                            MBR_Postal_Code__c = '123',
                                            MBR_City__c = 'test city',
                                            MBR_Province__c = 'test province',
                                            MBR_Contact_No__c = '0118946523',
                                            Derivative__c = '2.0 TDCi', 
                                            Colour__c = 'Silver', 
                                            ODO_Reading__c = '25698', 
                                            HasKeys__c = TRUE, 
                                            VehicleStarts__c = TRUE, 
                                            HasPapers__c = TRUE, 
                                            Code__c = '123456789', 
                                            MakeAnOfferMinValue__c = 50000, 
                                            SubjectToConfirmationValue__c = 50000, 
                                            ReservedPriceValue__c = 50000, 
                                            TradeValue__c = 50000, 
                                            RetailValue__c = 50000, 
                                            Customer__c = a.id,
                                            VehicleLocation__c = 'Johannesburg', 
                                            Vehicle_Status__c = 'MAKEANOFFER');
        insert vehicle2;
        system.debug ('VEHICLE 2 : ' + vehicle2);
      
        
        Vehicle__c vehicle3 = new Vehicle__c(Name = 'KMAFX411LE5110156', 
                                            StockNo__c = '1234567', 
                                            Insurance_Group__c = '',
                                            RegNo__c = 'TWY835GP', 
                                            EngineNo__c = '4587956874', 
                                            MMCode__c = '10010030', 
                                            ManufacturerYear__c = 2012, 
                                            Reg_Year__c = '', 
                                            Make__c = 'VW', 
                                            PolicyNo__c = '',
                                            Date_Of_Loss__c = system.Today(),
                                            Vehicle_Condition__c = '',
                                            Vehicle_Commercial_Passenger__c = '',
                                            Model__c = 'GOLF TSI', 
                                            MBR_Name__c = '',
                                            MBR_Contact_Person__c = c.id,
                                            MBR_Email__c = '',
                                            MBR_Address__c = '',
                                            MBR_Suburb__c = '',
                                            MBR_Postal_Code__c = '',
                                            MBR_City__c = '',
                                            MBR_Province__c = '',
                                            MBR_Contact_No__c = '',
                                            Derivative__c = '2.0 TDCi', 
                                            Colour__c = 'Silver', 
                                            ODO_Reading__c = '25698', 
                                            HasKeys__c = TRUE, 
                                            VehicleStarts__c = TRUE, 
                                            HasPapers__c = TRUE, 
                                            Code__c = '123456789', 
                                            MakeAnOfferMinValue__c = 50000, 
                                            SubjectToConfirmationValue__c = 50000, 
                                            ReservedPriceValue__c = 50000, 
                                            TradeValue__c = 50000, 
                                            RetailValue__c = 50000, 
                                            Customer__c = a.id,
                                            VehicleLocation__c = 'Johannesburg', 
                                            Vehicle_Status__c = 'MAKEANOFFER');                   
        insert vehicle3;
        system.debug ('VEHICLE 3 : ' + vehicle3);
        
        
        
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////
	    ///////////////////////This causes a fake response to be generated/////////////////////////////////////////////
        FAMExternalWebservice.ThirdPartyReleaseEntry tpr = new FAMExternalWebservice.ThirdPartyReleaseEntry();	
        FAMExternalWebservice.SumbitReleaseFromThirdParty stub = new FAMExternalWebservice.SumbitReleaseFromThirdParty();	
        
        		tpr.DateOfRequest = 'system.now()';
				tpr.Insurer = 1;
				tpr.ClaimNumber = 'claimno';
				tpr.DateOfLoss = 'system.now()';
				tpr.VehicleCondition = 1;
				tpr.CustomerSurname = 'customerlastname';
				tpr.CustomerName = 'customerfirstname';
				tpr.VehicleCommercialPassenger = 'vehiclecommercialpassenger';				
				tpr.VehicleMake = 'vehiclemake';
				tpr.VehicleModel = 'vehiclemodel';
				tpr.VehicleMMCode = 'vehicleMMCode';
				tpr.VehicleYear = 'vehicleyear';
				tpr.VehicleRegistrationNumber = 'vehicleregistrationno';
				tpr.LocationName = 'locationname';
				tpr.LocationContactPerson = 'locationcontactperson';
				tpr.LocationContactNumber = 'locationcontactno';
				tpr.LocationEmailAddress = 'locationemailaddress';
				tpr.LocationStreetAddress = 'locationstreetaddress';
				tpr.LocationSuburb = 'locationsuburb';
				tpr.LocationPostalCode = 'locationpostalcode';
				tpr.LocationCity = 'locationcity';
				tpr.LocationProvince = 'locationprovince';
				tpr.SalesForceCapturer = 'salesforcecapturer';
				tpr.SalesForceReferenceNumber = 'salesforcerefno';	

        // Call the method that invokes a callout
        Test.setMock(WebServiceMock.class, new WebServiceMockImpl ());
        Test.startTest();
        String output = stub.SumbitReleaseFromThirdParty(tpr);
		Test.stopTest();
	
         
        // Verify that a fake result is returned
        System.assertEquals('Mock response', output);


    	}
    }
}





 
JacobusJacobus
Hi pcon,

Just a question, can we not do a webex or some sort?

Really appreciate the help!!