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
sudhakar.forcesudhakar.force 

"System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling out" Error in Test Class..

@isTest
private class GSDCVSCallTest
{
private static Integer count=0; 
public 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){
         GSDCSCCVSStub.ComplianceValidationServiceResponseType RateObj= new GSDCSCCVSStub.ComplianceValidationServiceResponseType(); 

        RateObj.applicationId='123456';
        RateObj.applicationPasswd='23456';
        GSDCSCCVSStub.authUserType AuthObj=new GSDCSCCVSStub.authUserType();
        authobj.null_x='abc';
        RateObj.authUser=authobj;
        
        RateObj.contentType='text';
        GSDCSCCVSStub.countryType ct= new GSDCSCCVSStub.countryType() ;
        ct.null_x='India';
        RateObj.country=ct;
        GSDCSCCVSStub.emailType et=new GSDCSCCVSStub.emailType();
        et.null_x='navuluri@hp.com';
        RateObj.email=et;
        GSDCSCCVSStub.httpSmUniversalIdType huid= new GSDCSCCVSStub.httpSmUniversalIdType();
        huid.null_x='345678';
        RateObj.httpSmUniversalId=huid;
        GSDCSCCVSStub.httpSmUserDnType hudt=new GSDCSCCVSStub.httpSmUserDnType();
        hudt.null_x='testtype';
        RateObj.httpSmUserDn=hudt;
        GSDCSCCVSStub.mockRequestType mrt=new GSDCSCCVSStub.mockRequestType();
        mrt.null_x='requesttest';
        RateObj.mockRequest=mrt;
                
        GSDCSCCVSStub.processLineItemResponseType plir=new GSDCSCCVSStub.processLineItemResponseType();
        plir.null_x='testProcess';
        
        GSDCSCCVSStub.requestOperationResponseType ror=new GSDCSCCVSStub.requestOperationResponseType();
        ror.null_x='testOPeration';
        
        GSDCSCCVSStub.CVSresponseCodeType rct=new GSDCSCCVSStub.CVSresponseCodeType();
        rct.null_x='testresponse';
        
        GSDCSCCVSStub.CVSresponseMessageType rmt=new GSDCSCCVSStub.CVSresponseMessageType();
        rmt.null_x='testMessage';
        
        GSDCSCCVSStub.errorMessageCodeType emc=new GSDCSCCVSStub.errorMessageCodeType();
        emc.null_x='testeMessage';
        
        GSDCSCCVSStub.errorMessageTextType emt=new GSDCSCCVSStub.errorMessageTextType ();
        emt.null_x='testMessagetext';    
        
        List<GSDCSCCVSStub.messageListType> mltl=new List<GSDCSCCVSStub.messageListType>();
        GSDCSCCVSStub.messageListType mlt=new GSDCSCCVSStub.messageListType();
        mlt.fraudMessageIdentifier='testfarudidentifier';
        mlt.fraudMessageText='testfarudmessage';
        mlt.fraudMessageTypeCode='testmessageType';
        mlt.id='testId';
        mlt.requestOperation='testrequestop';
        mlt.responseCode='testresponsemlt';
        mlt.responseMessage='testresponsemsgmlt';
        mltl.add(mlt);
        
                
        GSDCSCCVSStub.messageListElementType mle= new GSDCSCCVSStub.messageListElementType();
        mle.element=mlt;     
        List<GSDCSCCVSStub.messageListElementType> mlel= new List<GSDCSCCVSStub.messageListElementType>();
        mlel.add(mle); 
       
        List<GSDCSCCVSStub.elementType> ettl=new List<GSDCSCCVSStub.elementType>();
         GSDCSCCVSStub.elementType etts=new GSDCSCCVSStub.elementType();
        etts.attributeList='testattrribute';
        etts.checkTransactionId=987654;
        etts.conditionReferenceID='testCondition';
        etts.lineItem='testline';
        etts.validationResponseCode='testrequest';
        etts.validationResponseID='testvresponse';
        etts.processLineItem=plir;
        etts.requestOperation=ror;
        etts.responseCode=rct;
        etts.responseMessage=rmt;
        etts.errorMessageCode=emc;
        etts.errorMessageText=emt;
        etts.messageList=mlel;
        ettl.add(etts);
        
        GSDCSCCVSStub.inputAttributeListType ial=new GSDCSCCVSStub.inputAttributeListType ();
        ial.element=etts;
        
        GSDCSCCVSStub.payloadType plts=new GSDCSCCVSStub.payloadType();
        plts.element=etts;
        List<GSDCSCCVSStub.payloadType> pltl=new List<GSDCSCCVSStub.payloadType>();
         pltl.add(plts);
        RateObj.payload=pltl;
          
        etts.inputAttributeList=ial;
        
        RateObj.payload=pltl;       
       
        GSDCSCCVSStub.remoteUserType rut=new GSDCSCCVSStub.remoteUserType();
        rut.null_x='userremote';
        RateObj.remoteUser=rut;
        GSDCSCCVSStub.smUserType sut=new GSDCSCCVSStub.smUserType();
        sut.null_x='usersmUser';
        RateObj.smUser=sut;
        RateObj.statusCode=227;
        RateObj.statusDescription='Description';
        GSDCSCCVSStub.stubRequestType srt =new GSDCSCCVSStub.stubRequestType();
        srt.null_x='Reuest123';
        RateObj.stubRequest=srt;
        RateObj.testRequest='Reuest1234';
        RateObj.unitOfWorkId='workiD123';
          
            if(request instanceof GSDCSCCVSStub.rootType)
                response.put('response_x', RateObj);
            return;
        }
    }
    public static testMethod void MockTest(){
       // Insert custom setting for endpoint url and certificate.
       createCustomSetting();
        //String getCaseIdFromMethod=GetCaseID();
        Id Ids = Id.valueOf(GetCaseID());
        //String getTaskIdFromMethod=GetTaskID();
        Id Idss = Id.valueOf(GetCaseID());
        
        Test.startTest();
    GSDCSCCVSCheckForCaseWizard cvswizard=new GSDCSCCVSCheckForCaseWizard();    
    new GSDCSCCVSStub.attributeListType();
    new GSDCSCCVSStub.ComplianceValidationServiceResponseType();
    new GSDCSCCVSStub.messageListElementType();
    new GSDCSCCVSStub.messageListType();
    new GSDCSCCVSStub.Value0Type();
    new GSDCSCCVSStub.Value1Type();
    new GSDCSCCVSStub.processLineItemType();
    new GSDCSCCVSStub.requestOperationType();
    new GSDCSCCVSStub.responseCodeType();
    new GSDCSCCVSStub.responseMessageType();
    new GSDCSCCVSStub.Value2Type();
    cvswizard.transactionId = 'sfdc401';
    cvswizard.ResponseStatus = 'active';
    cvswizard.userRegion = 'AMS';
    cvswizard.UserCallCenter = 'US';
    cvswizard.endTime=system.Now(); 
    MonitorUtility monstub = new MonitorUtility();  

    List<GSDCSCCVSCheckForCaseWizard.CreateOrderOutputWrapperClass>  cvsCheckForCaseObj = new list<GSDCSCCVSCheckForCaseWizard.CreateOrderOutputWrapperClass>();  
    GSDCSCCVSCheckForCaseWizard.CreateOrderOutputWrapperClass CvsObj1=new GSDCSCCVSCheckForCaseWizard.CreateOrderOutputWrapperClass();
        CvsObj1.output1='test1';
        CvsObj1.output2='test2';
        CvsObj1.output3='test3';
        CvsObj1.output4='test4';
        CvsObj1.output5='test5';
        cvsCheckForCaseObj.add(CvsObj1);
        
    GSDCSCCVSStub.ComplianceValidationServiceResponseType cvsresponse= new GSDCSCCVSStub.ComplianceValidationServiceResponseType ();
    Test.setMock(WebServiceMock.class, new WebServiceMockImpl());       
    GSDCSCCVSStub.ComplianceValidationServiceEndpoint req= new GSDCSCCVSStub.ComplianceValidationServiceEndpoint();

                cvswizard.getCVSDetails(ids); 
                cvswizard.getCVSDetails(idss);  
                        
                Test.stopTest();  
    }
public static testmethod void method1case(){
        createCustomSetting();
        //String getCaseIdFromMethod=GetCaseID();
        Id Ids = Id.valueOf(GetCaseID());
        system.debug('**Ids*'+Ids);
        test.startTest();
        Test.setMock(WebServiceMock.class, new WebServiceMockImpl());
        GSDCSCCVSCheckForCaseWizard cvswizard=new GSDCSCCVSCheckForCaseWizard();      
        cvswizard.getCVSDetails(ids);               
        GSDCVSCall callCVsfromtest=new GSDCVSCall();        
        GSDCVSCall.invokeCVSTibcoService(ids);         
        test.stopTest();        
     }
     public static testmethod void method2task(){
        createCustomSetting();
        //String getCaseIdFromMethod=GetCaseID();
        Id Ids = Id.valueOf(GetCaseID());
        system.debug('**Ids*'+Ids);
        test.startTest();
        Test.setMock(WebServiceMock.class, new WebServiceMockImpl());
        GSDCSCCVSCheckForCaseWizard cvswizard=new GSDCSCCVSCheckForCaseWizard();        
        cvswizard.getCVSDetails(ids);      
        GSDCVSCall callCVsfromtest=new GSDCVSCall();      
        GSDCVSCall.callCVSFromEntitlement(ids);       
        test.stopTest();       
     }
        public static testmethod void method1task(){
       createCustomSetting();
        //String getTaskIdFromMethod=getTaskId();
        Id Idss = Id.valueOf(getTaskId());
        system.debug('**Ids*'+Idss);
        
            Test.setMock(WebServiceMock.class, new WebServiceMockImpl());
        GSDCSCCVSCheckForCaseWizard cvsCheckWizard=new GSDCSCCVSCheckForCaseWizard();      

            test.startTest();
        cvsCheckWizard.getCVSDetails(idss); 
        test.stopTest();
        
        GSDCVSCall callCVsfromtest=new GSDCVSCall();       
        GSDCVSCall.invokeCVSTibcoServiceforTask(idss);       
               
     }
     private static string GetCaseID(){

        DateTime getguarnteedatetime = datetime.now();
        DateTime latestServiceDateTime = getguarnteedatetime.addDays(6);
        
        ID recId= Schema.SObjectType.Case.RecordTypeInfosByName.get('GSD CSC Case Open').RecordTypeId;
        ID accRecTypeId = Schema.SObjectType.Account.RecordTypeInfosByName.get('Customer').RecordTypeId;
        Account acc = new Account( Name='HP', RecordTypeId = accRecTypeId);
        insert acc;
        
        System.debug('acc is inserted'+acc);
        
        Contact con = new Contact(AccountId=acc.Id, 
                                  FirstName ='Kamal',
                                  LastName ='Rao',
                                  Telephone_Access_Code__c='India +91',
                                  Email ='kamal.rao@hp.com');
        insert con;

        System.debug('con is inserted'+con);
        
        ID locRecTypeId = Schema.SObjectType.Location__c.RecordTypeInfosByName.get('Customer').RecordTypeId;
        Location__c loc = new Location__c(Account__c=acc.Id,
                                          City__c= 'Hyd',
                                          Country__c='India',
                                          name ='Sample Location');
        insert loc;
        
        System.debug('loc is inserted'+loc);
        Product_Hierarchy__c proHie = new Product_Hierarchy__c(PM_PRODUCT_SERIES_KY__c = 731200,
                                                               name ='Test2121',
                                                               PM_PRODUCT_SERIES_NM__c='646902-372',
                                                               PM_PRODUCT_NR__c='646902-371');
        insert proHie; 
        
        Asset ass = new Asset(AccountId=acc.id, 
                              ContactId = con.Id, 
                              Name='Sample Asset', 
                              HP_Asset_Type__c='PPS GSB Asset', 
                              Manufacturer__c = 'HP DesignJet (PL30)', 
                              HP_Product_Model__c ='30 - DesignJet HW',
                              HP_Product_Number__c = '646902-371',     
                              Location__c = loc .id,
                              SerialNumber='CN731200JN',
                              Product_Hierarchy__c =proHie.id,
                              IsCompetitorProduct=true);
        insert ass;
        
  Case newCase = new Case();
        newCase.AccountId=acc.id;
        newCase.ContactId=con.id;
        newCase.Location__c=loc.Id;
        newCase.AssetId = ass.Id;       
        newCase.Asset_Country_Name__c='INDIA';
        newCase.Electronic_Country__c='INDIA';
        newCase.Street__c='55/34,harinatha street';
        newCase.Street_Line_2__c='Rayachoty';
        newCase.City__c='Bangalore';
        newCase.Zip_Postal_Code__c='516269';
        newCase.SuppliedCompany='HP';
        newCase.RecordTypeId = recId;
        newCase.Product_Series_Text__c = '1213';
        newCase.Auto_Close__c=false;
        newCase.Status='Open';
        newCase.Origin='Customer Portal';
        newCase.ContactFirstName__c='test';
        newCase.ContactLastname__c='ln';
        newCase.SuppliedEmail='abc@hp.com';
        newCase.Product_Hierarchy__c=proHie.Id;                          
        newCase.Latest_Service_DateTime__c=latestServiceDateTime;
        newCase.Guaranteed_DateTime__c=getguarnteedatetime;
        newCase.Requestor_s_TimeZone__c='(GMT+00:00) Greenwich Mean Time (GMT)';
        newCase.Subject='Case Em3';
        newCase.Severity__c='Normal';
        newCase.Reason='ABP Support';
        newCase.Contract_Identifier__c='106372993480';
        newCase.Product_Number__c='VW668EC';
        newCase.Asset_Serial_Number__c='USE4543MEM';
        insert newCase;
        system.debug('Case From CaseMethod'+newCase);
        
       GSD_Compliance_Validation_System_Result__c cvsr=new GSD_Compliance_Validation_System_Result__c(Case__c=newCase.Id,                                                       
                                                                                                       Error_Type__c='HOLD',
                                                                                                       Error_Description__c='This is the Error',
                                                                                                       Transaction_Id__c='40879730',
                                                                                                       Condition_Level__c='Hold',
                                                                                                       Condition_Id__c='2684874',
                                                                                                       Call_Type__c='Case',
                                                                                                       status__c='Active' ); 
         insert cvsr;                                                                                         
        
        System.debug('newCase is inserted'+newCase);
        //String caseIdCopy=newCase.id;

        return newCase.id;

     }
     private static Id getTaskId(){
        
        CKSW__Region__c newRegion = new CKSW__Region__c(Name='Tamil Nadu'+count,Business_Center__c='xyz'+count);
        insert newRegion;
        CKSW__District__c newDistrict = new CKSW__District__c(Name='Alpha1'+count, CKSW__Region__c=newRegion.Id);
        insert newDistrict;
        Account acc = new Account(Name='test account1');
        insert acc;
        Contact con = new Contact(LastName='Smith1', AccountId=acc.Id);
        insert con;
        CKSW__WorkOrder__c workOrder= new CKSW__WorkOrder__c(CKSW__Account__c=acc.Id, CKSW__Contact__c=con.Id);
        insert workOrder;
        CKSW__TaskType__c repTaskType = new CKSW__TaskType__c(Name='Repair');
        insert repTaskType;
        CKSW__TaskType__c pickTaskType = new CKSW__TaskType__c(Name='PartPickup');
        insert pickTaskType;
        Asset AsetObj=new Asset(name='as1',HP_Product_Number__c='H4U87ES',HP_Asset_Type__c='PPS GSB Asset',Manufacturer__c='HP DesignJet (PL30)',
                               Status='Active',HP_Product_Model__c='30 - DesignJet HW',AccountId=acc.Id);
        insert AsetObj;
        BusinessHours newBusHours= new BusinessHours(Name='Default');
        Case newCase= new Case(status='open', BusinessHours=newBusHours,source_system_case_id__c='98000057131',
                               Severity__c='3-NORMAL', Description='Test Description', OwnerId=userinfo.getUserId(),Reason='ABP Support',NBD_SBD__c='SBD');
        newCase.Requestor_s_TimeZone__c='(GMT+00:00) British Standard Time (Europe/London)';
        newCase.AssetId=AsetObj.Id;
        newcase.Last_Service_Delivery_Time__c=system.now()+1;
        newCase.Mission_Critical__c=true;
        insert newCase;
        CKSW__Task__c newTask = new CKSW__Task__c(CKSW__Country__c='IN',
                                          case_number__c=newCase.Id,
                                          CKSW__WorkOrder__c=workOrder.Id,
                                          CKSW__District__c=newDistrict.Id,
                                          CKSW__Region__c= newRegion.Id,
                                          CKSW__City__c='Bangalore',
                                          CKSW__State__c='Karnataka', 
                                          CKSW__Street__c='ElectronicsCity',
                                          CKSW__Zip_Postal_Code__c='560100',
                                          CKSW__TaskType__c=repTaskType.Id,
                                          CKSW__Duration__c=10,Guaranteed_Fix_Time__c=Date.Today()+2,
                                          CKSW__EarlyStart__c=system.Now(),
                                          Customer_Requested_Start_Time__c='18:22:22',
                                          Customer_Requested_End_Time__c='24:23:22',
                                          CKSW__DueDate__c=system.Now()+1);
                                                    
                                     
                                                    
        insert newTask;
        GSD_Compliance_Validation_System_Result__c cvsr=new GSD_Compliance_Validation_System_Result__c(Case__c=newTask.case_number__c,                                                       
                                                                                                       Error_Type__c='HOLD',
                                                                                                       Error_Description__c='This is the Error',
                                                                                                       Transaction_Id__c='40879730',
                                                                                                       Condition_Level__c='Hold',
                                                                                                       Condition_Id__c='2684874',
                                                                                                       Call_Type__c='Onsite',
                                                                                                       status__c='Active' ); 
          insert cvsr; 
        

        return newTask.id;
       
     } 
     private static void createCustomSetting(){ 
                
        MonitorUtility objmonitorutility=new MonitorUtility();
        String Transactionids = objmonitorutility.beginMon('SF-ComplianceValidationSystem');
        User u = [select Id, username from User where Id = : UserInfo.getUserId()];
        
         GSD_CSC_Webservice_Endpoint_URL__c integrationData=new GSD_CSC_Webservice_Endpoint_URL__c();
        integrationData.Name='GSDCSCCVS';
        integrationData.Certificate__c='SFDC_Certificate';
        integrationData.Endpoint_URL__c='https://it-services-gw-csc-stg.itcs.hp.com/gw/hpit/egit/compliancevalidationforsales.stg';
        insert integrationData;  
        HPTriggerFrameworkObjectMapping__c trigFramework = new HPTriggerFrameworkObjectMapping__c();
        trigFramework.name = 'CKSW__Task__c';
        trigFramework.DispatcherCalssName__c = 'GSDTask';
        insert trigFramework;
        // inserting custom setting for workorder
        HPTriggerFrameworkObjectMapping__c workorder = new HPTriggerFrameworkObjectMapping__c();
        workorder.name = 'CKSW__WorkOrder__c';
        workorder.DispatcherCalssName__c = 'GSDWorkOrder';
        insert workorder;  
        
        HPTriggerFrameworkObjectMapping__c offercode = new HPTriggerFrameworkObjectMapping__c();
        offercode.name = 'GSD_Offer__c';
        offercode.DispatcherCalssName__c = 'GSDOffer';
        insert offercode;  
        GSD_CSC_Data_Value_Mapping__c MC = new GSD_CSC_Data_Value_Mapping__c(Name='Mission Critical', Value__c='Datacenter Hyperscale;Datacenter Care;Legacy MC');
        insert MC;   
    }
}
 

I am getting "System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling out" error in MockTest(),method1task() only,remaing two methods are passing and i am getting code coverage.

Kindly let me know why MockTest(),method1task() methods are failing.

 

Thanks,

Sudhakr

 

 

ShashankShashank (Salesforce Developers) 
Please check if this is happenning due to any of these known issues: https://success.salesforce.com/issues_index?keywords=uncommitted%20work