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
TerminusbotTerminusbot 

Test Class: WebServiceMock - Any advice on how to create a test class for the following callout?

Here is my class that I need to create a test class for: 
 
public class ConfirmAccount{
    public static Boolean AsyncFlag = false;


    @Future(callout=true)
    
    public static void confirmAccountName(Set<ID> ids) { 
             
        try {
            
            Map<ID, Account> mapAccnt = getAccounts(ids);
            
            //Initialize Sagitta Services 
            SagittaServices.Results sResult;
            SagittaServices.TransporterSoap port               = new SagittaServices.TransporterSoap();
            SagittaServices.AuthenticationHeader authHeader    = new             SagittaServices.AuthenticationHeader(); 
            SagittaServices.Post post                          = new SagittaServices.Post();
            
            for(Account accnt : mapAccnt.values()){
             

                //Creating instances for complex data types. Postal Code, Producers, Servicers, Categeory Codes
                SagittaServices.clientInsertMap accounts   = new SagittaServices.clientInsertMap();
                
                //Get Sagitta Code from Account Owner and Set Producer Code
                List<User> accountOwner = [Select Sagitta_User_Code__c From User where id =: accnt.ownerid];
                String prodCode = string.valueOf(accountOwner[0].Sagitta_User_Code__c);
                SagittaServices.ProducerCd prod  = new SagittaServices.ProducerCd();
                prod.Producer1Cd = prodCode;

                //Servicer Codes
                SagittaServices.ServicerCd serv  = new SagittaServices.ServicerCd();
                serv.Servicer1Cd = 'HO';
                
                //Category Codes
                String catCode1; 
                if (accnt.RecordType.Name == 'Business') {
                    catCode1 = 'COM';
                    } else {
                    catCode1 = 'PER';
                    }

                SagittaServices.CatCd catCode  = new SagittaServices.CatCd();
                catCode.Cat1Cd = catCode1; 

                //Postal Code
                SagittaServices.Post postCodes = new SagittaServices.Post(); 
                postCodes.PostalCode = accnt.BillingPostalCode;
                

                //TODO: Understand and set Sic Code
                //SagittaServices.SicCd sicCode = new SagittaServices.SicCd();
              

                //Generate Unique ID for GUID over to Sagitta 
                String genGuid = string.ValueOf(Datetime.now().formatGMT('yyyyMMddHHmmssSSS'));
                
                //Set Login Credentials to AuthHeader
                authHeader.Account    = 'xxxxx';
                authHeader.Username   = 'xxxxx';
                authHeader.Password   = 'xxxxx';
                authHeader.Serverpool = 'xxxxx';    
                port.AuthenticationHeader = authHeader;    


                //Client Insert Map
                accounts.Guid            = genGuid;
                accounts.ClientName      = accnt.Name; 
                accounts.DivisionNumber  = 01;
                accounts.Addr1           = accnt.BillingStreet;
                String Addr2;
                accounts.City            = accnt.BillingCity;       
                accounts.StateProvCd     = accnt.BillingState;      
                accounts.PostCd          = postCodes; 
           		accounts.Phone1Number    = long.ValueOf(accnt.Phone.replaceAll('\\D', ''));
                accounts.Phone2Number    = long.ValueOf(accnt.Phone_2__c.replaceAll('\\D', ''));
                accounts.FaxNumber       = accnt.Fax.replaceAll('\\D', '');   
                accounts.WebSiteLink     = accnt.Website;              
                accounts.ContactMethod   = accnt.Preferred_Method_of_Contact__c;
                accounts.EmailAddr       = accnt.Email__c;         
                accounts.ProducerCd      = prod; 
                accounts.ServicerCd      = serv; 
                accounts.CatCd           = catCode; 
                accounts.NetCommissionPct = accnt.Net_Commision__c;
                accounts.FEIN             = Integer.valueOf(accnt.FEIN__c);
                accounts.DateBusinessStarted   = accnt.Business_Start_Date__c;
                accounts.InspectionContact     = accnt.Inspection_Contact__c;
                accounts.InspectionPhoneNumber = long.ValueOf(accnt.Inspection_Phone_Number__c.replaceAll('\\D', ''));
                accounts.InspectionPhoneExtensionNumber = Integer.valueOf(accnt.Inspection_Phone_Extension_Number__c);
                accounts.AccountingContact              = accnt.Accounting_Contact__c;
                accounts.AccountingPhoneNumber          = long.ValueOf(accnt.Accounting_Phone_Number__c.replaceAll('\\D', ''));
                accounts.AccountingPhoneExtensionNumber = Integer.valueOf(accnt.Accounting_Phone_Extension_Number__c);
                accounts.Phone1ExtensionNumber          = Integer.valueOf(accnt.Phone_Ext__c);
                accounts.Phone2ExtensionNumber          = Integer.valueOf(accnt.Phone_2_Ext__c);

                
                //TODO: Add fields
                /*
                String ReferenceCd;  
                String CommentaryRemarkText; 
                String CreditTerms;
                String SourceCd;
                DateTime SourceDt;
                String LegalEntityCd;
                SagittaServices.BusinessNature BusinessNature;
                Srting SicCd;
                */
              
                //Execute Callout - Client Insert 
                sResult = port.clientInsert(accounts);               
                System.debug('Success:'+sResult.Success+'SagittaId:'+sResult.SagittaId+'SagittaCode:'+sResult.SagittaCode+'Errors:'); 

                //If Succesful, update Account record with Sagitta ID and Client Code 
                If (sResult.SagittaId != null & sResult.SagittaCode !=null) {

                    accnt.SagittaId__c = string.ValueOf(sResult.SagittaId); 
                    accnt.Client_Code__c = sResult.SagittaCode; 
                    //String BillToCd;
                    update accnt; 


                }
            
            }
           
            AsyncFlag = true;
            
        } catch (Exception ex) {
            System.debug('ERROR: '+ ex);
        }
    }
    


   

    private static Map<Id, Account> getAccounts(Set<ID> ids){
        Map<Id, Account> accounts;
        accounts = new Map<ID, Account>([Select ID, Name,BillingStreet,BillingCity,BillingState,FEIN__c, BillingPostalCode,Phone,Phone_2__c,Email__c,Fax,Website,
                                         Billing_Payment_Type__c,Sic,Preferred_Method_of_Contact__c,Net_Commision__c,Business_Start_Date__c,Inspection_Contact__c,
                                         Inspection_Phone_Number__c,Accounting_Contact__c,Accounting_Phone_Number__c, Accounting_Phone_Extension_Number__c,Inspection_Phone_Extension_Number__c,Phone_2_Ext__c,
                                         Phone_Ext__c,  ownerid,RecordType.Name
                                         
                                         from Account 
                                         where ID in :ids 
                                         and recordtypeid in (Select Id from RecordType where sobjecttype = 'Account')]);
        System.debug('Account Map Private' + accounts);
        return accounts;
    }
    
  
    
    
}