• Raffus
  • NEWBIE
  • 30 Points
  • Member since 2022

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 18
    Questions
  • 20
    Replies
I want to show sObjects in a custom picklist like in Combobox in LWC- I know how to do with single object but am not able to understand how to fetch sObjects. Afer selecting that sOject - I need to display the details for that object.
  • December 01, 2022
  • Like
  • 0
User-added imageThe complete code 
webservice static string changeMultipleCases_Owner(list<string> listCaseIds){
        string result = 'Success';
        list<Case> lstAcceptCases = new list<Case>();
        set<Id> setGroupIds = new set<Id>();
        for(Case objCs:[Select Id,Owner_Name__c,OwnerId,Status,Case_Queue_Name__c from Case where Id IN:listCaseIds AND (Program_Type__c=null OR Program_Type__c='Customer Pulse')]){
            if(string.valueof(objCs.OwnerId).startswith('00G')){
                lstAcceptCases.add(objCs);
                setGroupIds.add(objCs.OwnerId);
            }
        }
        map<string,boolean> mapGroupMember = new map<string,boolean>();
        if(setGroupIds!=null && setGroupIds.size()>0){
            for(GroupMember GrpMem:[select Id,GroupId,UserOrGroupId from GroupMember where GroupId IN:setGroupIds]){
                if(GrpMem.UserOrGroupId==userinfo.getuserid()){
                    mapGroupMember.put(GrpMem.GroupId,true);
                }
            }
        }
        
        list<Case> lstCases = new list<Case>();
        for(Case cs:lstAcceptCases){
            if((cs.Case_Queue_Name__c!=null && mapGroupMember.get(cs.OwnerId)!=null) || system.test.isRunningTest()){
                Case objCS = new Case(Id=cs.Id);
                objCS.OwnerId = userInfo.getUserId();
                lstCases.add(objCS);
            }
        }
        try{
            CaseUtilityCls.Skip_Staus_Validation = true;
            if(lstCases!=null && lstCases.size()>0)
                update lstCases;
        }catch(Exception e){
            result = e.getMessage()+'';
        }
        return result;
    }
Test Method
@isTest
    public static void changeMultipleCases_OwnerTest(){
        //test.startTest();
            Survey_Detail__c sd = new Survey_Detail__c();
            list<String> fieldList = new list<string>();
            map<String,Schema.SObjectField> fieldMap = Schema.getGlobalDescribe().get('Survey_Detail__c').getDescribe().fields.getMap();
            if(fieldMap != null){
                for(Schema.SObjectField f : fieldMap.values()){
                    Schema.DescribeFieldResult fd = f.getDescribe();
                    if(fd.isAccessible() && fd.isCustom() && fd.isCreateable()){
                        string strDataType = fd.getType()+'';
                        if(strDataType=='INTEGER' || strDataType=='DOUBLE')
                            sd.put(fd.getName(),3);
                        else if(strDataType=='DATE')
                            sd.put(fd.getName(),system.today());
                        else if(strDataType=='DATETIME') 
                            sd.put(fd.getName(),system.now());
                        else if(strDataType=='BOOLEAN')
                            sd.put(fd.getName(),true);
                        else if(strDataType=='STRING' || strDataType=='PICKLIST')
                            sd.put(fd.getName(),'123214');
                    }
                }
                sd.put('Email__c','leeba@nsiglobal.com');
                sd.put('Cinema_name__c','The Beach');
                sd.put('Brand__c',null);
                sd.put('CommentsBackup__c','Test Comments');
                sd.put('Location_Code__c',null);
                sd.put('Share_your_contact_details__c', 'No');
                //sd.put('Location_Code__c','Test Location');
                sd.Response_Id__c = '12345'; 
                insert sd;
                }
                
                Id rtid_acnt = Schema.SObjectType.Account.getRecordTypeInfosByName().get('Person Account').getRecordTypeId();
                Account acc = new Account();
                acc.firstname = 'test';
                acc.lastname = 'test';
                acc.recordtypeid = rtid_acnt;
                acc.VIP__c = true;
                acc.PersonMobilePhone = '+965';
                acc.U_by_Emaar_Tier__c = 'GLD';
                insert acc;
                
                Contact con = new Contact();
                con.firstname = 'test';
                con.lastname = 'test';
                con.mobilephone = '+965';
                con.email = 'test@test.com';
                //con.AccountId = acc.Id;
                insert con;
        
                // Opportunity Create.
                Opportunity objOpp = new Opportunity();
                objOpp.Name = 'Test Opp Name';
                objOpp.StageName = 'Qualification';
                objOpp.amount = 5000;
                objOpp.CloseDate = System.today();
                objOpp.Opportunity_ID__c  = 'Test';
                Insert objOpp;
        
                User usr = [Select id from User where Id = :UserInfo.getUserId()];
                System.RunAs(usr){
                     Test.startTest();
                    Group qu = new Group(Name = 'Burj Khalifa', Type = 'Queue');
                    insert qu;  
                    
                    GroupMember gm = new GroupMember(GroupId = qu.Id, UserOrGroupId = UserInfo.getUserId());
                    insert gm ; 
                
                Survey__c sur = new Survey__c();
                sur.Account__c = acc.Id;
                sur.Location__c = 'Burj Club';
                sur.Outbound_Call_Survey__c = false;
                sur.Survey_Country__c = 'UAE';
                sur.Division__c = 'Emaar Properties';
                sur.Name = 'test1';
                sur.Person_Email__c = 'a@atest.com';
                sur.Survey_Response_ID__c = sd.Response_Id__c;
                sur.Opportunity_ID__c = objOpp.Id;
                insert sur;
        
                Case objcs3 = new Case();
                    objcs3.AccountId = sur.Account__c;
                    objcs3.Priority = 'High';
                    objcs3.Survey__c = sur.Id;
                    objcs3.Senior_Management_First_Name_c__c = 'test';
                    objcs3.Senior_Management_Last_Name_c__c = 'test';
                    objcs3.Customer_s_Comments__c  = 'test';
                    objcs3.Customer_s_Suggestions__c  = 'test';
                    objcs3.Senior_Management_Comments__c  = 'test';
                    objcs3.Status = 'In Progress';
        			objcs3.Case_Queue_Name__c = qu.Name;
                    objcs3.contactId = con.Id;
        			
                    objcs3.Case_Queue_Name__c  = qu.Id;
                    CaseUtilityCls.Skip_Staus_Validation = true;
                    objcs3.Category__c  = 'Technical Services';
                    objcs3.Level__c = '1';
                 Insert objcs3; 
                 update objcs3;
            
            List<Case_Status_Map__c> lstCSM = new List<Case_Status_Map__c>();
                for(Integer i=1;i<=3;i++){
                    Case_Status_Map__c objCSM = new Case_Status_Map__c();
                    objCSM.Name = 'test2'+i;
                    objCSM.Level__c = 'L'+i;
                    if(i==1)
                        objCSM.Queue_Name__c = 'Burj Khalifa Team Lead';
                    if(i==2)
                        objCSM.Queue_Name__c = 'Burj Khalifa';
                    if(i==3)
                        objCSM.Queue_Name__c = 'Burj Club GM';
                    lstCSM.add(objCSM);
                } 
                
                if(lstCSM.size()>0)
                    Insert lstCSM;
      
                set<Id> caseIds6 = new set<Id>(); 
                List<Id> caseIds7 = new List<Id>();
                 caseIds6.add(objcs3.id);
                 caseIds7.add(objcs3.Id); 
        
                
                set<string> caseIds8 = new set<string>(); 
                caseIds8.add(objcs3.id);
        		CaseUtilityCls.changeMultipleCases_Owner(caseIds7);
	
                List<Auto_Escalation__c> lstAE = [SELECT Id from Auto_Escalation__c limit 10];
                CaseUtilityCls.Auto_Escalate(objcs3,lstAE,'Burj Club GM'); 
                
        		System.debug('userinfo id ' + UserInfo.getUserId());
                objcs3.Customer_Comments__c  = 'Test comments';
                update objcs3;
                //test.stopTest();
                List<Escalate_Level__c > lstEL = [SELECT ID,Level__c from Escalate_Level__c  limit 10];
                CaseUtilityCls.EscalateCase(objcs3.Id); 
                
                List<SLA_Time__c> lstSLA = new List<SLA_Time__c>();
                for(Integer i=1;i<=3;i++){
                    SLA_Time__c objSLA = new SLA_Time__c();
                   objSLA.Name = 'test'+i;
                   objSLA.Priority__c ='High'; 
                   if(i==1)
                    objSLA.Queue_Name__c = 'Burj Khalifa Team Lead';
                   if(i==2)
                    objSLA.Queue_Name__c = 'Burj Khalifa';
                   if(i==3)
                    objSLA.Queue_Name__c = 'Burj Club GM';
                    lstSLA.add(objSLA);
                } 
                
                if(lstSLA.size()>0) 
                    Insert lstSLA;
                    
                caseIds8 = new set<String>();
                caseIds8.add(objcs3.Id); 
                     test.stopTest();
    }
       // test.startTest();
                
        //test.stopTest();
    }

 
  • October 26, 2022
  • Like
  • 0
This line is not fetching any data 
list<Escalate_Level__c> escalationQueueList = Escalate_Level__c.getAll().values();
Because of that, this code is not covering
Code not covered
for(Escalate_Level__c escalateQueue:escalationQueueList){
                 boolean matchFound = false; 
                 system.debug('escalateQueue.Escalate_Category__c'+escalateQueue.Escalate_Category__c);
              if(escalateQueue.Level__c==cs.Level__c  && escalateQueue.Queue_Name__c==cs.Case_Queue_Name__c ){
                    if(escalateQueue.Project_Name__c!=null && escalateQueue.Escalate_Category__c == null){
                       matchFound = (escalateQueue.Project_Name__c == cs.Project_Name__c);
                       
                   }  system.debug('^^^match found1 '+matchFound);
                   if(!matchFound && escalateQueue.Escalate_Category__c != null && escalateQueue.Project_Name__c!=null){
                      matchFound =(escalateQueue.Escalate_Category__c == cs.Escalation_Category__c && escalateQueue.Project_Name__c == cs.Project_Name__c);
                      
                   }
                   system.debug('^^^match found2 '+matchFound);
                   if(!matchFound && escalateQueue.Escalate_Category__c != null && escalateQueue.Project_Name__c==null){
                      matchFound =(escalateQueue.Escalate_Category__c == cs.Escalation_Category__c &&  escalateQueue.Queue_Name__c == cs.Case_Queue_Name__c);
                    
                   }
                    system.debug('^^^match found3 '+matchFound);
                    if(!matchFound && escalateQueue.Location__c==null && escalateQueue.Category__c==null && escalateQueue.Escalate_Category__c == null){
                         matchFound = (escalateQueue.Brand__c == cs.Brand__c && escalateQueue.Division__c == cs.Division__c && escalateQueue.Queue_Name__c == cs.Case_Queue_Name__c);
                       
                   }
                     system.debug('^^^match found4 '+matchFound);
                    if(!matchFound && escalateQueue.Location__c!=null && escalateQueue.Category__c==null && escalateQueue.Escalate_Category__c == null){
                        matchFound = (escalateQueue.Brand__c == cs.Brand__c && escalateQueue.Division__c == cs.Division__c && escalateQueue.Queue_Name__c == cs.Case_Queue_Name__c && escalateQueue.Location__c == cs.Location_CS__c);
                        
                    }
A test method that I have written
static testmethod void myUnitEscalateCaseTest(){
        test.startTest();
            Survey_Detail__c sd = new Survey_Detail__c();
            list<String> fieldList = new list<string>();
            map<String,Schema.SObjectField> fieldMap = Schema.getGlobalDescribe().get('Survey_Detail__c').getDescribe().fields.getMap();
            if(fieldMap != null){
                for(Schema.SObjectField f : fieldMap.values()){
                    Schema.DescribeFieldResult fd = f.getDescribe();
                    if(fd.isAccessible() && fd.isCustom() && fd.isCreateable()){
                        string strDataType = fd.getType()+'';
                        if(strDataType=='INTEGER' || strDataType=='DOUBLE')
                            sd.put(fd.getName(),3);
                        else if(strDataType=='DATE')
                            sd.put(fd.getName(),system.today());
                        else if(strDataType=='DATETIME') 
                            sd.put(fd.getName(),system.now());
                        else if(strDataType=='BOOLEAN')
                            sd.put(fd.getName(),true);
                        else if(strDataType=='STRING' || strDataType=='PICKLIST')
                            sd.put(fd.getName(),'123214');
                    }
                }
                sd.put('Email__c','leeba@nsiglobal.com');
                sd.put('Cinema_name__c','The Beach');
                sd.put('Brand__c',null);
                sd.put('CommentsBackup__c','Test Comments');
                sd.put('Location_Code__c',null);
                sd.put('Share_your_contact_details__c', 'No');
                //sd.put('Location_Code__c','Test Location');
                sd.Response_Id__c = '12345'; 
                insert sd;
                }
                
                Id rtid_acnt = Schema.SObjectType.Account.getRecordTypeInfosByName().get('Person Account').getRecordTypeId();
                Account acc = new Account();
                acc.firstname = 'test';
                acc.lastname = 'test';
                acc.recordtypeid = rtid_acnt;
                acc.VIP__c = true;
                acc.PersonMobilePhone = '+965';
                acc.U_by_Emaar_Tier__c = 'GLD';
                insert acc;
                
                Contact con = new Contact();
                con.firstname = 'test';
                con.lastname = 'test';
                con.mobilephone = '+965';
                con.email = 'test@test.com';
                //con.AccountId = acc.Id;
                insert con;
        
                // Opportunity Create.
                Opportunity objOpp = new Opportunity();
                objOpp.Name = 'Test Opp Name';
                objOpp.StageName = 'Qualification';
                objOpp.amount = 5000;
                objOpp.CloseDate = System.today();
                objOpp.Opportunity_ID__c  = 'Test';
                Insert objOpp;
                
                Survey__c sur = new Survey__c();
                sur.Account__c = acc.Id;
                sur.Location__c = 'Burj Club';
                sur.Outbound_Call_Survey__c = false;
                sur.Survey_Country__c = 'UAE';
                sur.Division__c = 'Emaar Properties';
                sur.Name = 'test1';
                sur.Person_Email__c = 'a@atest.com';
                sur.Survey_Response_ID__c = sd.Response_Id__c;
                sur.Opportunity_ID__c = objOpp.Id;
                insert sur;
                
                Case objcs3 = new Case();
                    objcs3.AccountId = sur.Account__c;
                    objcs3.Priority = 'High';
                    objcs3.Survey__c = sur.Id;
                    objcs3.Senior_Management_First_Name_c__c = 'test';
                    objcs3.Senior_Management_Last_Name_c__c = 'test';
                    objcs3.Customer_s_Comments__c  = 'test';
                    objcs3.Customer_s_Suggestions__c  = 'test';
                    objcs3.Senior_Management_Comments__c  = 'test';
                    objcs3.Status = 'In Progress'; 
                    objcs3.contactId = con.Id;
            		objcs3.Level__c = 'Test';
            		objcs3.Case_Queue_Name__c = 'Test';
                    objcs3.Case_Queue_Name__c  = ' GM';
                    CaseUtilityCls.Skip_Staus_Validation = true;
                    objcs3.Category__c  = 'Technical Services';
                 Insert objcs3; 
                 update objcs3;
            
            List<Case_Status_Map__c> lstCSM = new List<Case_Status_Map__c>();
                for(Integer i=1;i<=3;i++){
                    Case_Status_Map__c objCSM = new Case_Status_Map__c();
                    objCSM.Name = 'test2'+i;
                    objCSM.Level__c = 'L'+i;
                    if(i==1)
                        objCSM.Queue_Name__c =  Team Lead';
                    if(i==2)
                        objCSM.Queue_Name__c = 'Khalifa';
                    if(i==3)
                        objCSM.Queue_Name__c = 'GM';
                    lstCSM.add(objCSM);
                } 
                
        if(lstCSM.size()>0)
            Insert lstCSM;
        	
            
            List<Escalate_Level__c> objElList = new List<Escalate_Level__c>();
            for(Integer i=1;i<=3;i++){
                Escalate_Level__c objSLA =  new Escalate_Level__c();
                objSLA.Name = 'test'+i;
                if(i==1)
                    objSLA.Brand__c ='High';
                    objSLA.Category__c = 'Test';
                    objSLA.Division__c = 'Test';
                    objSLA.Escalate_Category__c = NULL;
                    objSLA.Level__c = 'Test';
                    objSLA.Location__c = 'Test';
                    objSLA.Next_Escalation_Queue__c = 'Test';
                    objSLA.Next_Level__c = 'Test';
                    objSLA.Project_Name__c = 'Test';
                    objSLA.Queue_Name__c = 'Team Lead'; 
                if(i==2)
                    objSLA.Brand__c ='High';
                    objSLA.Category__c = 'Test';
                    objSLA.Division__c = 'Test';
                    objSLA.Escalate_Category__c = NULL;
                    objSLA.Level__c = 'Test';
                    objSLA.Location__c = 'Test';
                    objSLA.Next_Escalation_Queue__c = 'Test';
                    objSLA.Next_Level__c = 'Test';
                    objSLA.Project_Name__c = 'Test';
                    objSLA.Queue_Name__c = 'Khalifa'; 
                if(i==3)
                    objSLA.Brand__c ='High';
                    objSLA.Division__c = 'Test';
                    objSLA.Escalate_Category__c = NULL;
                    objSLA.Level__c = 'Test';
                    objSLA.Location__c = 'Test';
                    objSLA.Next_Escalation_Queue__c = 'Test';
                    objSLA.Next_Level__c = 'Test';
                    objSLA.Project_Name__c = 'Test';
                    objSLA.Queue_Name__c = 'Club GM';
                	objElList.add(objSLA);
                    }
            insert objElList;
            
                Set<Id> caseIds6 = new set<Id>(); 
                 caseIds6.add(objcs3.id);
                CaseUtilityCls.UpdateCaseStatus(caseIds6);  
                
                CaseUtilityCls.EscalateCase(objcs3.Id); 
                CaseUtilityCls.changeCaseOwner(objcs3.Id); 
        test.stopTest();
    }


 
  • October 26, 2022
  • Like
  • 0
This is method
public static void carriersBMLLUpdatecreateCaseComments(List<Enrollment__c> newList,Map<Id,Enrollment__c> oldMap)
    {
        Set<Id> enrollmentIds = new Set<Id>();
        Map<Id, Enrollment__c> newMap = new Map<Id, Enrollment__c>(newList);
        for(Enrollment__c enrollment: newList)
        {
            //on update
            if(oldMap!=null)
            {
                if(enrollment.Enrollment_Method__c == Label.AFocus_ThirdParty_PickVal){
                    if(enrollment.Carriers_BMLL_will_not_be_the_GA__c !=null && 
                       enrollment.Carriers_BMLL_will_not_be_the_GA__c != oldMap.get(enrollment.Id).Carriers_BMLL_will_not_be_the_GA__c)
                    {
                        enrollmentIds.add(enrollment.Id);
                    }   
                }
            }
            //on insert
            else if(oldMap==null){
                if(enrollment.Enrollment_Method__c == Label.AFocus_ThirdParty_PickVal){
                    if(enrollment.Carriers_BMLL_will_not_be_the_GA__c == null || enrollment.Carriers_BMLL_will_not_be_the_GA__c =='')
                        
                    {
                        enrollmentIds.add(enrollment.Id);
                        
                    } 
                    
                }
            }
        }
        System.debug('enrollmentIds are'+enrollmentIds);
        List<Case> enrollmentCases = new  List<Case>();
        List<CaseComment> CaseCommentsList = new List<CaseComment>();
        
        if(enrollmentIds.size()>0)
        {
            enrollmentCases = [Select Id,Enrollment__c,Enrollment__r.Carriers_BMLL_will_not_be_the_GA__c,Enrollment__r.Enrollment_Method__c from Case where Enrollment__c IN :enrollmentIds AND Recordtype.Name = :Label.AFocus_New_Business_Case];
            if(enrollmentCases.size()>0)
            {
                for(Case enrollemtCase:enrollmentCases)  {
                    CaseComment caseComment = new CaseComment();
                    caseComment.ParentId = enrollemtCase.Id;
                    caseComment.IsPublished = false;
                    caseComment.CommentBody = 'ATTN:New Business Team Carriers BMLL will not be the GA:['+ enrollemtCase.Enrollment__r.Carriers_BMLL_will_not_be_the_GA__c +'] When Services are created for this Carriers add $0 in SCA PEPM field on each Service';
                    CaseCommentsList.add(caseComment);
                    
                    
                }
            }
        }
        System.debug('CaseCommentsList is :' + CaseCommentsList);
        try{
            if(!CaseCommentsList.isEmpty()){
                insert CaseCommentsList;
            }
        }
        
        catch(Exception ex){
            // ExceptionHandlerController.logErrorsInboundAPI('Sync BenAdminBuildCase Notes with Enrollment Notes','AFocus_EnrollmentTriggerHandler','updatecaseNotesFromEnrollmentNotes',ex.getMessage(),'Case ids to be updated' +caseUpdatedList,'Exception occurred during updating status',UserInfo.getUserId(),'Error');
            ExceptionHandlerController.logErrorsInboundAPI('Create Case Comments when Carriers_BMLL_will_not_be_the_GA__c is updated','AFocus_EnrollmentTriggerHandler','carriersBMLLUpdatecreateCaseComments',ex.getMessage(),'Carriers_BMLL_will_not_be_the_GA__c to be updated' +CaseCommentsList,'Exception occurred during updating Carriers_BMLL_will_not_be_the_GA__c',UserInfo.getUserId(),'Error');
            
        }
    }

This mine test method
@isTest 
    static void carriersBMLLUpdatecreateCaseCommentsTest(){
        Set<Id> enrollmentIds = new Set<Id>();
        
        string Id =[SELECT id from RecordType where Name ='Agency'].Id;
        Account Acc1 = new Account();
        Acc1.Name = 'Test Account forth';
        Acc1.Email__c='testtest@gmail.com';
        Acc1.Source_System__c ='BenefitPoint';
        Acc1.Technology_Adoption__c ='Low - Not Open';
        Acc1.RecordTypeId = Id;
        insert Acc1;
       
        System.debug('Account info: ' + Acc1);
        
        List<Enrollment__c> enlist = new List<Enrollment__c>();
        Enrollment__c en1 = new Enrollment__c();
        
        en1.Broker__c= Acc1.id;
        en1.Status__c='Not Submitted';
        en1.Notes__c='Test Notes';
        en1.Plan_Selection_Complete__c= true;
        en1.Street__c = 'eStreet';
        en1.city__c = 'New york';
        en1.State__c = 'NY';
        en1.Zip__c = '48979842';
        en1.Effective_Date__c = system.today();
        en1.Client_Type_Status__c = 'Group';
        en1.EIN__c = '281764';
        en1.Phone__c = '(555) 123-4567';
        en1.Full_Time_Employees__c = 80;
        en1.Enrollment_Method__c='Third-party';
        en1.Carriers_BMLL_will_not_be_the_GA__c ='test';
        insert en1;
        enlist.add(en1);
        //insert enlist;
        System.debug('Enrollment1 info: ' + en1);
        enrollmentIds.add(en1.Id);
        
        Map<Id,Enrollment__c> eListMap = new Map<Id,Enrollment__c>();
        eListMap.put(en1.Id,en1);
        system.debug('elistMap '+ eListMap);
        
        Id RTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Benefit New Business / Renewal').getRecordTypeId();
        case caseRec=new case();
        caseRec.RecordTypeId = RTypeId;
        caseRec.Origin='Sales Escalation';
        caseRec.SuppliedEmail='test1234@test1234.com';
        caseRec.Reason='APS';
        caseRec.subject='Installation Problem';
        //caseRec.AccountId=accGpRec.id;
        caseRec.Status = 'New';
        caseRec.Approval_Status__c = 'Not Submitted';
        //caseRec.NBA_Rep__c = UserInfo.getUserId();
        caseRec.Enrollment__c = en1.Id;
        insert caseRec;
        System.debug('Case1 info: ' + caseRec);
        
        CaseComment comment1 = new CaseComment();
        comment1.ParentId = caseRec.Id;
        comment1.CommentBody = 'Case record 1 comment';
        comment1.IsPublished = TRUE;
        insert comment1;
        
        System.debug('Case comment ' + comment1);
        
        AFocus_EnrollmentTriggerHandler.carriersBMLLUpdatecreateCaseComments(enlist,eListMap);
        
    }

​​​​​​User-added image
  • October 01, 2022
  • Like
  • 0
public void onLoad() {
        Map<String, String> mapParams = Apexpages.currentPage().getParameters();
       
        if (!mapParams.isEmpty()){
            if (mapParams.containsKey('emailid')) {
                system.debug('inside decrypt---');
                String emailidApp = FSLCryptoHelper.getInstance().decryptOmni(mapParams.get('emailid'));
                emailid = emailidApp.toLowercase();
                system.debug('inside decrypt---'+emailid);
            }
            if (mapParams.containsKey('empid')) {
                system.debug('inside decrypt empid---');
                empid = FSLCryptoHelper.getInstance().decryptOmni(mapParams.get('empid'));
                system.debug('inside decrypt emailid---'+emailid);
            }
            if (mapParams.containsKey('jwt-token')) {
                system.debug('inside decrypt jwttoken---');
                jwttoken = FSLCryptoHelper.getInstance().decryptOmni(mapParams.get('jwt-token'));
                system.debug('inside decrypt jwttoken---'+jwttoken);
            }
           
        }


My test class
 
 @isTest
    static void onLoadTest(){
            PageReference testPage = Page.OmniAppPage;
            Test.setCurrentPage(testPage);
            testPage.getParameters().put('emailid', 'test@test.com');
            testPage.getParameters().put('empid', '1233');
            testPage.getParameters().put('jwt-token', '1233');
           
            OmniAppController oac = new OmniAppController();        
            oac.onLoad();
    }
FSLCryptoHelper.decryptOmni method
 
public String decryptOmni(String dataToDecrypt) {
    	System.debug('VV Before dataToDecrypt -->'+dataToDecrypt);
        String decryptedData = '';
        if (dataToDecrypt != null) {
            dataToDecrypt = dataToDecrypt.replaceAll(' ', '+');
            Blob data = EncodingUtil.convertFromHex(dataToDecrypt);
            System.debug('VV before dataToDecrypt -->'+dataToDecrypt);
            Blob decryptedBlob = Crypto.decrypt(ALGORITHM_AES256, ONEAPP_KEY, ONEAPP_IV, data);
            System.debug('VV After decryptedBlob -->'+decryptedBlob);
            decryptedData = decryptedBlob.toString();
            System.debug('VV After decryptedData -->'+decryptedData);
        }
        return decryptedData;
    }
Getting this error - 
"System.InvalidParameterValueException: input string must be an even number of characters long, but was 13"

On line - Blob data = EncodingUtil.convertFromHex(dataToDecrypt); 
 
  • September 15, 2022
  • Like
  • 0
I want to coverage for this method-
 
@future (callout=true)
    public static void fetchDetailsAndUpdateOmniCustomer(String emailid, String empid, String jwttoken) {  //
        Omni_App_Customer__c customer = [SELECT Id,Name, Customer_Last_Name__c, Customer_Email__c, Customer_Photo_Base64__c, Customer_Emp_ID__c, Customer_First_Name__c, Customer_Name__c, Party_Id__c FROM Omni_App_Customer__c WHERE Customer_Email__c= : emailid];
        System.debug('customers getOrCreateCustomer' + customer);

        String employeeDetails = getDataFromEmployee(empid, emailid, jwttoken);//String 
        Map<String, Object> employeeAllData = (Map<String, Object>)JSON.deserializeUntyped(employeeDetails);
        Map<String, Object> empCardDetails = (Map<String, Object>)employeeAllData.get('EmpCardDetailsOutputParameters');
        System.debug('customers empCardDetails' + empCardDetails);
        If(empCardDetails != null){
            Map<String, Object> p_refcur = (Map<String, Object>)empCardDetails.get('P_REFCUR');
            System.debug('customers p_refcur' + p_refcur);
            If(p_refcur != null){
                Map<String, Object> row = (Map<String, Object>)p_refcur.get('Row');
                System.debug('customers row' + row);
                List<Object> employee = (List<Object>)row.get('Column');
                for(object obj : employee){
                    String employeeData = JSON.serialize(obj);
                    if(employeeData.contains('FIRST_NAME')){
                    customer.Customer_First_Name__c = getFieldValue(employeeData);
                    customer.Name = customer.Customer_First_Name__c;
                    }else if(employeeData.contains('LAST_NAME')){
                        customer.Customer_Last_Name__c = getFieldValue(employeeData);
                        customer.Name = customer.Name +' '+customer.Customer_Last_Name__c;
                    }else if(employeeData.contains('EMPLOYEE_PHOTO')){
                    String empPhoto = getFieldValue(employeeData);
                     if(String.isNotBlank(empPhoto)){
                        String empPhotoFinal =  empPhoto.replaceAll('\n', '');
                        customer.Customer_Photo_Base64__c = 'data:image/jpeg;base64,'+empPhotoFinal;
                     }
                    }else if(employeeData.contains('DEPARTMENT')){
                    customer.Customer_Department__c = getFieldValue(employeeData);
                    } 
                }
            }
        }
        customer.recalculateFormulas();
        System.debug('before upsert FromFuture customer ' + customer);
        upsert customer;
    }

My written test class but not able to put data for map
@IsTest
    public static void fetchDetailsAndUpdaterandCustomerTest(){
        
        // String employeeDetails = '{"emailid":["emailid":"test@g.com"]}';
        // randAppController.saveCustomerInfo(jsoninput,'12133','09922982822');
        rand_App_Customer__c randCustomer = new rand_App_Customer__c();
        randCustomer.Customer_ID__c = '1234567';
        randCustomer.Customer_First_Name__c = 'Test rand';
        randCustomer.Customer_Last_Name__c = 'Customer';
        randCustomer.Party_Id__c = '8545254752';
        randCustomer.Customer_Mobile__c = '8545254752';
        randCustomer.Customer_Email__c = 'tannow@tan.ae';
        randCustomer.Customer_Emp_ID__c = '012081';
        randCustomer.Customer_Points__c = 150;
        randCustomer.Customer_Department__c = 'EMG - Leasing';
        Insert randCustomer;
        
        
        String jwttoken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzdWJqZWN0LXN1YmplY3QiLCJhdWQiOlsiYXVkaWVuY2UxIiwiYXVkaWVuY2UyIl0sImlzcyI6InVybjpcL1wvYXBpZ2VlLWVkZ2UtSldULXBvbGljeS10ZXN0IiwiYWZmaWxpYXRlIjoiZmFsc2UiLCJleHAiOjE2NjIxODUwMTUsInVzZXJpZCI6IkVtYWFybm93IiwiaWF0IjoxNjYyMTEzMDE1LCJqdGkiOiJjYWNkN2MxZC02NDY5LTQyMjUtYmU5ZC0yZDExNmFkMjk0MGUiLCJ1c2VybmFtZSI6IkVtYWFybm93QGVtYWFyLmFlIn0.BJRby7mdcJ_IAoEJJwruGJod6dd8IS3nuWOQIK0dFhU';
        String employeeId = '012081';
        String employeeEmail = 'tannow@tan.ae';
        
        String employeeDetails = '{"EmpCardDetailsOutputParameters": { "P_REFCUR": { "Row": { "Column": [{ "@name": "EMPLOYEE_NAME","@sqltype": "VARCHAR2","TEXT": "Shinu  Sony"},{"@name": "EMPLOYEE_NUMBER","@sqltype": "VARCHAR2","TEXT": "011380"},{"@name": "DESIGNATION", "@sqltype": "VARCHAR2","TEXT": "Product Owner"},{"@name": "DEPARTMENT","@sqltype": "VARCHAR2","TEXT": "Information Technology"},{"@name": "ENTITY","@sqltype": "VARCHAR2","TEXT": "tan Properties P.J.S.C."},{"@name": "EMAIL_ADDRESS","@sqltype": "VARCHAR2","TEXT": "SSony@tan.ae"},{"@name": "PHONE","@sqltype": "VARCHAR2","TEXT": "+971567646583"},{"@name": "COMPANY_CODE","@sqltype": "VARCHAR2","TEXT": "Non EHG"},{"@name": "FIRST_NAME","@sqltype": "VARCHAR2","TEXT": "Shinu"},{"@name": "LAST_NAME","@sqltype": "VARCHAR2","TEXT": "Sony"},{"@nil": "true","@name": "MIDDLE_NAMES","@sqltype": "VARCHAR2"},{"@name": "LOGO_NAME", "@sqltype": "VARCHAR2","TEXT": "tan Properties P.J.S.C."},{"@name": "EMPLOYEE_PHOTO", "@sqltype": "CLOB","TEXT": "test" } ]}}}}';
        Map<String, Object> employeeAllData = (Map<String, Object>) JSON.deserializeUntyped(employeeDetails);
        Map<String, Object> empCardDetails = (Map<String, Object>)employeeAllData.get('EmpCardDetailsOutputParameters');
        Map<String, Object> p_refcur = (Map<String, Object>)empCardDetails.get('P_REFCUR');
        Map<String, Object> row = (Map<String, Object>)p_refcur.get('Row');
        List<Object> employee = (List<Object>)row.get('Column');
        	
        
        Test.startTest();
        try
        {
            
            randAppController.fetchDetailsAndUpdaterandCustomer(employeeEmail, employeeId, jwttoken);
       
        }
        catch(exception e)
        {
        }     
        Test.stopTest();
        
    }



​​​​​​​
  • September 13, 2022
  • Like
  • 0
I have written a test class but a few lines are not covered. I do not understand how to cover it. Please help!!!
@AuraEnabled
    public static demoWrapper getData(String Club){
        String userId= User.getLoggedInUserId();	
        List<User> userRec = [Select Id, Name,accountId,ContactId,ViewActivity__c from User where Id =: userId];
        List<BTS__c> BTSList = new  List<BTS__c>();
        List<Services__c> serviceList = new  List<Services__c>();
        Integer percentage = 0;
 
        demoWrapper wrapperobj = new demoWrapper();
        String accountIdstr = userRec[0].accountId;
        if(accountIdstr <> null && accountIdstr != ''){
            serviceList = [Select id, Account__c,Account__r.RecordType.Name,Account__r.CreatedDate,Broker_of_Record__c, Broker_of_Record__r.Club__c from Services__c where Broker_of_Record__c =: accountIdstr AND Account__r.RecordType.Name = 'Group'];
            BTSList = [Select id, name, RPoints__c,Milestone_Date__c,RecordType.Name,Trip_Status_Eligibility__r.Pinnacle_Target_Points__c,Trip_Status_Eligibility__r.RecordType.Name,
                                     Trip_Status_Eligibility__r.Premier_Target_Points__c,Trip_Status_Eligibility__r.Preferred_Target_Points__c, Trip_Status_Eligibility__r.Active__c,Trip_Status_Eligibility__r.Start_Date__c,
                                     Trip_Status_Eligibility__r.End_Date__c FROM BTS__c WHERE Trip_Status_Eligibility__r.Active__c = true AND Account__c =: accountIdstr AND RecordType.Name = 'Broker Reward' limit 1];
        }
        if(!BTSList.isEmpty() && BTSList[0].RecordType.Name == 'Broker Reward') {
            
             Integer additionaldays = Integer.valueOf(Label.AFocus_NewGrpNumOfDaysForRewardCal);
             Date grpcreatedStartDate = BTSList[0].Trip_Status_Eligibility__r.Start_Date__c - additionaldays;
             Date grpcreatedEndDate =  BTSList[0].Trip_Status_Eligibility__r.End_Date__c + additionaldays;
             Map<Id,Set<Id>> grpAccMap = new  Map<Id,Set<Id>>();
             if(!serviceList.isEmpty()){
                for(Services__c servRec : serviceList ){
                    if((servRec.Account__r.CreatedDate >= grpcreatedStartDate)  && (servRec.Account__r.CreatedDate <= grpcreatedEndDate))
                    { 
                        if(!grpAccMap.containsKey(servRec.Broker_of_Record__c)){
                            grpAccMap.put(servRec.Broker_of_Record__c,  new Set<Id>());
                        }
                        grpAccMap.get(servRec.Broker_of_Record__c).add(servRec.Account__c);  
                        
                    }
                }
             }
            system.debug('serviceList =' + serviceList);
            system.debug('grpAccMap =' + grpAccMap);
            
            
            if(grpAccMap != null && ! grpAccMap.isEmpty()){
                if(grpAccMap.get(accountIdstr) != null){
                    if(grpAccMap.get(accountIdstr).size() >= 2){
                        wrapperobj.GrpAccts = 2;
                    }
                    else if(grpAccMap.get(accountIdstr).size() ==1){
                        wrapperobj.GrpAccts = 1;
                    }
                  
                }
                
            }
            else if(grpAccMap == null || grpAccMap.isEmpty()){
                wrapperobj.GrpAccts = 0;
            }
          
             if(Club == 'premierClub' && BTSList[0].RPoints__c != null && BTSList[0].Trip_Status_Eligibility__r.Premier_Target_Points__c != null && BTSList[0].Trip_Status_Eligibility__c!=null){
                percentage =  Integer.valueOf(((BTSList[0].RPoints__c)*100) / (BTSList[0].Trip_Status_Eligibility__r.Premier_Target_Points__c));
                wrapperobj.tPoints =  Integer.valueOf(BTSList[0].Trip_Status_Eligibility__r.Premier_Target_Points__c);

             }
             else if(Club == 'preferredClub' && BTSList[0].RPoints__c != null && BTSList[0].Trip_Status_Eligibility__r.Preferred_Target_Points__c != null && BTSList[0].Trip_Status_Eligibility__c!=null){
                percentage =  Integer.valueOf(((BTSList[0].RPoints__c)*100) / (BTSList[0].Trip_Status_Eligibility__r.Preferred_Target_Points__c));
                wrapperobj.tPoints =  Integer.valueOf(BTSList[0].Trip_Status_Eligibility__r.Preferred_Target_Points__c);
              }
            
            wrapperobj.rPoints =  Integer.valueOf(BTSList[0].RPoints__c);
            wrapperobj.hasActive = BTSList[0].Trip_Status_Eligibility__r.Active__c;
        }
        
        wrapperobj.ViewRewards = userRec[0].ViewActivity__c;
        wrapperobj.perRewards= percentage;
        system.debug('wrapperobj' +wrapperobj);
        return wrapperobj;
    }
    
    public class demoWrapper
    {   @AuraEnabled
        public Integer tPoints{get;set;}
        @AuraEnabled
        public Integer rPoints{get;set;}
        @AuraEnabled
        public Integer perRewards{get;set;}
        @AuraEnabled
        public Boolean ViewRewards{get;set;}
        @AuraEnabled
        public Boolean hasActive{get;set;}
        @AuraEnabled
        public Integer GrpAccts{get;set;}
    }

These lines are not covered by the above code.
for(Services__c servRec : serviceList ){
                    if((servRec.Account__r.CreatedDate >= grpcreatedStartDate)  && (servRec.Account__r.CreatedDate <= grpcreatedEndDate))
                    { 
                        if(!grpAccMap.containsKey(servRec.Broker_of_Record__c)){
                            grpAccMap.put(servRec.Broker_of_Record__c,  new Set<Id>());
                        }
                        grpAccMap.get(servRec.Broker_of_Record__c).add(servRec.Account__c);  
                        
                    }
                }
 
if(grpAccMap != null && ! grpAccMap.isEmpty()){
                if(grpAccMap.get(accountIdstr) != null){
                    if(grpAccMap.get(accountIdstr).size() >= 2){
                        wrapperobj.GrpAccts = 2;
                    }
                    else if(grpAccMap.get(accountIdstr).size() ==1){
                        wrapperobj.GrpAccts = 1;
                    }
                  
                }
                
            }




 
  • September 13, 2022
  • Like
  • 0
This is a method in which the else part is not getting covered -
" else {
                rand_App_Customer__c customer = new rand_App_Customer__c(); " 
 
@AuraEnabled
    public static rand_App_Customer__c CustomerInfo(String partyId, String mobile) {
        try {
            String query = 'SELECT Id, Customer_Last_Name__c, Customer_Email__c, Nationality__c, Customer_First_Name__c, Date_of_Birth__c, Customer_Name__c, Party_Id__c FROM rand_App_Customer__c WHERE ';
            if (String.isNotBlank(partyId)) {
                query += ' Customer_Name__c != null AND Party_Id__c=:partyId';
            }
            else if (String.isNotBlank(mobile)) {
                query += ' Customer_Mobile__c=:mobile';
            }
            List<rand_App_Customer__c> customers = Database.query(query + ' LIMIT 1');
            if (customers.size() > 0) {
                System.debug('customers ' + customers);
                if (String.isNotBlank(partyId)) {
                    List<Account> accs = [SELECT Id, FirstName, LastName, email__c, Mobile__c FROM Account WHERE Party_Id__c = :partyId ORDER BY CreatedDate DESC LIMIT 1];
                    if (!accs.isEmpty()) {
                        customers[0].Customer_First_Name__c = accs[0].FirstName;
                        customers[0].Customer_Last_Name__c = accs[0].LastName;
                        customers[0].Customer_Email__c = accs[0].email__c;
                        customers[0].Customer_Mobile__c = accs[0].Mobile__c;
                        customers[0].recalculateFormulas();
                        customers[0].Name = customers[0].Customer_Name__c;
                        update customers[0];
                    }
                }
                return customers[0];
            }
            else {
                rand_App_Customer__c customer = new rand_App_Customer__c();
                customer.Party_Id__c = partyId;
                if (String.isNotBlank(partyId)) {
                    List<Account> accs = [SELECT Id, FirstName, LastName, email__c, Mobile__c FROM Account WHERE Party_Id__c = :partyId ORDER BY CreatedDate DESC LIMIT 1];
                    if (!accs.isEmpty()) {
                        customer.Customer_First_Name__c = accs[0].FirstName;
                        customer.Customer_Last_Name__c = accs[0].LastName;
                        customer.Customer_Email__c = accs[0].email__c;
                        customer.recalculateFormulas();
                    }
                }
                customer.Customer_ID__c = String.isNotBlank(partyId) ? partyId : mobile;
                if (String.isNotBlank(mobile)) {
                    customer.Customer_Mobile__c = mobile;
                }
                customer.Name = String.isBlank(customer.Customer_Name__c) ? 'User' : customer.Customer_Name__c;
                upsert customer Customer_ID__c;
                return customer;
  
            }
        }
        catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
        }
    }
Here is my written test method
@isTest
    public static void getCustomerInfoTest(){
        
        rand_App_Customer__c randCustomer = new rand_App_Customer__c();
        randCustomer.Customer_ID__c = '1234567';
        randCustomer.Customer_First_Name__c = 'Test rand';
        randCustomer.Customer_Last_Name__c = 'Customer';
        randCustomer.Party_Id__c = '8545254752';
        randCustomer.Nationality__c = 'India';
        // randCustomer.Date_of_Birth__c = ;
        randCustomer.Customer_Mobile__c = '8545254752';
        randCustomer.Customer_Email__c = 'tannow@tan.ae';
        Insert randCustomer;

        Account acc = new Account();
            
            acc.FirstName = 'TestFname';
            acc.LastName = 'TestLname';
            acc.Mobile__c = '8545254752';
            acc.Party_Id__c = '8545254752';
            insert acc;

        randAppController.getCustomerInfo('8545254752', '8545254752' );


 
  • September 08, 2022
  • Like
  • 0
@AuraEnabled
    public static void saveCustomerInfo(String data, String partyId, String mobile) {
        rand_App_Customer__c customer = (rand_App_Customer__c) JSON.deserialize(data, rand_App_Customer__c.class);
        customer.Party_Id__c = String.isBlank(partyId) ? mobile : partyId;
        customer.Customer_ID__c = customer.Party_Id__c;
        customer.Customer_Mobile__c = mobile;
        if (String.isNotBlank(mobile)) {
            customer.Id = [SELECT Id FROM rand_App_Customer__c WHERE Customer_Mobile__c = :mobile LIMIT 1]?.Id;
        }
        customer.recalculateFormulas();
        customer.Name = String.isBlank(customer.Customer_Name__c) ? 'User' : customer.Customer_Name__c;
        upsert customer Customer_ID__c;
    }

 
  • September 08, 2022
  • Like
  • 0
@AuraEnabled
    public static String loadData(String strCaseInfo) {
        System.debug('caseInfo ' + strCaseInfo);
        CaseInfoWrapper caseInfo = (CaseInfoWrapper)JSON.deserialize(strCaseInfo, CaseInfoWrapper.class);

        rand_App_Customer__c customer = getCustomerInfo2(caseInfo.emailId);
        Case cse = new Case();
        cse.subject = 'tan One Problem Report';
        cse.Origin = rand_APP;
        cse.Status = 'Awaiting Approval';
        cse.Priority = 'Medium';
        cse.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get(rand_APP).getRecordTypeId();
        cse.Description = caseInfo.description;
        cse.rand_App_Customer__c = customer?.Id;
        cse.Issue_category__c = caseInfo.category;
        cse.Issue_Sub_Category__c = caseInfo.subCategory;
        insert cse;
        // for skip the triggers of ContentDocumentLink && ContentDocument
        ContentDocumentLinkTriggerUtil.skipTrigger = true;
        ContentDocumentTriggerUtil.skipTrigger = true;
        List<ContentVersion> cVersions = new List<ContentVersion>();
        for (FileInfoWrapper file : caseInfo.files) {
            System.debug('fileInfo ' + file);
            if (String.isNotBlank(file.base64Data)) {
                ContentVersion cv = new ContentVersion();
                cv.ContentLocation = 'S';
                cv.PathOnClient = file.fileName;
                cv.VersionData = EncodingUtil.base64Decode(file.base64Data);
                cv.Title = file.fileName;
                cVersions.add(cv);
            }
        }

 
  • September 07, 2022
  • Like
  • 0
How to cover a for loop in this below test method
@AuraEnabled
    public static string getCasesData(String caseId) {
        try {
            String query = 'SELECT Id,(SELECT Id, ContentDocumentId FROM ContentDocumentLinks), CaseNumber,Issue_category__c, Issue_Sub_Category__c, rand_App_Customer__r.Party_Id__c,rand_App_Customer__r.Customer_Mobile__c, Current_Location__Latitude__s, Current_Location__Longitude__s, LocationName__c, Owner.Name, Description,CreatedDate FROM Case WHERE Id =:caseId';
            query += ' ORDER BY CreatedDate DESC LIMIT 1';
            List<Case> cases = Database.query(query);
            CaseInfoWrapper caseInfo = new CaseInfoWrapper();
            set<Id> contentDocId = new set<Id>();
            for (Case caseRecord : cases) {
                caseInfo.description = caseRecord.Description;
                caseInfo.longitude = caseRecord.Current_Location__Latitude__s;
                caseInfo.latitude = caseRecord.Current_Location__Longitude__s;
                caseInfo.locationName = caseRecord.LocationName__c;
                caseInfo.category = caseRecord.Issue_category__c;
                caseInfo.subCategory = caseRecord.Issue_Sub_Category__c;
                caseInfo.partyId = caseRecord.rand_App_Customer__r.Party_Id__c;
                caseInfo.mobile = caseRecord.rand_App_Customer__r.Customer_Mobile__c;
                if (caseRecord.ContentDocumentLinks.size() > 0) {
                    for (ContentDocumentLink cdl : caseRecord.ContentDocumentLinks) {
                        contentDocId.add(cdl.ContentDocumentId);
                    }
                }
            }
            list<id> contectVersionID = new list<id>();
            map<Id, ContentDistribution> contectDMap = new map<Id, ContentDistribution>();
            for (ContentDistribution conDistribution : [SELECT Id, ContentDocumentId, ContentDownloadUrl FROM ContentDistribution WHERE ContentDocumentId IN:contentDocId ORDER BY CreatedDate ASC]) {
                contectVersionID.add(conDistribution.ContentDocumentId);
                contectDMap.put(conDistribution.ContentDocumentId, conDistribution);
            }
            list<FileInfoWrapper> fileInfo = new list<FileInfoWrapper>();
            caseInfo.contentDocumentIds = contectVersionID;
            for (ContentVersion cv : [SELECT Id, ContentDocumentId, FileExtension, FileType, PathOnClient, VersionData FROM ContentVersion WHERE ContentDocumentId IN:contectVersionID ORDER BY CreatedDate ASC]) {
                FileInfoWrapper fileData = new FileInfoWrapper();
                fileData.base64Data = String.valueOf(cv.VersionData);
                fileData.contentVersionId = cv.Id;
                fileData.fileName = cv.PathOnClient;
                if (contectDMap.containsKey(cv.ContentDocumentId)) {
                    fileData.publicUrl = contectDMap.get(cv.ContentDocumentId).ContentDownloadUrl;
                    fileData.contentDistributionId = contectDMap.get(cv.ContentDocumentId).Id;
                }
                fileInfo.add(fileData);
            }
            caseInfo.files = fileInfo;
            System.debug('caseInfo ##' + JSON.serialize(caseInfo));
            return JSON.serialize(caseInfo);
        }
        catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
        }
    }
I have written the below test class
@IsTest
    public static void getCasesDataTest(){


        Case caseInfo = new Case();

        caseInfo.description = 'test';
        caseInfo.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('rand_App').getRecordTypeId();
        insert  caseInfo;

        ContentVersion contentVersion = new ContentVersion(
        Title = 'Penguins',
        PathOnClient = 'Penguins.jpg',
        VersionData = Blob.valueOf('Test Content'),
        IsMajorVersion = true
        );
        insert contentVersion;    
        List<ContentDocument> documents = [
        SELECT Id, Title, LatestPublishedVersionId 
        FROM ContentDocument
        ];

        //create ContentDocumentLink  record 
        ContentDocumentLink cdl = New ContentDocumentLink();
        cdl.LinkedEntityId = caseInfo.id;
        cdl.ContentDocumentId = documents[0].Id;
        cdl.shareType = 'V';
        insert cdl;
           
        randAppController.getCasesData(caseInfo.id);

    }
But not covering the for loop that is
 
for (ContentVersion cv : [SELECT Id, ContentDocumentId, FileExtension, FileType, PathOnClient, VersionData FROM ContentVersion WHERE ContentDocumentId IN:contectVersionID ORDER BY CreatedDate ASC]) {
                FileInfoWrapper fileData = new FileInfoWrapper();
                fileData.base64Data = String.valueOf(cv.VersionData);
                fileData.contentVersionId = cv.Id;
                fileData.fileName = cv.PathOnClient;
                if (contectDMap.containsKey(cv.ContentDocumentId)) {
                    fileData.publicUrl = contectDMap.get(cv.ContentDocumentId).ContentDownloadUrl;
                    fileData.contentDistributionId = contectDMap.get(cv.ContentDocumentId).Id;
                }
                fileInfo.add(fileData);
            }

 
  • September 07, 2022
  • Like
  • 0
@future (callout=true)
    public static void fetchDetailsAndUpdaterandCustomer(String emailid, String empid, String mttoken) {  //
        rand_App_Customer__c customer = [SELECT Id,Name, Customer_Last_Name__c, Customer_Email__c, Customer_Photo_Base64__c, Customer_Emp_ID__c, Customer_First_Name__c, Customer_Name__c, Party_Id__c FROM rand_App_Customer__c WHERE Customer_Email__c= : emailid];
        System.debug('customers getOrCreateCustomer' + customer);

        String employeeDetails = getDataFromEmployee(empid, emailid, jwttoken);//String 
        Map<String, Object> employeeAllData = (Map<String, Object>)JSON.deserializeUntyped(employeeDetails);
        Map<String, Object> empCardDetails = (Map<String, Object>)employeeAllData.get('EmpCardDetailsOutputParameters');
        System.debug('customers empCardDetails' + empCardDetails);
        If(empCardDetails != null){
            Map<String, Object> p_refcur = (Map<String, Object>)empCardDetails.get('P_REFCUR');
            System.debug('customers p_refcur' + p_refcur);
            If(p_refcur != null){
                Map<String, Object> row = (Map<String, Object>)p_refcur.get('Row');
                System.debug('customers row' + row);
                List<Object> employee = (List<Object>)row.get('Column');
                for(object obj : employee){
                    String employeeData = JSON.serialize(obj);
                    if(employeeData.contains('FIRST_NAME')){
                    customer.Customer_First_Name__c = getFieldValue(employeeData);
                    customer.Name = customer.Customer_First_Name__c;
                    }else if(employeeData.contains('LAST_NAME')){
                        customer.Customer_Last_Name__c = getFieldValue(employeeData);
                        customer.Name = customer.Name +' '+customer.Customer_Last_Name__c;
                    }else if(employeeData.contains('EMPLOYEE_PHOTO')){
                    String empPhoto = getFieldValue(employeeData);
                    String empPhotoFinal =  empPhoto.replaceAll('\n', '');
                    customer.Customer_Photo_Base64__c = 'data:image/jpeg;base64,'+empPhotoFinal;
                    }else if(employeeData.contains('DEPARTMENT')){
                    customer.Customer_Department__c = getFieldValue(employeeData);
                    } 
                }
            }
        }
        customer.recalculateFormulas();
        System.debug('before upsert FromFuture customer ' + customer);
        upsert customer;
    }
    }

 
  • September 06, 2022
  • Like
  • 0
@AuraEnabled
    public static FileInfoWrapper createPublicUrl(String fileData) {
        try {
            FileInfoWrapper file = (FileInfoWrapper)JSON.deserialize(fileData, FileInfoWrapper.class);
            if (String.isNotBlank(file.base64Data)) {
                ContentVersion cv = new ContentVersion();
                cv.ContentLocation = 'S';
                cv.PathOnClient = file.fileName;
                cv.VersionData = EncodingUtil.base64Decode(file.base64Data);
                cv.Title = file.fileName;
                insert cv;
                ContentDistribution cd = new ContentDistribution();
                cd.Name = file.fileName;
                cd.ContentVersionId = cv.Id;
                cd.PreferencesAllowViewInBrowser = true;
                cd.PreferencesLinkLatestVersion = true;
                cd.PreferencesNotifyOnVisit = false;
                cd.PreferencesPasswordRequired = false;
                cd.PreferencesAllowOriginalDownload = true;
                insert cd;
                cd = [SELECT Id, ContentVersionId, ContentDownloadUrl FROM ContentDistribution WHERE Id = :cd.Id];
                file.publicUrl = cd.ContentDownloadUrl;
                file.contentDistributionId = cd.Id;
                file.contentVersionId = cd.ContentVersionId;
                return file;
            }
            else {
                return file;
            }
        }
  • September 06, 2022
  • Like
  • 0
@AuraEnabled
    public static String loadData(String strCaseInfo) {
        System.debug('caseInfo ' + strCaseInfo);
        CaseInfoWrapper caseInfo = (CaseInfoWrapper)JSON.deserialize(strCaseInfo, CaseInfoWrapper.class);
        //rand_App_Customer__c customer = getCustomerInfo(caseInfo.partyId, caseInfo.mobile);
        rand_App_Customer__c customer = getCustomerInfo2(caseInfo.emailId);
        Case cse = new Case();
        cse.subject = 'tan One Problem Report';
        cse.Origin = rand_APP;
        cse.Status = 'Awaiting Approval';
        cse.Priority = 'Medium';
        cse.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get(rand_APP).getRecordTypeId();
        // cse.Hex_Service_Request__c = 'System Update';
        // cse.Hex_Service_Request_new__c = 'System Update';
        // cse.ProblemCode__c = 'NOC for Name Addition - HO';
        cse.Description = caseInfo.description;
        //RN Comment
        //cse.Current_Location__Latitude__s = caseInfo.latitude;
        //cse.Current_Location__Longitude__s = caseInfo.longitude;
        cse.rand_App_Customer__c = customer?.Id;
        //cse.LocationName__c = caseInfo.locationName; */
        cse.Issue_category__c = caseInfo.category;
        cse.Issue_Sub_Category__c = caseInfo.subCategory;
        insert cse;
        // for skip the triggers of ContentDocumentLink && ContentDocument
        ContentDocumentLinkTriggerUtil.skipTrigger = true;
        ContentDocumentTriggerUtil.skipTrigger = true;
        List<ContentVersion> cVersions = new List<ContentVersion>();
        for (FileInfoWrapper file : caseInfo.files) {
            System.debug('fileInfo ' + file);
            if (String.isNotBlank(file.base64Data)) {
                ContentVersion cv = new ContentVersion();
                cv.ContentLocation = 'S';
                cv.PathOnClient = file.fileName;
                cv.VersionData = EncodingUtil.base64Decode(file.base64Data);
                cv.Title = file.fileName;
                cVersions.add(cv);
            }
        }
        List<Id> contentDocumentIds = new List<Id>(caseInfo.contentDocumentIds);
        if (cVersions.size() > 0) {
            insert cVersions;
            List<ContentDistribution> ContentDistributionList = new List<ContentDistribution>();
            for(ContentVersion ctv : cVersions){
                ContentDistribution cd = new ContentDistribution();
                cd.Name = ctv.Title;
                cd.ContentVersionId = ctv.Id;
                cd.PreferencesAllowViewInBrowser = true;
                cd.PreferencesLinkLatestVersion = true;
                cd.PreferencesNotifyOnVisit = false;
                cd.PreferencesPasswordRequired = false;
                cd.PreferencesAllowOriginalDownload = true;
                ContentDistributionList.add(cd);
            }
            if(ContentDistributionList.size() > 0){
                INSERT ContentDistributionList;
            }
            Set<Id> cvIds = new Map<Id, ContentVersion>(cVersions).keySet();
            for (ContentVersion cVersion : [SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id IN:cvIds ORDER BY CreatedDate ASC]) {
                contentDocumentIds.add(cVersion.ContentDocumentId);
            }
        }
        List<ContentDocumentLink> links = new List<ContentDocumentLink>();
        for (Id contentDocumentId : contentDocumentIds) {
            ContentDocumentLink link = new ContentDocumentLink();
            link.LinkedEntityId = cse.Id;
            link.ContentDocumentId = contentDocumentId;
            link.ShareType = 'V';
            links.add(link);
        }
        insert links;
        return [SELECT CaseNumber FROM Case WHERE Id = :cse.Id]?.CaseNumber;
    }
Please help me to write a test method for the above method.
  • September 06, 2022
  • Like
  • 0

@AuraEnabled
    public static List<CaseResultWrapper> getCases(String emailid) {
        try {
            List<CaseResultWrapper> result = new List<CaseResultWrapper>();
            List<String> caseStatuses = new List<String>{'Approved', 'Awaiting Approval', 'Rejected'};
            String query = 'SELECT Id,CaseNumber, Issue_category__c, Points__c, Issue_Sub_Category__c, (SELECT Id, ContentDocumentId FROM ContentDocumentLinks WHERE ContentDocument.FileType != \'wav\'), Status, Country__c, Owner.Name, Description,CreatedDate FROM Case WHERE RecordType.DeveloperName= :rand_APP AND rand_App_Customer__r.Customer_Email__c !=null AND status IN :caseStatuses';
            if (String.isNotBlank(emailid)) {
                query += ' AND rand_App_Customer__r.Customer_Email__c=:emailid';
            }
            /*else if (String.isNotBlank(mobile)) {
                query += 'AND rand_App_Customer__r.Customer_Mobile__c=:mobile';
            }
            else {
                query += 'AND Id = null';
            }*/
            query += ' ORDER BY CreatedDate DESC LIMIT 50'; //CreatedDate = THIS_QUARTER
            System.debug('getCases query   '+query);
            List<Case> cases = Database.query(query);
            Map<Id, Case> contentCaseMap = new Map<Id, Case>();
            for (Case caseRecord : cases) {
                if (caseRecord.ContentDocumentLinks.size() > 0 && caseRecord.ContentDocumentLinks[0].ContentDocumentId != null) {
                    contentCaseMap.put(caseRecord.ContentDocumentLinks[0].ContentDocumentId, caseRecord);
                }
                else {
                    contentCaseMap.put(caseRecord.Id, caseRecord);
                }
            }
            Map<Id, String> contentUrlMap = new Map<Id, String>();
            for (ContentDistribution conDistribution : [SELECT Id, ContentDocumentId, ContentDownloadUrl FROM ContentDistribution WHERE ContentDocumentId IN:contentCaseMap.keySet() ORDER BY CreatedDate ASC]) {
                contentUrlMap.put(conDistribution.ContentDocumentId, conDistribution.ContentDownloadUrl);
            }
            for (Id contentId : contentCaseMap.keySet()) {
                CaseResultWrapper caseWrp = new CaseResultWrapper();
                caseWrp.contentDocId = contentId;
                caseWrp.caseRecord = contentCaseMap.get(contentId);
                caseWrp.imageUrl = contentUrlMap.get(contentId);
                caseWrp.categoryLogoUrl ='';
                DateTime dT = contentCaseMap.get(contentId).CreatedDate;
                If(dT.month()==1){
                    caseWrp.createdDate = dT.day()+'-Jan-'+dT.year();
                    }
                If(dT.month()==2){
                caseWrp.createdDate = dT.day()+'-Feb-'+dT.year();
                }
                If(dT.month()==3){
                caseWrp.createdDate = dT.day()+'-Mar-'+dT.year();
                }
                If(dT.month()==4){
                caseWrp.createdDate = dT.day()+'-Apr-'+dT.year();
                }
                If(dT.month()==5){
                caseWrp.createdDate = dT.day()+'-May-'+dT.year();
                }
                If(dT.month()==6){
                caseWrp.createdDate = dT.day()+'-Jun-'+dT.year();
                }
                If(dT.month()==7){
                caseWrp.createdDate = dT.day()+'-Jul-'+dT.year();
                }
                If(dT.month()==8){
                caseWrp.createdDate = dT.day()+'-Aug-'+dT.year();
                }
                If(dT.month()==9){
                caseWrp.createdDate = dT.day()+'-Sep-'+dT.year();
                }
                If(dT.month()==10){
                caseWrp.createdDate = dT.day()+'-Oct-'+dT.year();
                }
                If(dT.month()==11){
                caseWrp.createdDate = dT.day()+'-Nov-'+dT.year();
                }
                If(dT.month()==12){
                caseWrp.createdDate = dT.day()+'-Dec-'+dT.year();
                }
                result.add(caseWrp);
            }
            return result;
        }
The parameter that i have passed that is email is not in case object but in rand_App_Customer__c object- and case child object of rand_App_Customer__c object- so how i can give the parameter for this method
Below is my test method
 
@IsTest
    public static void getCasesTest(){

        // Id rand_AppRecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('rand_App').getRecordTypeId();
        rand_App_Customer__c randCustomer = new rand_App_Customer__c();
        randCustomer.Customer_ID__c = '1234567';
        randCustomer.Customer_Email__c = 'tannow@tan.ae';
        insert randCustomer;
        
        Case cse = new Case();
        
        cse.Issue_Sub_Category__c = 'Test category';
        cse.Status = 'Approved';   
        cse.Description = 'Test';
        cse.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('rand_App').getRecordTypeId();
        cse.rand_App_Customer__c = randCustomer.Id;

        insert cse;
  
        List<ContentDocument> documents = [SELECT Id,title,LatestPublishedVersionId FROM ContentDocument];
        ContentDocumentLink cdl = new ContentDocumentLink();

        cdl.LinkedEntityId = cse.id;
        cdl.ContentDocumentId = documents[0].Id;
        cdl.shareType = 'V';
        // cdl.FileType = 'jpg';
        insert cdl;

        
        randAppController.getCases('tannow@tan.ae');

}

 
  • September 05, 2022
  • Like
  • 0
I am not understanding what and how to put data for the below method
 
@AuraEnabled
    public static string getCasesData(String caseId) {
        try {
            String query = 'SELECT Id,(SELECT Id, ContentDocumentId FROM ContentDocumentLinks), CaseNumber,Issue_category__c, Issue_Sub_Category__c, rand_App_Customer__r.Party_Id__c,rand_App_Customer__r.Customer_Mobile__c, Current_Location__Latitude__s, Current_Location__Longitude__s, LocationName__c, Owner.Name, Description,CreatedDate FROM Case WHERE Id =:caseId';
            query += ' ORDER BY CreatedDate DESC LIMIT 1';
            List<Case> cases = Database.query(query);
            CaseInfoWrapper caseInfo = new CaseInfoWrapper();
            set<Id> contentDocId = new set<Id>();
            for (Case caseRecord : cases) {
                caseInfo.description = caseRecord.Description;
                caseInfo.longitude = caseRecord.Current_Location__Latitude__s;
                caseInfo.latitude = caseRecord.Current_Location__Longitude__s;
                caseInfo.locationName = caseRecord.LocationName__c;
                caseInfo.category = caseRecord.Issue_category__c;
                caseInfo.subCategory = caseRecord.Issue_Sub_Category__c;
                caseInfo.partyId = caseRecord.rand_App_Customer__r.Party_Id__c;
                caseInfo.mobile = caseRecord.rand_App_Customer__r.Customer_Mobile__c;
                if (caseRecord.ContentDocumentLinks.size() > 0) {
                    for (ContentDocumentLink cdl : caseRecord.ContentDocumentLinks) {
                        contentDocId.add(cdl.ContentDocumentId);
                    }
                }
            }
            list<id> contectVersionID = new list<id>();
            map<Id, ContentDistribution> contectDMap = new map<Id, ContentDistribution>();
            for (ContentDistribution conDistribution : [SELECT Id, ContentDocumentId, ContentDownloadUrl FROM ContentDistribution WHERE ContentDocumentId IN:contentDocId ORDER BY CreatedDate ASC]) {
                contectVersionID.add(conDistribution.ContentDocumentId);
                contectDMap.put(conDistribution.ContentDocumentId, conDistribution);
            }
            list<FileInfoWrapper> fileInfo = new list<FileInfoWrapper>();
            caseInfo.contentDocumentIds = contectVersionID;
            for (ContentVersion cv : [SELECT Id, ContentDocumentId, FileExtension, FileType, PathOnClient, VersionData FROM ContentVersion WHERE ContentDocumentId IN:contectVersionID ORDER BY CreatedDate ASC]) {
                FileInfoWrapper fileData = new FileInfoWrapper();
                fileData.base64Data = String.valueOf(cv.VersionData);
                fileData.contentVersionId = cv.Id;
                fileData.fileName = cv.PathOnClient;
                if (contectDMap.containsKey(cv.ContentDocumentId)) {
                    fileData.publicUrl = contectDMap.get(cv.ContentDocumentId).ContentDownloadUrl;
                    fileData.contentDistributionId = contectDMap.get(cv.ContentDocumentId).Id;
                }
                fileInfo.add(fileData);
            }
            caseInfo.files = fileInfo;
            System.debug('caseInfo ##' + JSON.serialize(caseInfo));
            return JSON.serialize(caseInfo);
        }
        catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
        }
    }
So far I have written below myself as per my understanding but it is not giving coverage after "for (Case case record : cases)".
 
@IsTest
    public static void getCasesDataTest(){


        Case caseInfo = new Case();

        caseInfo.description = 'test';
        caseInfo.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('rand_App').getRecordTypeId();
        insert  caseInfo;

        ContentVersion contentVersion = new ContentVersion(
        Title = 'Penguins',
        PathOnClient = 'Penguins.jpg',
        VersionData = Blob.valueOf('Test Content'),
        IsMajorVersion = true
        );
        insert contentVersion;    
        List<ContentDocument> documents = [
        SELECT Id, Title, LatestPublishedVersionId 
        FROM ContentDocument
        ];

        //create ContentDocumentLink  record 
        ContentDocumentLink cdl = New ContentDocumentLink();
        cdl.LinkedEntityId = caseInfo.id;
        cdl.ContentDocumentId = documents[0].Id;
        cdl.shareType = 'V';
        insert cdl;

        randAppController.CaseInfoWrapper wrapper= new randAppController.CaseInfoWrapper();
        wrapper.category = 'Emaar Gift Card';
        wrapper.subCategory = 'EGC - Card Error/Machine Network Failure';
        wrapper.partyId = '1234';
        wrapper.mobile = '7894561230';
       
    
        randAppController.getCasesData('5003M038208iGzOLOU');

    }

Please help...
  • September 05, 2022
  • Like
  • 0
I need to update the status(ak2397__Status__c) picklist field of the Custom Orders(ak2397__Orders__c) object using a lightning button. I have created a button 'cancel' and 'reorder'. If I click the cancel button then the status of the object should change from 'Ordered' to 'Cancelled' and if I click the reorder button then the status should change from 'Cancelled to 'Ordered'. I am stuck pls help.

User-added imageHere is my complete code
Component----
<aura:component controller="TestForOMapex" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId" access="global" >
    <aura:attribute name="accList" type="List"/>  
    <aura:attribute name="activeSections" type="List" />
    <aura:attribute name="searchResult" type="List" description="use for store and display account list return from server"/>
    <aura:attribute name="searchKeyword" type="String" description="use for store user search input"/>
    <aura:handler name="init" value="{!this}" action="{!c.doinit}"/>
    <lightning:card title="Customer Order Details" iconName="standard:Contact"> 
        <div class="slds-border_bottom">
        </div>
        <div class="slds-scrollable_y">
            <lightning:layoutItem size="12">
                <div class="slds-text-longform">
                    <lightning:input value="{!v.searchKeyword}"
                                     placeholder="Search Customers"
                                     aura:id="searchField"
                                     name="searchField"
                                     onchange="{!c.onChange1 }"/>
                    <br/>  
                </div>
            </lightning:layoutItem>
        </div>
        <div class="slds-align_absolute-center">
            <table class="slds-table slds-table_cell-buffer slds-table_bordered">
                <thead>
                    <tr class="slds-line-height_reset">
                     
                         <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order ID">Order ID</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Orders">Food Item</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order detail">Order Details</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order detail">Order Date</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order detail">Status</div>
                        </th>  
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Edit">Cancel</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Edit">ReOrder</div>
                        </th>
                    </tr>
                </thead>
                <br/>
                <tbody>
                    <aura:iteration items="{!v.accList}" var="acc" indexVar="index">
                        <tr class="slds-line-height_reset">
                        
                            <td class="slds-text-title_caps" scope="col">
                                <div class="slds-truncate" title="FirstName">{!acc.ak2397__Order_Id__c}</div>
                            </td>
                            <td class="slds-text-title_caps" scope="col"> 
                                <div class="slds-truncate" title="Food Item"> {!acc.ak2397__Food_Item__c}</div>
                            </td>
                            <td class="slds-text-title_caps" scope="col">   
                                <div class="slds-truncate" title="Order Detail">{!acc.ak2397__Order_Details__c}</div>
                            </td>
                              <td class="slds-text-title_caps" scope="col">   
                                <div class="slds-truncate" title="Order Date">{!acc.CreatedDate}</div>
                            </td>
                              <td class="slds-text-title_caps" scope="col">   
                                <div class="slds-truncate" title="Status">{!acc.ak2397__Status__c}</div>
                            </td>
                            <td data-label="icon" class="slds-col slds-size_1-of-12" onclick="{!c.cancel}" id="{!acc.Id}">
                                <lightning:icon iconName="utility:delete" size="small" />
                            </td>
                             <td data-label="icon" class="slds-col slds-size_1-of-12" onclick="{!c.reorder}" id="{!acc.Id}">
                                <lightning:icon iconName="utility:change_record_type" size="small" />
                            </td>                            
                        </tr>
                    </aura:iteration>
                </tbody>
            </table>
        </div>
    </lightning:card>
</aura:component>
Js Controller
({
    onChange1: function (component, evt, helper) {
        var selectedLimit = component.find('searchField').get('v.value');
        component.set('v.searchKeyword', selectedLimit);
        helper.SearchHelper(component, event);
    },
        doinit: function(component) {
        var action = component.get('c.getContactData');
        var self = this;
        action.setCallback(this, function(actionResult) {
        component.set('v.acclist', actionResult.getReturnValue());
	});
		$A.enqueueAction(action);
	}, 
    cancel : function(component, event) {
        var action = component.get("c.cancelContact");
        action.setParams({contactId:event.target.id});
        action.setCallback(this, function(response) {
            component.set("v.accList",response.getReturnValue());
        });
        $A.enqueueAction(action);
    },
        reorder : function(component, event) {
            var action = component.get("c.updateContact");
            action.setParams({contactId:event.target.id});
            action.setCallback(this, function(response) {
                component.set("v.accList",response.getReturnValue());    
            });
            $A.enqueueAction(action);
        }, 
})

Helper
({
    SearchHelper : function(component, event, helper) {
        var action = component.get('c.fetchAcc');
         action.setParams({ searchKey : component.get("v.searchKeyword"),
                          });
        action.setCallback(this, function(response){
            var state = response.getState();
            if(state === "SUCCESS"){
                var allValues = response.getReturnValue();
                console.log("allValues--->>> " + JSON.stringify(allValues));
                //component.set('v.activeSections', allValues.Name);
                component.set('v.accList', allValues);
            }
            else if(state === "ERROR") {
                var errors = response.getError();
                if(errors){
                    if(errors[0] && errors[0].message){
                        console.log("Error Message: " + errors[0].message);
                    }
                }
                else{
                    console.log("Unknown Error");
                }
            }
        });
        $A.enqueueAction(action);
    }
});

Apex Controller
public class TestForOMapex {
  @AuraEnabled(cacheable=true)
    public static List<ak2397__Orders__c> fetchAcc (String searchKey){
        String query= 'select ak2397__Order_Id__c, ak2397__Food_Item__c, ak2397__Order_Details__c, CreatedDate, ak2397__Status__c from ak2397__Orders__c';
         if ( searchKey != Null ) {
            String key = '%' + searchKey + '%';
            query += ' WHERE Name LIKE :key';
        }system.debug(Database.query( query ));
         return Database.query( query );
    }
    @AuraEnabled
    public static List<ak2397__Orders__c> getContactData(){
        return [select Id from ak2397__Orders__c Limit 10];
    }
    @AuraEnabled
    public static List<ak2397__Orders__c> cancelContact(String contactId)
    {
        List<ak2397__Orders__c> upContact = [SELECT Id, ak2397__Status__c FROM ak2397__Orders__c];
        if(upContact.size()>0){
            for(ak2397__Orders__c om: upContact){
                om.ak2397__Status__c = 'Cancelled';
                upContact.add(om);
            }
            upsert upContact;
        }
        return getContactData();
    public static List<ak2397__Orders__c> updateContact(String contactId)
    {
        List<ak2397__Orders__c> upContact = [SELECT Id, ak2397__Status__c FROM ak2397__Orders__c];
        if(upContact.size()>0){
            for(ak2397__Orders__c om: upContact){
                om.ak2397__Status__c = 'Ordered';
                upContact.add(om);
            }
            upsert upContact;
        }
        return getContactData();
    }
}
}

 
This UserMigrationRoute class is migration Community profile users to Partner profile users and saving their username Password in userMigration object. I have really hard time writing test classes. i have written Test class but don't know exactly how i can get full coverage. pls, help....
I am getting 65 percent coverage!

Line 48-77 is not covered (Boolean isSUccess=createUserMigration('',objUser[0],'');) to (return maprespone;) 
Main class
public class UserMigrationRoute extends BaseRoute{
    public override Object doPost() {
        List<String> allowhosts=Label.Host_Name.split(',');
        Map<String,object> maprespone=new  Map<String,object>();
        system.debug('Hi');
        if(String.isNotBlank(request.headers.get('Host')) && String.isNotBlank(request.headers.get('Host')) && !allowhosts.contains(request.headers.get('Host'))){
            setResponseMessage('Invalid Host Header',ConstantsUtils.ERROR_CODE);   
            return null;  
        }
        if(this.request.headers.get('Content-Type')!=null && this.request.headers.get('Content-Type').substringAfter('/').equalsIgnoreCase('xml')){
            setResponseMessage('Request in '+request.headers.get('Content-Type').substringAfter('/')+' format. Please provide request in json format.',ConstantsUtils.ERROR_CODE);
            return null;
        }
        map<String,object> data=this.getBodyJSON();
        string id=(string)data.get('userId');
        Map<String,String> mapofPartnerRecordType=new Map<String,String>();
        List<User> objUser;
        try{
            objUser=[SELECT Id,Profile.NAME,IsActive ,userName,AccountId,Account.IsPartner,IsPortalEnabled  FROM User WHERE IsActive = TRUE and AccountId!=null and id=:id];
            if(objUser==null ||  objUser.size()==0){
                setResponseMessage('Invalid uesrId, Please provide community user id',ConstantsUtils.ERROR_CODE); 
                return null;
            } 
            List<Account> lstAccount=new List<Account>();
            if(!objUser[0].Account.IsPartner){
                Account account=new Account();
                account.Id=objUser[0].AccountId;
                account.IsPartner=true;
                lstAccount.add(account);
               // update lstAccount;  //commented by shabnoor for testing
            }
            
            if(mapOfCustomerAndPartner.containsKey(objUser[0].profile.Name)){
                String partnerProfile=mapOfCustomerAndPartner.get(objUser[0].profile.Name);
                objUser[0].ProfileId=[Select Id , Name from profile where Name= :partnerProfile].Id;
            }
            
            update objUser[0];
            
            Boolean isSUccess=createUserMigration('',objUser[0],'');
            if(isSUccess){
                maprespone.put('statuscode',1);
                maprespone.put('statusmessage','user migration successfully done'); 
                return maprespone;
            }
            maprespone.put('statuscode',0);
            maprespone.put('statusmessage','user migration failed');
            return maprespone;
            
        }
        catch(DMLException ex){
            
            if(ex.getDmlType(0)==StatusCode.DUPLICATE_USERNAME){
                String charString = '!@#$%^&*()nopqrstuvwABCDPQRSTUVWXYZ0123456789abcdefghijkEFGHIJKLMNOlmxyz';
                String randomNew = '';
                while (randomNew .length() < 8){
                    Integer changeInt = Math.mod(Math.abs(Crypto.getRandomInteger()), charString.length());
                    randomNew += charString.substring(changeInt , changeInt +1);
                }
                Boolean isSUccess=createUserMigration(objUser[0].userName.replace('@',DateTime.now().millisecond() +'@'),objUser[0],randomNew);
                if(isSUccess){
                    system.setPassword(objUser[0].Id, randomNew);
                    maprespone.put('statuscode',1);
                    maprespone.put('statusmessage','user migration successfully done'); 
                    return maprespone;
                }
                maprespone.put('statuscode',0);
                maprespone.put('statusmessage',ex.getMessage());
                return maprespone;
            }
            maprespone.put('statuscode',0);
            maprespone.put('statusmessage',ex.getMessage());
            
        }
        catch(Exception ex){
            maprespone.put('statuscode',0);
            maprespone.put('statusmessage',ex.getMessage());
            return maprespone;
        }
        return maprespone;
    }
    
    public void setResponseMessage(String strMessge,String strCode){
        response.addHeader('Content-Type', 'application/json');
        response.responseBody = Blob.valueOf( '[{"message":' + strMessge + ',"errorCode":'+ strCode + '}]' );
        response.statusCode = 400;
        
    }
    
    public Boolean  createUserMigration(String Newusername,User objUser,String tempPassword){
        try{
            UserMigration__c UserMigration=new UserMigration__c();
           // UserMigration.Newusername__c=objUser.userName;
            if(String.isNotBlank(Newusername)){
                UserMigration.Newusername__c=Newusername;
            }
            UserMigration.OlduserName__c=objUser.userName;
            UserMigration.User__c=objUser.id;
            if(String.isNotBlank(tempPassword)){
                UserMigration.tempPassword__c= tempPassword; 
            }
            insert UserMigration;
            return true;
        }catch(Exception ex){
            return false;
        }
        
    }
    
    public map<String,String> mapOfCustomerAndPartner=new Map<String,String>{
        'Customer Community - Admin'=>'Partner Community - Admin',
            'Customer Community - Agent'=>'Partner Community - Agent',
            'Customer Community - Agent + Admin'=>'Partner Community - Agent + Admin',
            'Customer Community - Auth + Admin'=>'Partner Community - Auth + Admin',
            'Customer Community - Auth + Admin + Agent'=>'Partner Community - Auth + Admin + Agent',
            'Customer Community - Auth + Agent'=>'Partner Community - Auth + Agent',
            'Customer Community - Auth Officer'=>'Partner Community - Auth Officer',
            'Customer Community - Customer Direct User'=>'Partner Community - Customer Direct User',
            'Customer Community - Owner'=>'Partner Community - Owner',           
            'Customer Community Plus User'=>'Partner Community - Admin',
            'Customer Direct Guest'=>'Partner Direct Guest'
            };
                
                
                
                }

Test class
public with sharing class UserMigrationRouteTest {      
    
    @testSetup
    static void setup() {
        Broker_App_Settings__c BAS = new Broker_App_Settings__c(
            General_Partner_User_Id__c = '0054H0000067b6o',
            ApiToken__c = '6e9bece1914809fb8493146417e722f6',
            IVector__c = 'FFFFFFFFFFFFFFFF',
            Key__c = 'x/A%D*G-KaPdSgVkYp3s6v9y&B&E(H+M',
            General_Partner_User_Name__c = 'qaqqqqqqqqqqqqqq.com'
        );
        insert BAS;
        
        TestDataSetup.createIntegrationCustomSettingsData();
        TestDataSetup.createTriggerSettingsData();
        TestDataSetup.createAppSettingsData();
        Account partnerAccount = TestDataSetup.createAgencyAccount();
        insert partnerAccount;
        
        Contact objAgencyContact = TestDataSetup.createAgentContact(
            partnerAccount.Id
        );
        objAgencyContact.RERA_Card_No__c = '123456';
        objAgencyContact.Sys_Agent_Representative__c = true;
        insert objAgencyContact;
        
        Profile portalProfile = [
            SELECT Id
            FROM Profile
            WHERE Name = 'Sales Partner Community User'
            LIMIT 1
        ];
        
        User objPartnerUser = new User(
            Username = System.now().millisecond() + 'test999@test.com',
            ContactId = objAgencyContact.Id,
            ProfileId = portalProfile.Id,
            Alias = 'pTst',
            Email = 'testingisgoingon999@test.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Con',
            CommunityNickname = 'test999',
            TimeZoneSidKey = 'America/Los_Angeles',
            LocaleSidKey = 'en_US',
            LanguageLocaleKey = 'en_US'
        );
        Database.insert(objPartnerUser);
    }

    
    static testMethod void verifyContentType() {
        User objPartnerUser = [
            SELECT Id, Username
            FROM User
            WHERE email = 'testingisgoingon999@test.com'
        ];
        System.runAs(objPartnerUser) {
            String requestURI = '/userprofileupdate/';
            String RESOURCE_PATH = '/services/apexrest' + requestURI;
            map<String, String> headers = new Map<String, String>();
            headers.put('Content-Type', 'application/json');
            headers.put('Host', 'www.gmail1.com');
            Broker_App_Settings__c BAS = Broker_App_Settings__c.getOrgDefaults();
            headers.put('apikey', BAS.ApiToken__c);
            Map<String, String> requestData = new Map<string, string>();
            String JsonRecord = Json.serialize(requestData);
            setRestCall(RESOURCE_PATH, requestURI, 'POST', headers, null, JsonRecord);
            try {
                RestResponse resp = RestContext.Response;
                UserMigrationResource.handlePost();
                resp = RestContext.Response;
            } catch (exception ex) {
            }
        }
    }
    
    static testMethod void createMigrationUserNegative(){

        List<User> objUser = [SELECT Id,Profile.NAME,IsActive ,userName,AccountId,Account.IsPartner,IsPortalEnabled  FROM User WHERE IsActive = TRUE and AccountId!=null];

        UserMigrationRoute mem = new UserMigrationRoute();
        Boolean isSUccess  = mem.createUserMigration('newusername123',objUser[0],'newpassword1234');
        System.assertEquals(false,isSUccess, 'Result');
    }
        static testMethod void createMigrationPositive(){

        List<User> objUser = [SELECT Id,Profile.NAME,IsActive ,userName,AccountId,Account.IsPartner,IsPortalEnabled  FROM User WHERE IsActive = TRUE and AccountId!=null];
        UserMigrationRoute mem = new UserMigrationRoute();
        Boolean isSUccess = mem.createUsermigration('',objUser[0],'');
        System.assertEquals(true,isSUccess,'result');
    
    }
    
    static testMethod void verifydoPost() {

        User objPartnerUser = [
            SELECT Id, Username
            FROM User
            WHERE email = 'testingisgoingon999@test.com'
        ];
        System.runAs(objPartnerUser) {
            CaseTriggerHandler.TriggerDisabled = true;
            String requestURI = '///userprofileupdate/';
            String RESOURCE_PATH = '/services/apexrest' + requestURI;
            map<String, String> headers = new Map<String, String>();
            Broker_App_Settings__c BAS = Broker_App_Settings__c.getOrgDefaults();
            headers.put('apikey', BAS.ApiToken__c);
            Map<String, String> requestData = new Map<string, string>();
            requestData.put('userId', '0053M000001YvnTQAS');
            String JsonRecord = Json.serialize(requestData);
            setRestCall(RESOURCE_PATH, requestURI, 'POST', headers, null, JsonRecord);
            
            try {
                RestResponse resp = RestContext.Response;
                UserMigrationResource.handlePost();
                resp = RestContext.Response;
                //System.assertEquals(1,resp.statusCode,'success'); //Assert with expected status code.
            } catch (exception ex) {
            }
        }
    }
    
    public static void setRestCall(
        String resourcePath,
        String requestURI,
        String method,
        map<String, String> headers,
        map<String, String> paraMeters,
        String body
    ) {
        RestRequest req = new RestRequest();
        req.requestURI = requestURI;
        req.resourcePath = resourcePath;
        req.httpMethod = method;
        
        if (String.isNotEmpty(body)) {
            req.requestBody = Blob.valueOf(body);
        }
        if (headers != null && headers.size() > 0) {
            req.headers.putAll(headers);
        }
        if (paraMeters != null && paraMeters.size() > 0) {
            req.params.putAll(paraMeters);
        }
        system.debug('test' + req);
        RestContext.Request = req;
        RestContext.Response = new RestResponse();
    }
    
}

 
This is method
public static void carriersBMLLUpdatecreateCaseComments(List<Enrollment__c> newList,Map<Id,Enrollment__c> oldMap)
    {
        Set<Id> enrollmentIds = new Set<Id>();
        Map<Id, Enrollment__c> newMap = new Map<Id, Enrollment__c>(newList);
        for(Enrollment__c enrollment: newList)
        {
            //on update
            if(oldMap!=null)
            {
                if(enrollment.Enrollment_Method__c == Label.AFocus_ThirdParty_PickVal){
                    if(enrollment.Carriers_BMLL_will_not_be_the_GA__c !=null && 
                       enrollment.Carriers_BMLL_will_not_be_the_GA__c != oldMap.get(enrollment.Id).Carriers_BMLL_will_not_be_the_GA__c)
                    {
                        enrollmentIds.add(enrollment.Id);
                    }   
                }
            }
            //on insert
            else if(oldMap==null){
                if(enrollment.Enrollment_Method__c == Label.AFocus_ThirdParty_PickVal){
                    if(enrollment.Carriers_BMLL_will_not_be_the_GA__c == null || enrollment.Carriers_BMLL_will_not_be_the_GA__c =='')
                        
                    {
                        enrollmentIds.add(enrollment.Id);
                        
                    } 
                    
                }
            }
        }
        System.debug('enrollmentIds are'+enrollmentIds);
        List<Case> enrollmentCases = new  List<Case>();
        List<CaseComment> CaseCommentsList = new List<CaseComment>();
        
        if(enrollmentIds.size()>0)
        {
            enrollmentCases = [Select Id,Enrollment__c,Enrollment__r.Carriers_BMLL_will_not_be_the_GA__c,Enrollment__r.Enrollment_Method__c from Case where Enrollment__c IN :enrollmentIds AND Recordtype.Name = :Label.AFocus_New_Business_Case];
            if(enrollmentCases.size()>0)
            {
                for(Case enrollemtCase:enrollmentCases)  {
                    CaseComment caseComment = new CaseComment();
                    caseComment.ParentId = enrollemtCase.Id;
                    caseComment.IsPublished = false;
                    caseComment.CommentBody = 'ATTN:New Business Team Carriers BMLL will not be the GA:['+ enrollemtCase.Enrollment__r.Carriers_BMLL_will_not_be_the_GA__c +'] When Services are created for this Carriers add $0 in SCA PEPM field on each Service';
                    CaseCommentsList.add(caseComment);
                    
                    
                }
            }
        }
        System.debug('CaseCommentsList is :' + CaseCommentsList);
        try{
            if(!CaseCommentsList.isEmpty()){
                insert CaseCommentsList;
            }
        }
        
        catch(Exception ex){
            // ExceptionHandlerController.logErrorsInboundAPI('Sync BenAdminBuildCase Notes with Enrollment Notes','AFocus_EnrollmentTriggerHandler','updatecaseNotesFromEnrollmentNotes',ex.getMessage(),'Case ids to be updated' +caseUpdatedList,'Exception occurred during updating status',UserInfo.getUserId(),'Error');
            ExceptionHandlerController.logErrorsInboundAPI('Create Case Comments when Carriers_BMLL_will_not_be_the_GA__c is updated','AFocus_EnrollmentTriggerHandler','carriersBMLLUpdatecreateCaseComments',ex.getMessage(),'Carriers_BMLL_will_not_be_the_GA__c to be updated' +CaseCommentsList,'Exception occurred during updating Carriers_BMLL_will_not_be_the_GA__c',UserInfo.getUserId(),'Error');
            
        }
    }

This mine test method
@isTest 
    static void carriersBMLLUpdatecreateCaseCommentsTest(){
        Set<Id> enrollmentIds = new Set<Id>();
        
        string Id =[SELECT id from RecordType where Name ='Agency'].Id;
        Account Acc1 = new Account();
        Acc1.Name = 'Test Account forth';
        Acc1.Email__c='testtest@gmail.com';
        Acc1.Source_System__c ='BenefitPoint';
        Acc1.Technology_Adoption__c ='Low - Not Open';
        Acc1.RecordTypeId = Id;
        insert Acc1;
       
        System.debug('Account info: ' + Acc1);
        
        List<Enrollment__c> enlist = new List<Enrollment__c>();
        Enrollment__c en1 = new Enrollment__c();
        
        en1.Broker__c= Acc1.id;
        en1.Status__c='Not Submitted';
        en1.Notes__c='Test Notes';
        en1.Plan_Selection_Complete__c= true;
        en1.Street__c = 'eStreet';
        en1.city__c = 'New york';
        en1.State__c = 'NY';
        en1.Zip__c = '48979842';
        en1.Effective_Date__c = system.today();
        en1.Client_Type_Status__c = 'Group';
        en1.EIN__c = '281764';
        en1.Phone__c = '(555) 123-4567';
        en1.Full_Time_Employees__c = 80;
        en1.Enrollment_Method__c='Third-party';
        en1.Carriers_BMLL_will_not_be_the_GA__c ='test';
        insert en1;
        enlist.add(en1);
        //insert enlist;
        System.debug('Enrollment1 info: ' + en1);
        enrollmentIds.add(en1.Id);
        
        Map<Id,Enrollment__c> eListMap = new Map<Id,Enrollment__c>();
        eListMap.put(en1.Id,en1);
        system.debug('elistMap '+ eListMap);
        
        Id RTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Benefit New Business / Renewal').getRecordTypeId();
        case caseRec=new case();
        caseRec.RecordTypeId = RTypeId;
        caseRec.Origin='Sales Escalation';
        caseRec.SuppliedEmail='test1234@test1234.com';
        caseRec.Reason='APS';
        caseRec.subject='Installation Problem';
        //caseRec.AccountId=accGpRec.id;
        caseRec.Status = 'New';
        caseRec.Approval_Status__c = 'Not Submitted';
        //caseRec.NBA_Rep__c = UserInfo.getUserId();
        caseRec.Enrollment__c = en1.Id;
        insert caseRec;
        System.debug('Case1 info: ' + caseRec);
        
        CaseComment comment1 = new CaseComment();
        comment1.ParentId = caseRec.Id;
        comment1.CommentBody = 'Case record 1 comment';
        comment1.IsPublished = TRUE;
        insert comment1;
        
        System.debug('Case comment ' + comment1);
        
        AFocus_EnrollmentTriggerHandler.carriersBMLLUpdatecreateCaseComments(enlist,eListMap);
        
    }

​​​​​​User-added image
  • October 01, 2022
  • Like
  • 0
I have written a test class but a few lines are not covered. I do not understand how to cover it. Please help!!!
@AuraEnabled
    public static demoWrapper getData(String Club){
        String userId= User.getLoggedInUserId();	
        List<User> userRec = [Select Id, Name,accountId,ContactId,ViewActivity__c from User where Id =: userId];
        List<BTS__c> BTSList = new  List<BTS__c>();
        List<Services__c> serviceList = new  List<Services__c>();
        Integer percentage = 0;
 
        demoWrapper wrapperobj = new demoWrapper();
        String accountIdstr = userRec[0].accountId;
        if(accountIdstr <> null && accountIdstr != ''){
            serviceList = [Select id, Account__c,Account__r.RecordType.Name,Account__r.CreatedDate,Broker_of_Record__c, Broker_of_Record__r.Club__c from Services__c where Broker_of_Record__c =: accountIdstr AND Account__r.RecordType.Name = 'Group'];
            BTSList = [Select id, name, RPoints__c,Milestone_Date__c,RecordType.Name,Trip_Status_Eligibility__r.Pinnacle_Target_Points__c,Trip_Status_Eligibility__r.RecordType.Name,
                                     Trip_Status_Eligibility__r.Premier_Target_Points__c,Trip_Status_Eligibility__r.Preferred_Target_Points__c, Trip_Status_Eligibility__r.Active__c,Trip_Status_Eligibility__r.Start_Date__c,
                                     Trip_Status_Eligibility__r.End_Date__c FROM BTS__c WHERE Trip_Status_Eligibility__r.Active__c = true AND Account__c =: accountIdstr AND RecordType.Name = 'Broker Reward' limit 1];
        }
        if(!BTSList.isEmpty() && BTSList[0].RecordType.Name == 'Broker Reward') {
            
             Integer additionaldays = Integer.valueOf(Label.AFocus_NewGrpNumOfDaysForRewardCal);
             Date grpcreatedStartDate = BTSList[0].Trip_Status_Eligibility__r.Start_Date__c - additionaldays;
             Date grpcreatedEndDate =  BTSList[0].Trip_Status_Eligibility__r.End_Date__c + additionaldays;
             Map<Id,Set<Id>> grpAccMap = new  Map<Id,Set<Id>>();
             if(!serviceList.isEmpty()){
                for(Services__c servRec : serviceList ){
                    if((servRec.Account__r.CreatedDate >= grpcreatedStartDate)  && (servRec.Account__r.CreatedDate <= grpcreatedEndDate))
                    { 
                        if(!grpAccMap.containsKey(servRec.Broker_of_Record__c)){
                            grpAccMap.put(servRec.Broker_of_Record__c,  new Set<Id>());
                        }
                        grpAccMap.get(servRec.Broker_of_Record__c).add(servRec.Account__c);  
                        
                    }
                }
             }
            system.debug('serviceList =' + serviceList);
            system.debug('grpAccMap =' + grpAccMap);
            
            
            if(grpAccMap != null && ! grpAccMap.isEmpty()){
                if(grpAccMap.get(accountIdstr) != null){
                    if(grpAccMap.get(accountIdstr).size() >= 2){
                        wrapperobj.GrpAccts = 2;
                    }
                    else if(grpAccMap.get(accountIdstr).size() ==1){
                        wrapperobj.GrpAccts = 1;
                    }
                  
                }
                
            }
            else if(grpAccMap == null || grpAccMap.isEmpty()){
                wrapperobj.GrpAccts = 0;
            }
          
             if(Club == 'premierClub' && BTSList[0].RPoints__c != null && BTSList[0].Trip_Status_Eligibility__r.Premier_Target_Points__c != null && BTSList[0].Trip_Status_Eligibility__c!=null){
                percentage =  Integer.valueOf(((BTSList[0].RPoints__c)*100) / (BTSList[0].Trip_Status_Eligibility__r.Premier_Target_Points__c));
                wrapperobj.tPoints =  Integer.valueOf(BTSList[0].Trip_Status_Eligibility__r.Premier_Target_Points__c);

             }
             else if(Club == 'preferredClub' && BTSList[0].RPoints__c != null && BTSList[0].Trip_Status_Eligibility__r.Preferred_Target_Points__c != null && BTSList[0].Trip_Status_Eligibility__c!=null){
                percentage =  Integer.valueOf(((BTSList[0].RPoints__c)*100) / (BTSList[0].Trip_Status_Eligibility__r.Preferred_Target_Points__c));
                wrapperobj.tPoints =  Integer.valueOf(BTSList[0].Trip_Status_Eligibility__r.Preferred_Target_Points__c);
              }
            
            wrapperobj.rPoints =  Integer.valueOf(BTSList[0].RPoints__c);
            wrapperobj.hasActive = BTSList[0].Trip_Status_Eligibility__r.Active__c;
        }
        
        wrapperobj.ViewRewards = userRec[0].ViewActivity__c;
        wrapperobj.perRewards= percentage;
        system.debug('wrapperobj' +wrapperobj);
        return wrapperobj;
    }
    
    public class demoWrapper
    {   @AuraEnabled
        public Integer tPoints{get;set;}
        @AuraEnabled
        public Integer rPoints{get;set;}
        @AuraEnabled
        public Integer perRewards{get;set;}
        @AuraEnabled
        public Boolean ViewRewards{get;set;}
        @AuraEnabled
        public Boolean hasActive{get;set;}
        @AuraEnabled
        public Integer GrpAccts{get;set;}
    }

These lines are not covered by the above code.
for(Services__c servRec : serviceList ){
                    if((servRec.Account__r.CreatedDate >= grpcreatedStartDate)  && (servRec.Account__r.CreatedDate <= grpcreatedEndDate))
                    { 
                        if(!grpAccMap.containsKey(servRec.Broker_of_Record__c)){
                            grpAccMap.put(servRec.Broker_of_Record__c,  new Set<Id>());
                        }
                        grpAccMap.get(servRec.Broker_of_Record__c).add(servRec.Account__c);  
                        
                    }
                }
 
if(grpAccMap != null && ! grpAccMap.isEmpty()){
                if(grpAccMap.get(accountIdstr) != null){
                    if(grpAccMap.get(accountIdstr).size() >= 2){
                        wrapperobj.GrpAccts = 2;
                    }
                    else if(grpAccMap.get(accountIdstr).size() ==1){
                        wrapperobj.GrpAccts = 1;
                    }
                  
                }
                
            }




 
  • September 13, 2022
  • Like
  • 0
@AuraEnabled
    public static String loadData(String strCaseInfo) {
        System.debug('caseInfo ' + strCaseInfo);
        CaseInfoWrapper caseInfo = (CaseInfoWrapper)JSON.deserialize(strCaseInfo, CaseInfoWrapper.class);

        rand_App_Customer__c customer = getCustomerInfo2(caseInfo.emailId);
        Case cse = new Case();
        cse.subject = 'tan One Problem Report';
        cse.Origin = rand_APP;
        cse.Status = 'Awaiting Approval';
        cse.Priority = 'Medium';
        cse.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get(rand_APP).getRecordTypeId();
        cse.Description = caseInfo.description;
        cse.rand_App_Customer__c = customer?.Id;
        cse.Issue_category__c = caseInfo.category;
        cse.Issue_Sub_Category__c = caseInfo.subCategory;
        insert cse;
        // for skip the triggers of ContentDocumentLink && ContentDocument
        ContentDocumentLinkTriggerUtil.skipTrigger = true;
        ContentDocumentTriggerUtil.skipTrigger = true;
        List<ContentVersion> cVersions = new List<ContentVersion>();
        for (FileInfoWrapper file : caseInfo.files) {
            System.debug('fileInfo ' + file);
            if (String.isNotBlank(file.base64Data)) {
                ContentVersion cv = new ContentVersion();
                cv.ContentLocation = 'S';
                cv.PathOnClient = file.fileName;
                cv.VersionData = EncodingUtil.base64Decode(file.base64Data);
                cv.Title = file.fileName;
                cVersions.add(cv);
            }
        }

 
  • September 07, 2022
  • Like
  • 0
How to cover a for loop in this below test method
@AuraEnabled
    public static string getCasesData(String caseId) {
        try {
            String query = 'SELECT Id,(SELECT Id, ContentDocumentId FROM ContentDocumentLinks), CaseNumber,Issue_category__c, Issue_Sub_Category__c, rand_App_Customer__r.Party_Id__c,rand_App_Customer__r.Customer_Mobile__c, Current_Location__Latitude__s, Current_Location__Longitude__s, LocationName__c, Owner.Name, Description,CreatedDate FROM Case WHERE Id =:caseId';
            query += ' ORDER BY CreatedDate DESC LIMIT 1';
            List<Case> cases = Database.query(query);
            CaseInfoWrapper caseInfo = new CaseInfoWrapper();
            set<Id> contentDocId = new set<Id>();
            for (Case caseRecord : cases) {
                caseInfo.description = caseRecord.Description;
                caseInfo.longitude = caseRecord.Current_Location__Latitude__s;
                caseInfo.latitude = caseRecord.Current_Location__Longitude__s;
                caseInfo.locationName = caseRecord.LocationName__c;
                caseInfo.category = caseRecord.Issue_category__c;
                caseInfo.subCategory = caseRecord.Issue_Sub_Category__c;
                caseInfo.partyId = caseRecord.rand_App_Customer__r.Party_Id__c;
                caseInfo.mobile = caseRecord.rand_App_Customer__r.Customer_Mobile__c;
                if (caseRecord.ContentDocumentLinks.size() > 0) {
                    for (ContentDocumentLink cdl : caseRecord.ContentDocumentLinks) {
                        contentDocId.add(cdl.ContentDocumentId);
                    }
                }
            }
            list<id> contectVersionID = new list<id>();
            map<Id, ContentDistribution> contectDMap = new map<Id, ContentDistribution>();
            for (ContentDistribution conDistribution : [SELECT Id, ContentDocumentId, ContentDownloadUrl FROM ContentDistribution WHERE ContentDocumentId IN:contentDocId ORDER BY CreatedDate ASC]) {
                contectVersionID.add(conDistribution.ContentDocumentId);
                contectDMap.put(conDistribution.ContentDocumentId, conDistribution);
            }
            list<FileInfoWrapper> fileInfo = new list<FileInfoWrapper>();
            caseInfo.contentDocumentIds = contectVersionID;
            for (ContentVersion cv : [SELECT Id, ContentDocumentId, FileExtension, FileType, PathOnClient, VersionData FROM ContentVersion WHERE ContentDocumentId IN:contectVersionID ORDER BY CreatedDate ASC]) {
                FileInfoWrapper fileData = new FileInfoWrapper();
                fileData.base64Data = String.valueOf(cv.VersionData);
                fileData.contentVersionId = cv.Id;
                fileData.fileName = cv.PathOnClient;
                if (contectDMap.containsKey(cv.ContentDocumentId)) {
                    fileData.publicUrl = contectDMap.get(cv.ContentDocumentId).ContentDownloadUrl;
                    fileData.contentDistributionId = contectDMap.get(cv.ContentDocumentId).Id;
                }
                fileInfo.add(fileData);
            }
            caseInfo.files = fileInfo;
            System.debug('caseInfo ##' + JSON.serialize(caseInfo));
            return JSON.serialize(caseInfo);
        }
        catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
        }
    }
I have written the below test class
@IsTest
    public static void getCasesDataTest(){


        Case caseInfo = new Case();

        caseInfo.description = 'test';
        caseInfo.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('rand_App').getRecordTypeId();
        insert  caseInfo;

        ContentVersion contentVersion = new ContentVersion(
        Title = 'Penguins',
        PathOnClient = 'Penguins.jpg',
        VersionData = Blob.valueOf('Test Content'),
        IsMajorVersion = true
        );
        insert contentVersion;    
        List<ContentDocument> documents = [
        SELECT Id, Title, LatestPublishedVersionId 
        FROM ContentDocument
        ];

        //create ContentDocumentLink  record 
        ContentDocumentLink cdl = New ContentDocumentLink();
        cdl.LinkedEntityId = caseInfo.id;
        cdl.ContentDocumentId = documents[0].Id;
        cdl.shareType = 'V';
        insert cdl;
           
        randAppController.getCasesData(caseInfo.id);

    }
But not covering the for loop that is
 
for (ContentVersion cv : [SELECT Id, ContentDocumentId, FileExtension, FileType, PathOnClient, VersionData FROM ContentVersion WHERE ContentDocumentId IN:contectVersionID ORDER BY CreatedDate ASC]) {
                FileInfoWrapper fileData = new FileInfoWrapper();
                fileData.base64Data = String.valueOf(cv.VersionData);
                fileData.contentVersionId = cv.Id;
                fileData.fileName = cv.PathOnClient;
                if (contectDMap.containsKey(cv.ContentDocumentId)) {
                    fileData.publicUrl = contectDMap.get(cv.ContentDocumentId).ContentDownloadUrl;
                    fileData.contentDistributionId = contectDMap.get(cv.ContentDocumentId).Id;
                }
                fileInfo.add(fileData);
            }

 
  • September 07, 2022
  • Like
  • 0
@AuraEnabled
    public static FileInfoWrapper createPublicUrl(String fileData) {
        try {
            FileInfoWrapper file = (FileInfoWrapper)JSON.deserialize(fileData, FileInfoWrapper.class);
            if (String.isNotBlank(file.base64Data)) {
                ContentVersion cv = new ContentVersion();
                cv.ContentLocation = 'S';
                cv.PathOnClient = file.fileName;
                cv.VersionData = EncodingUtil.base64Decode(file.base64Data);
                cv.Title = file.fileName;
                insert cv;
                ContentDistribution cd = new ContentDistribution();
                cd.Name = file.fileName;
                cd.ContentVersionId = cv.Id;
                cd.PreferencesAllowViewInBrowser = true;
                cd.PreferencesLinkLatestVersion = true;
                cd.PreferencesNotifyOnVisit = false;
                cd.PreferencesPasswordRequired = false;
                cd.PreferencesAllowOriginalDownload = true;
                insert cd;
                cd = [SELECT Id, ContentVersionId, ContentDownloadUrl FROM ContentDistribution WHERE Id = :cd.Id];
                file.publicUrl = cd.ContentDownloadUrl;
                file.contentDistributionId = cd.Id;
                file.contentVersionId = cd.ContentVersionId;
                return file;
            }
            else {
                return file;
            }
        }
  • September 06, 2022
  • Like
  • 0
@AuraEnabled
    public static String loadData(String strCaseInfo) {
        System.debug('caseInfo ' + strCaseInfo);
        CaseInfoWrapper caseInfo = (CaseInfoWrapper)JSON.deserialize(strCaseInfo, CaseInfoWrapper.class);
        //rand_App_Customer__c customer = getCustomerInfo(caseInfo.partyId, caseInfo.mobile);
        rand_App_Customer__c customer = getCustomerInfo2(caseInfo.emailId);
        Case cse = new Case();
        cse.subject = 'tan One Problem Report';
        cse.Origin = rand_APP;
        cse.Status = 'Awaiting Approval';
        cse.Priority = 'Medium';
        cse.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get(rand_APP).getRecordTypeId();
        // cse.Hex_Service_Request__c = 'System Update';
        // cse.Hex_Service_Request_new__c = 'System Update';
        // cse.ProblemCode__c = 'NOC for Name Addition - HO';
        cse.Description = caseInfo.description;
        //RN Comment
        //cse.Current_Location__Latitude__s = caseInfo.latitude;
        //cse.Current_Location__Longitude__s = caseInfo.longitude;
        cse.rand_App_Customer__c = customer?.Id;
        //cse.LocationName__c = caseInfo.locationName; */
        cse.Issue_category__c = caseInfo.category;
        cse.Issue_Sub_Category__c = caseInfo.subCategory;
        insert cse;
        // for skip the triggers of ContentDocumentLink && ContentDocument
        ContentDocumentLinkTriggerUtil.skipTrigger = true;
        ContentDocumentTriggerUtil.skipTrigger = true;
        List<ContentVersion> cVersions = new List<ContentVersion>();
        for (FileInfoWrapper file : caseInfo.files) {
            System.debug('fileInfo ' + file);
            if (String.isNotBlank(file.base64Data)) {
                ContentVersion cv = new ContentVersion();
                cv.ContentLocation = 'S';
                cv.PathOnClient = file.fileName;
                cv.VersionData = EncodingUtil.base64Decode(file.base64Data);
                cv.Title = file.fileName;
                cVersions.add(cv);
            }
        }
        List<Id> contentDocumentIds = new List<Id>(caseInfo.contentDocumentIds);
        if (cVersions.size() > 0) {
            insert cVersions;
            List<ContentDistribution> ContentDistributionList = new List<ContentDistribution>();
            for(ContentVersion ctv : cVersions){
                ContentDistribution cd = new ContentDistribution();
                cd.Name = ctv.Title;
                cd.ContentVersionId = ctv.Id;
                cd.PreferencesAllowViewInBrowser = true;
                cd.PreferencesLinkLatestVersion = true;
                cd.PreferencesNotifyOnVisit = false;
                cd.PreferencesPasswordRequired = false;
                cd.PreferencesAllowOriginalDownload = true;
                ContentDistributionList.add(cd);
            }
            if(ContentDistributionList.size() > 0){
                INSERT ContentDistributionList;
            }
            Set<Id> cvIds = new Map<Id, ContentVersion>(cVersions).keySet();
            for (ContentVersion cVersion : [SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id IN:cvIds ORDER BY CreatedDate ASC]) {
                contentDocumentIds.add(cVersion.ContentDocumentId);
            }
        }
        List<ContentDocumentLink> links = new List<ContentDocumentLink>();
        for (Id contentDocumentId : contentDocumentIds) {
            ContentDocumentLink link = new ContentDocumentLink();
            link.LinkedEntityId = cse.Id;
            link.ContentDocumentId = contentDocumentId;
            link.ShareType = 'V';
            links.add(link);
        }
        insert links;
        return [SELECT CaseNumber FROM Case WHERE Id = :cse.Id]?.CaseNumber;
    }
Please help me to write a test method for the above method.
  • September 06, 2022
  • Like
  • 0

@AuraEnabled
    public static List<CaseResultWrapper> getCases(String emailid) {
        try {
            List<CaseResultWrapper> result = new List<CaseResultWrapper>();
            List<String> caseStatuses = new List<String>{'Approved', 'Awaiting Approval', 'Rejected'};
            String query = 'SELECT Id,CaseNumber, Issue_category__c, Points__c, Issue_Sub_Category__c, (SELECT Id, ContentDocumentId FROM ContentDocumentLinks WHERE ContentDocument.FileType != \'wav\'), Status, Country__c, Owner.Name, Description,CreatedDate FROM Case WHERE RecordType.DeveloperName= :rand_APP AND rand_App_Customer__r.Customer_Email__c !=null AND status IN :caseStatuses';
            if (String.isNotBlank(emailid)) {
                query += ' AND rand_App_Customer__r.Customer_Email__c=:emailid';
            }
            /*else if (String.isNotBlank(mobile)) {
                query += 'AND rand_App_Customer__r.Customer_Mobile__c=:mobile';
            }
            else {
                query += 'AND Id = null';
            }*/
            query += ' ORDER BY CreatedDate DESC LIMIT 50'; //CreatedDate = THIS_QUARTER
            System.debug('getCases query   '+query);
            List<Case> cases = Database.query(query);
            Map<Id, Case> contentCaseMap = new Map<Id, Case>();
            for (Case caseRecord : cases) {
                if (caseRecord.ContentDocumentLinks.size() > 0 && caseRecord.ContentDocumentLinks[0].ContentDocumentId != null) {
                    contentCaseMap.put(caseRecord.ContentDocumentLinks[0].ContentDocumentId, caseRecord);
                }
                else {
                    contentCaseMap.put(caseRecord.Id, caseRecord);
                }
            }
            Map<Id, String> contentUrlMap = new Map<Id, String>();
            for (ContentDistribution conDistribution : [SELECT Id, ContentDocumentId, ContentDownloadUrl FROM ContentDistribution WHERE ContentDocumentId IN:contentCaseMap.keySet() ORDER BY CreatedDate ASC]) {
                contentUrlMap.put(conDistribution.ContentDocumentId, conDistribution.ContentDownloadUrl);
            }
            for (Id contentId : contentCaseMap.keySet()) {
                CaseResultWrapper caseWrp = new CaseResultWrapper();
                caseWrp.contentDocId = contentId;
                caseWrp.caseRecord = contentCaseMap.get(contentId);
                caseWrp.imageUrl = contentUrlMap.get(contentId);
                caseWrp.categoryLogoUrl ='';
                DateTime dT = contentCaseMap.get(contentId).CreatedDate;
                If(dT.month()==1){
                    caseWrp.createdDate = dT.day()+'-Jan-'+dT.year();
                    }
                If(dT.month()==2){
                caseWrp.createdDate = dT.day()+'-Feb-'+dT.year();
                }
                If(dT.month()==3){
                caseWrp.createdDate = dT.day()+'-Mar-'+dT.year();
                }
                If(dT.month()==4){
                caseWrp.createdDate = dT.day()+'-Apr-'+dT.year();
                }
                If(dT.month()==5){
                caseWrp.createdDate = dT.day()+'-May-'+dT.year();
                }
                If(dT.month()==6){
                caseWrp.createdDate = dT.day()+'-Jun-'+dT.year();
                }
                If(dT.month()==7){
                caseWrp.createdDate = dT.day()+'-Jul-'+dT.year();
                }
                If(dT.month()==8){
                caseWrp.createdDate = dT.day()+'-Aug-'+dT.year();
                }
                If(dT.month()==9){
                caseWrp.createdDate = dT.day()+'-Sep-'+dT.year();
                }
                If(dT.month()==10){
                caseWrp.createdDate = dT.day()+'-Oct-'+dT.year();
                }
                If(dT.month()==11){
                caseWrp.createdDate = dT.day()+'-Nov-'+dT.year();
                }
                If(dT.month()==12){
                caseWrp.createdDate = dT.day()+'-Dec-'+dT.year();
                }
                result.add(caseWrp);
            }
            return result;
        }
The parameter that i have passed that is email is not in case object but in rand_App_Customer__c object- and case child object of rand_App_Customer__c object- so how i can give the parameter for this method
Below is my test method
 
@IsTest
    public static void getCasesTest(){

        // Id rand_AppRecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('rand_App').getRecordTypeId();
        rand_App_Customer__c randCustomer = new rand_App_Customer__c();
        randCustomer.Customer_ID__c = '1234567';
        randCustomer.Customer_Email__c = 'tannow@tan.ae';
        insert randCustomer;
        
        Case cse = new Case();
        
        cse.Issue_Sub_Category__c = 'Test category';
        cse.Status = 'Approved';   
        cse.Description = 'Test';
        cse.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('rand_App').getRecordTypeId();
        cse.rand_App_Customer__c = randCustomer.Id;

        insert cse;
  
        List<ContentDocument> documents = [SELECT Id,title,LatestPublishedVersionId FROM ContentDocument];
        ContentDocumentLink cdl = new ContentDocumentLink();

        cdl.LinkedEntityId = cse.id;
        cdl.ContentDocumentId = documents[0].Id;
        cdl.shareType = 'V';
        // cdl.FileType = 'jpg';
        insert cdl;

        
        randAppController.getCases('tannow@tan.ae');

}

 
  • September 05, 2022
  • Like
  • 0
I am not understanding what and how to put data for the below method
 
@AuraEnabled
    public static string getCasesData(String caseId) {
        try {
            String query = 'SELECT Id,(SELECT Id, ContentDocumentId FROM ContentDocumentLinks), CaseNumber,Issue_category__c, Issue_Sub_Category__c, rand_App_Customer__r.Party_Id__c,rand_App_Customer__r.Customer_Mobile__c, Current_Location__Latitude__s, Current_Location__Longitude__s, LocationName__c, Owner.Name, Description,CreatedDate FROM Case WHERE Id =:caseId';
            query += ' ORDER BY CreatedDate DESC LIMIT 1';
            List<Case> cases = Database.query(query);
            CaseInfoWrapper caseInfo = new CaseInfoWrapper();
            set<Id> contentDocId = new set<Id>();
            for (Case caseRecord : cases) {
                caseInfo.description = caseRecord.Description;
                caseInfo.longitude = caseRecord.Current_Location__Latitude__s;
                caseInfo.latitude = caseRecord.Current_Location__Longitude__s;
                caseInfo.locationName = caseRecord.LocationName__c;
                caseInfo.category = caseRecord.Issue_category__c;
                caseInfo.subCategory = caseRecord.Issue_Sub_Category__c;
                caseInfo.partyId = caseRecord.rand_App_Customer__r.Party_Id__c;
                caseInfo.mobile = caseRecord.rand_App_Customer__r.Customer_Mobile__c;
                if (caseRecord.ContentDocumentLinks.size() > 0) {
                    for (ContentDocumentLink cdl : caseRecord.ContentDocumentLinks) {
                        contentDocId.add(cdl.ContentDocumentId);
                    }
                }
            }
            list<id> contectVersionID = new list<id>();
            map<Id, ContentDistribution> contectDMap = new map<Id, ContentDistribution>();
            for (ContentDistribution conDistribution : [SELECT Id, ContentDocumentId, ContentDownloadUrl FROM ContentDistribution WHERE ContentDocumentId IN:contentDocId ORDER BY CreatedDate ASC]) {
                contectVersionID.add(conDistribution.ContentDocumentId);
                contectDMap.put(conDistribution.ContentDocumentId, conDistribution);
            }
            list<FileInfoWrapper> fileInfo = new list<FileInfoWrapper>();
            caseInfo.contentDocumentIds = contectVersionID;
            for (ContentVersion cv : [SELECT Id, ContentDocumentId, FileExtension, FileType, PathOnClient, VersionData FROM ContentVersion WHERE ContentDocumentId IN:contectVersionID ORDER BY CreatedDate ASC]) {
                FileInfoWrapper fileData = new FileInfoWrapper();
                fileData.base64Data = String.valueOf(cv.VersionData);
                fileData.contentVersionId = cv.Id;
                fileData.fileName = cv.PathOnClient;
                if (contectDMap.containsKey(cv.ContentDocumentId)) {
                    fileData.publicUrl = contectDMap.get(cv.ContentDocumentId).ContentDownloadUrl;
                    fileData.contentDistributionId = contectDMap.get(cv.ContentDocumentId).Id;
                }
                fileInfo.add(fileData);
            }
            caseInfo.files = fileInfo;
            System.debug('caseInfo ##' + JSON.serialize(caseInfo));
            return JSON.serialize(caseInfo);
        }
        catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
        }
    }
So far I have written below myself as per my understanding but it is not giving coverage after "for (Case case record : cases)".
 
@IsTest
    public static void getCasesDataTest(){


        Case caseInfo = new Case();

        caseInfo.description = 'test';
        caseInfo.RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('rand_App').getRecordTypeId();
        insert  caseInfo;

        ContentVersion contentVersion = new ContentVersion(
        Title = 'Penguins',
        PathOnClient = 'Penguins.jpg',
        VersionData = Blob.valueOf('Test Content'),
        IsMajorVersion = true
        );
        insert contentVersion;    
        List<ContentDocument> documents = [
        SELECT Id, Title, LatestPublishedVersionId 
        FROM ContentDocument
        ];

        //create ContentDocumentLink  record 
        ContentDocumentLink cdl = New ContentDocumentLink();
        cdl.LinkedEntityId = caseInfo.id;
        cdl.ContentDocumentId = documents[0].Id;
        cdl.shareType = 'V';
        insert cdl;

        randAppController.CaseInfoWrapper wrapper= new randAppController.CaseInfoWrapper();
        wrapper.category = 'Emaar Gift Card';
        wrapper.subCategory = 'EGC - Card Error/Machine Network Failure';
        wrapper.partyId = '1234';
        wrapper.mobile = '7894561230';
       
    
        randAppController.getCasesData('5003M038208iGzOLOU');

    }

Please help...
  • September 05, 2022
  • Like
  • 0
I need to update the status(ak2397__Status__c) picklist field of the Custom Orders(ak2397__Orders__c) object using a lightning button. I have created a button 'cancel' and 'reorder'. If I click the cancel button then the status of the object should change from 'Ordered' to 'Cancelled' and if I click the reorder button then the status should change from 'Cancelled to 'Ordered'. I am stuck pls help.

User-added imageHere is my complete code
Component----
<aura:component controller="TestForOMapex" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId" access="global" >
    <aura:attribute name="accList" type="List"/>  
    <aura:attribute name="activeSections" type="List" />
    <aura:attribute name="searchResult" type="List" description="use for store and display account list return from server"/>
    <aura:attribute name="searchKeyword" type="String" description="use for store user search input"/>
    <aura:handler name="init" value="{!this}" action="{!c.doinit}"/>
    <lightning:card title="Customer Order Details" iconName="standard:Contact"> 
        <div class="slds-border_bottom">
        </div>
        <div class="slds-scrollable_y">
            <lightning:layoutItem size="12">
                <div class="slds-text-longform">
                    <lightning:input value="{!v.searchKeyword}"
                                     placeholder="Search Customers"
                                     aura:id="searchField"
                                     name="searchField"
                                     onchange="{!c.onChange1 }"/>
                    <br/>  
                </div>
            </lightning:layoutItem>
        </div>
        <div class="slds-align_absolute-center">
            <table class="slds-table slds-table_cell-buffer slds-table_bordered">
                <thead>
                    <tr class="slds-line-height_reset">
                     
                         <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order ID">Order ID</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Orders">Food Item</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order detail">Order Details</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order detail">Order Date</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Order detail">Status</div>
                        </th>  
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Edit">Cancel</div>
                        </th>
                        <th class="slds-text-title_caps" scope="col">
                            <div class="slds-truncate" title="Edit">ReOrder</div>
                        </th>
                    </tr>
                </thead>
                <br/>
                <tbody>
                    <aura:iteration items="{!v.accList}" var="acc" indexVar="index">
                        <tr class="slds-line-height_reset">
                        
                            <td class="slds-text-title_caps" scope="col">
                                <div class="slds-truncate" title="FirstName">{!acc.ak2397__Order_Id__c}</div>
                            </td>
                            <td class="slds-text-title_caps" scope="col"> 
                                <div class="slds-truncate" title="Food Item"> {!acc.ak2397__Food_Item__c}</div>
                            </td>
                            <td class="slds-text-title_caps" scope="col">   
                                <div class="slds-truncate" title="Order Detail">{!acc.ak2397__Order_Details__c}</div>
                            </td>
                              <td class="slds-text-title_caps" scope="col">   
                                <div class="slds-truncate" title="Order Date">{!acc.CreatedDate}</div>
                            </td>
                              <td class="slds-text-title_caps" scope="col">   
                                <div class="slds-truncate" title="Status">{!acc.ak2397__Status__c}</div>
                            </td>
                            <td data-label="icon" class="slds-col slds-size_1-of-12" onclick="{!c.cancel}" id="{!acc.Id}">
                                <lightning:icon iconName="utility:delete" size="small" />
                            </td>
                             <td data-label="icon" class="slds-col slds-size_1-of-12" onclick="{!c.reorder}" id="{!acc.Id}">
                                <lightning:icon iconName="utility:change_record_type" size="small" />
                            </td>                            
                        </tr>
                    </aura:iteration>
                </tbody>
            </table>
        </div>
    </lightning:card>
</aura:component>
Js Controller
({
    onChange1: function (component, evt, helper) {
        var selectedLimit = component.find('searchField').get('v.value');
        component.set('v.searchKeyword', selectedLimit);
        helper.SearchHelper(component, event);
    },
        doinit: function(component) {
        var action = component.get('c.getContactData');
        var self = this;
        action.setCallback(this, function(actionResult) {
        component.set('v.acclist', actionResult.getReturnValue());
	});
		$A.enqueueAction(action);
	}, 
    cancel : function(component, event) {
        var action = component.get("c.cancelContact");
        action.setParams({contactId:event.target.id});
        action.setCallback(this, function(response) {
            component.set("v.accList",response.getReturnValue());
        });
        $A.enqueueAction(action);
    },
        reorder : function(component, event) {
            var action = component.get("c.updateContact");
            action.setParams({contactId:event.target.id});
            action.setCallback(this, function(response) {
                component.set("v.accList",response.getReturnValue());    
            });
            $A.enqueueAction(action);
        }, 
})

Helper
({
    SearchHelper : function(component, event, helper) {
        var action = component.get('c.fetchAcc');
         action.setParams({ searchKey : component.get("v.searchKeyword"),
                          });
        action.setCallback(this, function(response){
            var state = response.getState();
            if(state === "SUCCESS"){
                var allValues = response.getReturnValue();
                console.log("allValues--->>> " + JSON.stringify(allValues));
                //component.set('v.activeSections', allValues.Name);
                component.set('v.accList', allValues);
            }
            else if(state === "ERROR") {
                var errors = response.getError();
                if(errors){
                    if(errors[0] && errors[0].message){
                        console.log("Error Message: " + errors[0].message);
                    }
                }
                else{
                    console.log("Unknown Error");
                }
            }
        });
        $A.enqueueAction(action);
    }
});

Apex Controller
public class TestForOMapex {
  @AuraEnabled(cacheable=true)
    public static List<ak2397__Orders__c> fetchAcc (String searchKey){
        String query= 'select ak2397__Order_Id__c, ak2397__Food_Item__c, ak2397__Order_Details__c, CreatedDate, ak2397__Status__c from ak2397__Orders__c';
         if ( searchKey != Null ) {
            String key = '%' + searchKey + '%';
            query += ' WHERE Name LIKE :key';
        }system.debug(Database.query( query ));
         return Database.query( query );
    }
    @AuraEnabled
    public static List<ak2397__Orders__c> getContactData(){
        return [select Id from ak2397__Orders__c Limit 10];
    }
    @AuraEnabled
    public static List<ak2397__Orders__c> cancelContact(String contactId)
    {
        List<ak2397__Orders__c> upContact = [SELECT Id, ak2397__Status__c FROM ak2397__Orders__c];
        if(upContact.size()>0){
            for(ak2397__Orders__c om: upContact){
                om.ak2397__Status__c = 'Cancelled';
                upContact.add(om);
            }
            upsert upContact;
        }
        return getContactData();
    public static List<ak2397__Orders__c> updateContact(String contactId)
    {
        List<ak2397__Orders__c> upContact = [SELECT Id, ak2397__Status__c FROM ak2397__Orders__c];
        if(upContact.size()>0){
            for(ak2397__Orders__c om: upContact){
                om.ak2397__Status__c = 'Ordered';
                upContact.add(om);
            }
            upsert upContact;
        }
        return getContactData();
    }
}
}

 
This UserMigrationRoute class is migration Community profile users to Partner profile users and saving their username Password in userMigration object. I have really hard time writing test classes. i have written Test class but don't know exactly how i can get full coverage. pls, help....
I am getting 65 percent coverage!

Line 48-77 is not covered (Boolean isSUccess=createUserMigration('',objUser[0],'');) to (return maprespone;) 
Main class
public class UserMigrationRoute extends BaseRoute{
    public override Object doPost() {
        List<String> allowhosts=Label.Host_Name.split(',');
        Map<String,object> maprespone=new  Map<String,object>();
        system.debug('Hi');
        if(String.isNotBlank(request.headers.get('Host')) && String.isNotBlank(request.headers.get('Host')) && !allowhosts.contains(request.headers.get('Host'))){
            setResponseMessage('Invalid Host Header',ConstantsUtils.ERROR_CODE);   
            return null;  
        }
        if(this.request.headers.get('Content-Type')!=null && this.request.headers.get('Content-Type').substringAfter('/').equalsIgnoreCase('xml')){
            setResponseMessage('Request in '+request.headers.get('Content-Type').substringAfter('/')+' format. Please provide request in json format.',ConstantsUtils.ERROR_CODE);
            return null;
        }
        map<String,object> data=this.getBodyJSON();
        string id=(string)data.get('userId');
        Map<String,String> mapofPartnerRecordType=new Map<String,String>();
        List<User> objUser;
        try{
            objUser=[SELECT Id,Profile.NAME,IsActive ,userName,AccountId,Account.IsPartner,IsPortalEnabled  FROM User WHERE IsActive = TRUE and AccountId!=null and id=:id];
            if(objUser==null ||  objUser.size()==0){
                setResponseMessage('Invalid uesrId, Please provide community user id',ConstantsUtils.ERROR_CODE); 
                return null;
            } 
            List<Account> lstAccount=new List<Account>();
            if(!objUser[0].Account.IsPartner){
                Account account=new Account();
                account.Id=objUser[0].AccountId;
                account.IsPartner=true;
                lstAccount.add(account);
               // update lstAccount;  //commented by shabnoor for testing
            }
            
            if(mapOfCustomerAndPartner.containsKey(objUser[0].profile.Name)){
                String partnerProfile=mapOfCustomerAndPartner.get(objUser[0].profile.Name);
                objUser[0].ProfileId=[Select Id , Name from profile where Name= :partnerProfile].Id;
            }
            
            update objUser[0];
            
            Boolean isSUccess=createUserMigration('',objUser[0],'');
            if(isSUccess){
                maprespone.put('statuscode',1);
                maprespone.put('statusmessage','user migration successfully done'); 
                return maprespone;
            }
            maprespone.put('statuscode',0);
            maprespone.put('statusmessage','user migration failed');
            return maprespone;
            
        }
        catch(DMLException ex){
            
            if(ex.getDmlType(0)==StatusCode.DUPLICATE_USERNAME){
                String charString = '!@#$%^&*()nopqrstuvwABCDPQRSTUVWXYZ0123456789abcdefghijkEFGHIJKLMNOlmxyz';
                String randomNew = '';
                while (randomNew .length() < 8){
                    Integer changeInt = Math.mod(Math.abs(Crypto.getRandomInteger()), charString.length());
                    randomNew += charString.substring(changeInt , changeInt +1);
                }
                Boolean isSUccess=createUserMigration(objUser[0].userName.replace('@',DateTime.now().millisecond() +'@'),objUser[0],randomNew);
                if(isSUccess){
                    system.setPassword(objUser[0].Id, randomNew);
                    maprespone.put('statuscode',1);
                    maprespone.put('statusmessage','user migration successfully done'); 
                    return maprespone;
                }
                maprespone.put('statuscode',0);
                maprespone.put('statusmessage',ex.getMessage());
                return maprespone;
            }
            maprespone.put('statuscode',0);
            maprespone.put('statusmessage',ex.getMessage());
            
        }
        catch(Exception ex){
            maprespone.put('statuscode',0);
            maprespone.put('statusmessage',ex.getMessage());
            return maprespone;
        }
        return maprespone;
    }
    
    public void setResponseMessage(String strMessge,String strCode){
        response.addHeader('Content-Type', 'application/json');
        response.responseBody = Blob.valueOf( '[{"message":' + strMessge + ',"errorCode":'+ strCode + '}]' );
        response.statusCode = 400;
        
    }
    
    public Boolean  createUserMigration(String Newusername,User objUser,String tempPassword){
        try{
            UserMigration__c UserMigration=new UserMigration__c();
           // UserMigration.Newusername__c=objUser.userName;
            if(String.isNotBlank(Newusername)){
                UserMigration.Newusername__c=Newusername;
            }
            UserMigration.OlduserName__c=objUser.userName;
            UserMigration.User__c=objUser.id;
            if(String.isNotBlank(tempPassword)){
                UserMigration.tempPassword__c= tempPassword; 
            }
            insert UserMigration;
            return true;
        }catch(Exception ex){
            return false;
        }
        
    }
    
    public map<String,String> mapOfCustomerAndPartner=new Map<String,String>{
        'Customer Community - Admin'=>'Partner Community - Admin',
            'Customer Community - Agent'=>'Partner Community - Agent',
            'Customer Community - Agent + Admin'=>'Partner Community - Agent + Admin',
            'Customer Community - Auth + Admin'=>'Partner Community - Auth + Admin',
            'Customer Community - Auth + Admin + Agent'=>'Partner Community - Auth + Admin + Agent',
            'Customer Community - Auth + Agent'=>'Partner Community - Auth + Agent',
            'Customer Community - Auth Officer'=>'Partner Community - Auth Officer',
            'Customer Community - Customer Direct User'=>'Partner Community - Customer Direct User',
            'Customer Community - Owner'=>'Partner Community - Owner',           
            'Customer Community Plus User'=>'Partner Community - Admin',
            'Customer Direct Guest'=>'Partner Direct Guest'
            };
                
                
                
                }

Test class
public with sharing class UserMigrationRouteTest {      
    
    @testSetup
    static void setup() {
        Broker_App_Settings__c BAS = new Broker_App_Settings__c(
            General_Partner_User_Id__c = '0054H0000067b6o',
            ApiToken__c = '6e9bece1914809fb8493146417e722f6',
            IVector__c = 'FFFFFFFFFFFFFFFF',
            Key__c = 'x/A%D*G-KaPdSgVkYp3s6v9y&B&E(H+M',
            General_Partner_User_Name__c = 'qaqqqqqqqqqqqqqq.com'
        );
        insert BAS;
        
        TestDataSetup.createIntegrationCustomSettingsData();
        TestDataSetup.createTriggerSettingsData();
        TestDataSetup.createAppSettingsData();
        Account partnerAccount = TestDataSetup.createAgencyAccount();
        insert partnerAccount;
        
        Contact objAgencyContact = TestDataSetup.createAgentContact(
            partnerAccount.Id
        );
        objAgencyContact.RERA_Card_No__c = '123456';
        objAgencyContact.Sys_Agent_Representative__c = true;
        insert objAgencyContact;
        
        Profile portalProfile = [
            SELECT Id
            FROM Profile
            WHERE Name = 'Sales Partner Community User'
            LIMIT 1
        ];
        
        User objPartnerUser = new User(
            Username = System.now().millisecond() + 'test999@test.com',
            ContactId = objAgencyContact.Id,
            ProfileId = portalProfile.Id,
            Alias = 'pTst',
            Email = 'testingisgoingon999@test.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Con',
            CommunityNickname = 'test999',
            TimeZoneSidKey = 'America/Los_Angeles',
            LocaleSidKey = 'en_US',
            LanguageLocaleKey = 'en_US'
        );
        Database.insert(objPartnerUser);
    }

    
    static testMethod void verifyContentType() {
        User objPartnerUser = [
            SELECT Id, Username
            FROM User
            WHERE email = 'testingisgoingon999@test.com'
        ];
        System.runAs(objPartnerUser) {
            String requestURI = '/userprofileupdate/';
            String RESOURCE_PATH = '/services/apexrest' + requestURI;
            map<String, String> headers = new Map<String, String>();
            headers.put('Content-Type', 'application/json');
            headers.put('Host', 'www.gmail1.com');
            Broker_App_Settings__c BAS = Broker_App_Settings__c.getOrgDefaults();
            headers.put('apikey', BAS.ApiToken__c);
            Map<String, String> requestData = new Map<string, string>();
            String JsonRecord = Json.serialize(requestData);
            setRestCall(RESOURCE_PATH, requestURI, 'POST', headers, null, JsonRecord);
            try {
                RestResponse resp = RestContext.Response;
                UserMigrationResource.handlePost();
                resp = RestContext.Response;
            } catch (exception ex) {
            }
        }
    }
    
    static testMethod void createMigrationUserNegative(){

        List<User> objUser = [SELECT Id,Profile.NAME,IsActive ,userName,AccountId,Account.IsPartner,IsPortalEnabled  FROM User WHERE IsActive = TRUE and AccountId!=null];

        UserMigrationRoute mem = new UserMigrationRoute();
        Boolean isSUccess  = mem.createUserMigration('newusername123',objUser[0],'newpassword1234');
        System.assertEquals(false,isSUccess, 'Result');
    }
        static testMethod void createMigrationPositive(){

        List<User> objUser = [SELECT Id,Profile.NAME,IsActive ,userName,AccountId,Account.IsPartner,IsPortalEnabled  FROM User WHERE IsActive = TRUE and AccountId!=null];
        UserMigrationRoute mem = new UserMigrationRoute();
        Boolean isSUccess = mem.createUsermigration('',objUser[0],'');
        System.assertEquals(true,isSUccess,'result');
    
    }
    
    static testMethod void verifydoPost() {

        User objPartnerUser = [
            SELECT Id, Username
            FROM User
            WHERE email = 'testingisgoingon999@test.com'
        ];
        System.runAs(objPartnerUser) {
            CaseTriggerHandler.TriggerDisabled = true;
            String requestURI = '///userprofileupdate/';
            String RESOURCE_PATH = '/services/apexrest' + requestURI;
            map<String, String> headers = new Map<String, String>();
            Broker_App_Settings__c BAS = Broker_App_Settings__c.getOrgDefaults();
            headers.put('apikey', BAS.ApiToken__c);
            Map<String, String> requestData = new Map<string, string>();
            requestData.put('userId', '0053M000001YvnTQAS');
            String JsonRecord = Json.serialize(requestData);
            setRestCall(RESOURCE_PATH, requestURI, 'POST', headers, null, JsonRecord);
            
            try {
                RestResponse resp = RestContext.Response;
                UserMigrationResource.handlePost();
                resp = RestContext.Response;
                //System.assertEquals(1,resp.statusCode,'success'); //Assert with expected status code.
            } catch (exception ex) {
            }
        }
    }
    
    public static void setRestCall(
        String resourcePath,
        String requestURI,
        String method,
        map<String, String> headers,
        map<String, String> paraMeters,
        String body
    ) {
        RestRequest req = new RestRequest();
        req.requestURI = requestURI;
        req.resourcePath = resourcePath;
        req.httpMethod = method;
        
        if (String.isNotEmpty(body)) {
            req.requestBody = Blob.valueOf(body);
        }
        if (headers != null && headers.size() > 0) {
            req.headers.putAll(headers);
        }
        if (paraMeters != null && paraMeters.size() > 0) {
            req.params.putAll(paraMeters);
        }
        system.debug('test' + req);
        RestContext.Request = req;
        RestContext.Response = new RestResponse();
    }
    
}