function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
nilesh walke 6nilesh walke 6 

private test class

 global with sharing class SystemEmailCompCtrl {
 public boolean isExternal {
    get {
      User user = [SELECT ContactId FROM User WHERE Id =:UserInfo.getUserId() AND IsActive=true WITH SECURITY_ENFORCED];
      if(user.ContactId != null){
        return true;
      }else {
        return false;
      }
    }
  }
  
  public boolean isAttachmentEnabled {
    get {
      return GNT.KeyValueStoreHelper.getBooleanValue('EnableEmailAttachment',true) == null ? false : GNT.KeyValueStoreHelper.getBooleanValue('EnableEmailAttachment',true);
    }
  }
  
  global class ResultWrapper{
    public Id id;
    public String name;
    public String email;
    public String collaborationType;
    public Integer memberCount;
    public String objType;
    public ResultWrapper(Sobject sobj,Boolean isGroup){
      this.id = (Id)sobj.get('Id');
      String strId = String.valueof(Id);
      if(strId.startsWith('005')){
        this.objType = 'User';
      }else {
        this.objType = 'Contact';
      }
      
      this.name = (String)sobj.get('Name');
      if(isGroup){
        this.collaborationType = (String)sobj.get('CollaborationType');
        this.memberCount = (Integer)sobj.get('MemberCount');
      }
      else{
        this.email = (String)sobj.get('Email');
      }
    }
  }
  
  @RemoteAction
  global static List<ResultWrapper> getRecordsNew(Map<String, Object> paramatersMap ){
    System.debug('In getRecordsNew::');
    String searchString = (String)paramatersMap.get('searchString');
    String objectApiName = (String)paramatersMap.get('objectApiName');
    String fieldToDisplay = (String)paramatersMap.get('fieldToDisplay');
    String fieldBindToTarget = (String)paramatersMap.get('fieldBindToTarget');
    String fieldToFilter = (String)paramatersMap.get('fieldToFilter');
    String selectedRecordIds = (String)paramatersMap.get('selectedRecordIds');
    
    
    String searchType = (String)paramatersMap.get('searchType');
    Boolean isExternalUser = false;
    if(searchType.trim().equals('External')){
      isExternalUser = true;
    }
    List<Sobject> records;
    List<ResultWrapper> resultWrappers = new List<ResultWrapper>();
    try{
      
      List<String> lstSelectedRecordIds = selectedRecordIds.split(',');
      Set<String> filteredRecordIds = new Set<String>();
      if(lstSelectedRecordIds.size()>0){
        filteredRecordIds.addall(lstSelectedRecordIds);
      }
      
      if(filteredRecordIds.size()>0){
        System.debug('filteredRecordIds::'+filteredRecordIds);
        
        // segrgate ids as user or contact ids
        List<Id>filteredUserIds = new List<Id>();
        List<Id>filteredContactIds = new List<Id>();
        for (String filteredRecordId : filteredRecordIds) {
          System.debug('filteredRecordId::'+filteredRecordId);
          if(filteredRecordId.startsWith('005')){
            filteredUserIds.add(filteredRecordId);
          }
          if(filteredRecordId.startsWith('003')){
            filteredContactIds.add(filteredRecordId);
          }
        }
        Set<String>filteredEmails = new Set<String>();
        List<User>filteredUserDetails = filteredUserIds.size()>0 ? [SELECT Email FROM User WHERE Id IN:filteredUserIds WITH SECURITY_ENFORCED] : null;
        List<Contact>filteredContactDetails = filteredContactIds.size()>0 ? [SELECT Email FROM Contact WHERE Id IN:filteredContactIds WITH SECURITY_ENFORCED] : null;
        if(filteredUserDetails != null && filteredUserDetails.size()>0){
          for(User user : filteredUserDetails){
            filteredEmails.add(user.Email);
          }
        }
        if(filteredContactDetails != null && filteredContactDetails.size()>0){
          for(Contact contact : filteredContactDetails){
            filteredEmails.add(contact.Email);
          }
        }
        system.debug('filteredEmails::'+filteredEmails);
      }
      String userQuery = '';
      
            if(objectApiName.toLowercase() == 'contact'){
        String contactQuery = 'SELECT Id,Name,Email FROM Contact WHERE Id NOT IN :filteredRecordIds AND '+fieldToFilter+' LIKE \'%'+string.escapeSingleQuotes(searchString)+'%\' AND Email != NULL WITH SECURITY_ENFORCED';
        List<Sobject> contacts = Database.query(contactQuery.escapeHtml4());
        for(Integer count=0;count<contacts.size();count++){
          resultWrappers.add(new ResultWrapper(contacts[count],false));
        }
      }
    }
    catch(Exception e){
      System.debug(e.getMessage()+ ' - line no: '+e.getLineNumber());
    }
    
    return resultWrappers;
  }
AbhinavAbhinav (Salesforce Developers) 
Check this:

https://salesforce.stackexchange.com/questions/244788/how-do-i-write-an-apex-unit-test

https://salesforce.stackexchange.com/questions/244794/how-do-i-increase-my-code-coverage-or-why-cant-i-cover-these-lines

If you face any specific issue while attempting do post that here.

Thanks!
nilesh walke 6nilesh walke 6
Hi Abhinav i have tryed many time then only i have posted this code 
please check below code

  @isTest(SeeAllData=true)
public class TestSystemEmailCompCtrl {
       static{    
       GNT.TriggerHelper.skipTrigger=true;
       AccountTriggerHelper.skipTrigger=true;
       GrantTriggerHelper.skipTrigger=true;
       AwardTriggerHelper.skipTrigger=true;
       userTriggerHelper.skipTrigger=true;    
      // CollaborationGroupTriggerHelper.skipTrigger=true;
       }   
    @isTest
    static void getAttachmentIdOnEmailQueueforId(){
       Account acc=TestHelper.getAccount(false);
       insert acc;
      
       Contact con = TestHelper.getContact(false);
       con.AccountId =acc.Id;
       insert con;

       CollaborationGroup cg=new CollaborationGroup();
        cg.Name='Test';
        cg.CollaborationType = 'Private';
       // cg.Email__c = 'abx@gmail.com';
        insert cg;
        
          User u2 =TestHelper.getAdminUser(true); 
          
        CollaborationGroupMember request = new CollaborationGroupMember();
        request.CollaborationGroupId = cg.Id;
        User u1 = new User(Id=UserInfo.getUserId());
        request.MemberId = u2.id;
        insert request;
        
         GNT__EmailQueue__c emailQueueObj = new GNT__EmailQueue__c();
             emailQueueObj.GNT__Status__c = 'Processed' ;
             emailQueueObj.name= 'test';
             emailQueueObj.IsClone__c = False;
             emailQueueObj.GNT__ToEmails__c = 'simon.pm.pc@yopmail.com';
             emailQueueObj.GNT__ProcessedDate__c = System.today()+30;
             emailQueueObj.ToAddress__c = 'simon.pm.pc@yopmail.com';
             emailQueueObj.GNT__CcEmails__c = 'simon.pm.pc@yopmail.com';
             emailQueueObj.GNT__Subject__c = 'Email Queque';
     insert emailQueueObj;
          
       Profile profile = [select Id,name from Profile where UserLicense.Name like 'Partner Community' limit 1];
        
        User portalUser = new User(
            Username = System.now().millisecond() + 'test12345@test1.com',
            ContactId = con.Id,
            ProfileId = profile.Id,
            Alias = 'test123',
            GNT__OrganizationId__c=acc.Id,
            Email = 'abx@gmail.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'McTesty',
            CommunityNickname = 'test12345',
            TimeZoneSidKey = 'America/Los_Angeles',
            LocaleSidKey = 'en_US',
            LanguageLocaleKey = 'en_US'
        );        
        insert portalUser;
    
        Map<String, Object> paramatersMap = new Map<String, Object>();
        Map<String, Object> paramatersMap_1 = new Map<String, Object>();
        Map<String, Attachment> attributeMap = new Map<String, Attachment>();
        Map<String,contact> responseMap = new Map<String,contact>();
        
             
        String Blob1='test';
        blob csvBlob1 = Blob.valueOf(Blob1);
        Boolean IsUploadDone=true;
        Attachment Att=new Attachment();
        Att.Name='test';
        Att.ParentId=emailQueueObj.id;
        Att.Body=csvBlob1;
        Att.ContentType='application/pdf';
        insert Att;
        if(Att.id!=null){
        attributeMap.put(Att.id,att);
        }
         
        paramatersMap.put('Test',cg);
        paramatersMap_1.put(cg.Id,request);
        
        responseMap.put(con.email,con);
        
        System.runAs(portalUser){
       
        test.startTest();
     //s   insert Attach;
        SystemEmailCompCtrl SEC=new SystemEmailCompCtrl();
        SystemEmailCompCtrl.ResultWrapper RW = new SystemEmailCompCtrl.ResultWrapper(cg,true);
        RW.email = 'abx@gmail.com';
            
        SystemEmailCompCtrl.ResultWrapper.getRecords(paramatersMap);
        SystemEmailCompCtrl.ResultWrapper.getCollabGroupMemberIds(paramatersMap_1);
        SystemEmailCompCtrl.ResultWrapper.uploadAttachment(attributeMap);     
        SystemEmailCompCtrl.ResultWrapper.validateEmails(responseMap);
        test.stopTest();
        

    }
    }
}
 
ankit bansalankit bansal
hi Nilesh,
Please lt us know what issue are you facing in the above test class. Is it code coverage issue, test class run issue?