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
Veerendar AellaVeerendar Aella 

Need test class for apex class import xml into salesforce org

Hi All,

I have an apex class for importing xml data into salesforce org, I need a test class code to test the data. Please help.
Below is my apex class:

public class ImportAccountsXML {
    

    public Blob myfile{get;set;}

       public ImportAccountsXML(){

        reports = new List<Account>();

    }

     

    public List<Account> reports {get;set;}

     

    public class Accdata {

        public String Name {get; set;}

        public String AccountNumber {get; set;}

        public String Phone {get; set;}
        
        public String Industry {get; set;}

        public String type {get; set;}
        
        public String Description {get; set;}
        
        public String Site {get; set;}
        
        public String Ownership {get; set;}
        
        public String Sic {get; set;}
        
        public String Website {get; set;}
         

    }

 
    private void parseReports(DOM.XMLNode node) {

        for (Dom.XMLNode child : node.getChildElements()) {

            if (child.getName() == 'record') {

                System.debug('child'+child);

                parseReport(child);

                //  reports.add(r);

            }

            System.debug('reports'+reports);

        }

    }

     

    private void parseReport(DOM.XMLNode node ) {

        account r = new account();

         

        for (Dom.XMLNode child : node.getChildElements()) {

            if (child.getName() == 'Name') {

                r.Name= child.getText().trim();

            } else if (child.getName() == 'AccountNumber') {

                r.AccountNumber= child.getText().trim();

            } else if (child.getName() == 'Phone') {

                r.Phone= child.getText().trim();

            }  else if (child.getName() == 'Industry') {

                r.Industry= child.getText().trim();
            
            }  else if (child.getName() == 'Type') {

                r.Type= child.getText().trim();
                 

            }else if (child.getName() == 'Ownership') {

                r.Ownership= child.getText().trim();
                 

            }else if (child.getName() == 'Sic') {

                r.Sic= child.getText().trim();
                
            }else if (child.getName() == 'Description') {

                r.Description= child.getText().trim();
                
                
            }else if (child.getName() == 'Website') {

                r.Website= child.getText().trim();
                
            }else if (child.getName() == 'Site') {

                r.Site= child.getText().trim();
            }
        }

        reports.add(r);

         upsert    reports;

    }

     

    public void doUpload() {

         

        DOM.Document doc = new DOM.Document();

        doc.load(String.valueOf(myfile.toString()));   

        parseReports(doc.getRootElement());

         

         

    }

     

}
Best Answer chosen by Veerendar Aella
Raj VakatiRaj Vakati
Try this code
 
@istest
public class ImportAccountsXMLTest{
    public static testmethod void helptest(){
        String hresult = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
            '<lead-data >'+
            '<record>'+
            ' <Name>Veera</Name>'+
             ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <LastName>Vinnu</LastName>'+
            ' <Phone>8008997654</Phone>'+
            ' <Email>veerav@gmail.com</Email>'+
            ' </record>'+
            ' <record>'+
            ' <Name>Veera</Name>'+
            ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <FirstName>Beera</FirstName>'+
            ' <LastName>Binnu</LastName>'+
            '  <Phone>9898989898</Phone>'+
            ' <Email>beeru@gmail.com</Email>'+
            ' </record>'+
            ' <record>'+
            ' <Name>Veera</Name>'+
            ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <FirstName>Ceera</FirstName>'+
            ' <LastName>Cinnu</LastName>'+
            ' <Phone>8989898989</Phone>'+
            '  <Email>ceera@gmail.com</Email>'+
            ' </record>'+
            ' <record>'+
            ' <Name>Veera</Name>'+
            ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <FirstName>Deera</FirstName>'+
            ' <LastName>Dinnu</LastName>'+
            ' <Phone>7878787878</Phone>'+
            ' <Email>deera@gmail.com</Email>'+
            ' </record></lead-data>';
        
        ImportAccountsXML imp = new ImportAccountsXML() ;
        imp.myfile  = Blob.valueOf(hresult) ; 
        imp.doUpload();
        
    }
}

 

All Answers

Raj VakatiRaj Vakati
Change the XML String in the test class and run it you will get code covegare  ..replace this once 
 
@istest
public class ImportAccountsXMLTest{
    public static testmethod void helptest(){
        String hresult = '<?xml version="1.0" encoding="ISO-8859-1"?><record><Account>'+
            '<Name>Ben Edwards Ltd</Name>'+
            '<AccountNumber>Ben Edwards Ltd</AccountNumber>'+
            '<Phone>Ben Edwards Ltd</Phone>'+
            '<Industry>Ben Edwards Ltd</Industry>'+
            '<Type>Ben Edwards Ltd</Type>'+
            '<Sic>Ben Edwards Ltd</Sic>'+
            '<Description>Ben Edwards Ltd</Description>'+
            '<Website>Ben Edwards Ltd</Website>'+
            '<Site>Ben Edwards Ltd</Site>'+
            '</Account></record>';
        
        ImportAccountsXML imp = new ImportAccountsXML() ;
        imp.myfile  = Blob.valueOf(hresult) ; 
        imp.doUpload();
        
    }
}

 
Raj VakatiRaj Vakati
If you can give me a sample xml file i will be able to write it for u 
Veerendar AellaVeerendar Aella
Hi Raj,

I am getting below errors:

User-added image
Raj VakatiRaj Vakati
Can u gove me your code?
Raj VakatiRaj Vakati
And XML fomrate also 
Veerendar AellaVeerendar Aella
Hi Raj,

Please find code and xml format below:

Code:
public class Parser_New{
    public Blob myfile{get;set;}
    
    
    public Parser_New(){
        reports = new List<leaddata>(); 
    }
    
    public List<leaddata> reports {get;set;}
    
    public class leaddata {
        public String FirstName {get; set;}
        public String LastName {get; set;}
        public String Phone {get; set;}
        public String Email {get; set;}
    }
    
    
    
    private void parseReports(DOM.XMLNode node) {
        for (Dom.XMLNode child : node.getChildElements()) {
            if (child.getName() == 'record') {
                System.debug('child'+child);
                parseReport(child);
                //  reports.add(r);
            }
            System.debug('reports'+reports);
        }
    }
    
    private void parseReport(DOM.XMLNode node ) {
        leaddata r = new leaddata();
        
        for (Dom.XMLNode child : node.getChildElements()) {
            if (child.getName() == 'FirstName') {
                r.FirstName= child.getText().trim();
            } else if (child.getName() == 'LastName') {
                r.Lastname= child.getText().trim();
            } else if (child.getName() == 'Phone') {
                r.Phone= child.getText().trim();
            }  else if (child.getName() == 'Email') {
                r.Email= child.getText().trim();
                
            }
        }
        reports.add(r);
        
    }
    
    public void doUpload() {
        
        DOM.Document doc = new DOM.Document();
        doc.load(String.valueOf(myfile.toString()));    
        parseReports(doc.getRootElement());
        
        
    }
    
}


XML Format:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<lead-data >
    <record>
        <FirstName>Veera</FirstName>
        <LastName>Vinnu</LastName>
        <Phone>8008997654</Phone>
        <Email>veerav@gmail.com</Email>
    </record>
    <record>
        <FirstName>Beera</FirstName>
        <LastName>Binnu</LastName>
        <Phone>9898989898</Phone>
        <Email>beeru@gmail.com</Email>
    </record>
    <record>
        <FirstName>Ceera</FirstName>
        <LastName>Cinnu</LastName>
        <Phone>8989898989</Phone>
        <Email>ceera@gmail.com</Email>
    </record>
    <record>
        <FirstName>Deera</FirstName>
        <LastName>Dinnu</LastName>
        <Phone>7878787878</Phone>
        <Email>deera@gmail.com</Email>
    </record>
</lead-data>
 
Raj VakatiRaj Vakati
Try this code
 
@istest
public class ImportAccountsXMLTest{
    public static testmethod void helptest(){
        String hresult = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
            '<lead-data >'+
            '<record>'+
            ' <Name>Veera</Name>'+
             ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <LastName>Vinnu</LastName>'+
            ' <Phone>8008997654</Phone>'+
            ' <Email>veerav@gmail.com</Email>'+
            ' </record>'+
            ' <record>'+
            ' <Name>Veera</Name>'+
            ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <FirstName>Beera</FirstName>'+
            ' <LastName>Binnu</LastName>'+
            '  <Phone>9898989898</Phone>'+
            ' <Email>beeru@gmail.com</Email>'+
            ' </record>'+
            ' <record>'+
            ' <Name>Veera</Name>'+
            ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <FirstName>Ceera</FirstName>'+
            ' <LastName>Cinnu</LastName>'+
            ' <Phone>8989898989</Phone>'+
            '  <Email>ceera@gmail.com</Email>'+
            ' </record>'+
            ' <record>'+
            ' <Name>Veera</Name>'+
            ' <AccountNumber>Veera</AccountNumber>'+
             ' <Industry>Finance</Industry>'+
             ' <Type>Veera</Type>'+
             ' <Description>Veera</Description>'+
            ' <FirstName>Veera</FirstName>'+
            ' <FirstName>Deera</FirstName>'+
            ' <LastName>Dinnu</LastName>'+
            ' <Phone>7878787878</Phone>'+
            ' <Email>deera@gmail.com</Email>'+
            ' </record></lead-data>';
        
        ImportAccountsXML imp = new ImportAccountsXML() ;
        imp.myfile  = Blob.valueOf(hresult) ; 
        imp.doUpload();
        
    }
}

 
This was selected as the best answer
Veerendar AellaVeerendar Aella
Hi Raj,

Awesome..! it worked fine, Thanks.