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
pintoo rajputpintoo rajput 

How to write test class for this type of class??

global with sharing class GAPContractLoadXML
{
    WebService static String updateGapContractData(String xmlMessage)
    {
        Dom.Document xmlDoc = new Dom.Document();
        xmlDoc.load(xmlMessage);
        Gap gapObject = new Gap(xmlDoc.getRootElement());
        GapApplicant applicant = gapObject.applicant;
        GapContract contract = applicant.gapContract;

        try
        {
            // If no error sent, update gap fields in loan object
            if(String.isEmpty(contract.errorMessage))
            {
                // Get loan record to update
                Opportunity loan = [select Id from Opportunity where RemRef__c =: applicant.remRef limit 1];

                // Update loan          
                loan.Gap_Contract_Document__c = contract.contractDocument;
                loan.Gap_Contract_Number__c = contract.contractNumber;
                loan.Gap_Effective_Date__c = contract.effectiveDate;
                loan.Gap_Effective_Odometer__c = contract.effectiveOdometer;
                loan.Gap_Expiration_Date__c = contract.expirationDate;
                loan.Gap_Expiration_Odometer__c = contract.expirationOdometer;

                update loan;

                return 'Gap Contract Data Updated Sucessfully';
            }
            // Error sent - print to debug logs
            else
            {
                System.debug('=> Integration error updating Gap Contract Data: ' + contract.errorMessage);
                return '=> Integration error updating Gap Contract Data: ' + contract.errorMessage;
            }
        }
        catch(Exception e)
        {
            System.debug('=> Salesforce error updating Gap Contract Data: ' + e.getMessage());
            return '=> Salesforce error updating Gap Contract Data: ' + e.getMessage();
        }
    }

    global class Gap
    {
        global GapApplicant applicant{get;set;}
        
        global Gap(Dom.XmlNode node)
        {
            Dom.XmlNode child = node.getChildElement('applicant', null);
            if(child != null)
            {
                applicant = new GapApplicant(child);
            }            
        }
    }

    global class GapApplicant
    {
        global GapContract gapContract;
        global String origenateAppNumber;
        global String remRef;

        global GapApplicant(Dom.XmlNode node)
        {
            Dom.XmlNode child = node.getChildElement('GapContract', null);
            if(child != null)
            {
                gapContract = new GapContract(child);
            }
            
            child = node.getChildElement('OrigenateAppNumber', null);
            if(child != null)
            {
                origenateAppNumber = child.getText();
            }

            child = node.getChildElement('RemRef', null);
            if(child != null)
            {
                remRef = child.getText();
            }
        }
    }

    global class GapContract
    {
        global String contractDocument;
        global String contractNumber;
        global DateTime effectiveDate;
        global Integer effectiveOdometer;
        global DateTime expirationDate;
        global Integer expirationOdometer;
        global String errorMessage;

        global GapContract(Dom.XmlNode node)
        {
            Dom.XmlNode child = node.getChildElement('ContractDocument', null);
            if(child != null)
            {
                contractDocument = child.getText();
            }

            child = node.getChildElement('ContractNumber', null);
            if(child != null)
            {
                contractNumber = child.getText();
            }

            child = node.getChildElement('EffectiveDate', null);
            if(child != null)
            {
                effectiveDate = DateTime.valueOf(child.getText());
            }

            child = node.getChildElement('EffectiveOdometer', null);
            if(child != null)
            {
                effectiveOdometer = Integer.valueOf(child.getText());
            }

            child = node.getChildElement('ExpirationDate', null);
            if(child != null)
            {
                expirationDate = DateTime.valueOf(child.getText());
            }

            child = node.getChildElement('ExpirationOdometer', null);
            if(child != null)
            {
                expirationOdometer = Integer.valueOf(child.getText());
            }

            child = node.getChildElement('ErrorMessage', null);
            if(child != null)
            {
                errorMessage = child.getText();
            }
        } 
    }

}
logontokartiklogontokartik
Its nothing different than any other tests,

You can manually construct the XML String and load it in your test class and call your class to make sure that it is getting serialized correctly and the corresponding records are getting updated correctly.

Is there any specific question you have regarding the test?