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
devloper sfdcdevloper sfdc 

I need to write test code for apex class

Hi All ,

I need to write test class for below code please help me it is very urgent.


public class QueueAssignController{

    Public List<SelectOption> QueueList {get;set;}
    public List<Group> GroupNameList {get;set;}
    Public list<GroupMember> mlist  {get;set;} 
    public String queue {get;set;}
    public String queueid {get;set;}
    public List<String> selectedUserIds { get; set; }
    public List<String> removedUserIds { get; set; }
    public String whereClause { get; set; }
    public String AccName {get;set;}
    private Map<Id, String> availableUsersMap;
    private Map<Id, String> selectedUsersMap;
    
    
    

    public  QueueAssignController(ApexPages.StandardController std) {
        initializeCollections();
        
         ID contactId = [Select contactid from User where id =: Userinfo.getUserid()].contactId;
           // Pid = [Select ProfileId from User where id =: Userinfo.getUserid()].ProfileId;
           String  aid = [Select AccountID from Contact where id =: contactid].AccountId;
        
       // String aid=ApexPages.currentPage().getParameters().get('id');
      List<String> accName=new List<String>();
     account[] a=[select WFSSFriendlyName__c from account where id=:aid limit 1    ];
        String wffs=a[0].WFSSFriendlyName__c;
        GroupNameList = new List<Group>();
        String j='%'+wffs+'%';
        GroupNameList = [select g.Id, g.Name from Group g where Type = 'Queue' AND name like:j Order by Name Asc];
        QueueList = new List<SelectOption>();
        for(Group temp : GroupNameList)
         {
          queueid = temp.id;
          QueueList.add(new SelectOption(temp.Id, temp.Name));
         }
        if(queue  == null){
            queue = queueid;
            getUsers();
        }
         system.debug('QueueList++++++'+QueueList);
         system.debug('queue ++++++'+queue );
    }
        
    public PageReference UpdateList() {
        initializeCollections();
        getUsers();
        return null;
    }
   public void filterAvailableOptions() {
        availableUsersMap = new Map<Id, String>();
        selectedUserIds = new List<String>();
       string userid =userinfo.getUserId();
       user[] uac=[select AccountId from user where id=:userid limit 1];

        String likeClause = '%' + whereClause + '%';
        for (User u : [SELECT id, name FROM User WHERE name like :likeClause AND Name!='Chatter Expert'  AND IsActive = true order by Name Asc]) {
            if (!selectedUsersMap.containsKey(u.Id)) {
                availableUsersMap.put(u.Id, u.Name);
            }
        }
    }
    public void add() {
        if (!selectedUserIds.isEmpty()) {
            for (String userId : selectedUserIds) {
                selectedUsersMap.put(userId, availableUsersMap.get(userId));
                availableUsersMap.remove(userId);
            }
        }
    }

    public void remove() {
        if (!removedUserIds.isEmpty()) {
            for (String userId : removedUserIds) {
                availableUsersMap.put(userId, selectedUsersMap.get(userId));
                selectedUsersMap.remove(userId);
            }
        }
    }

    public List<SelectOption> getAvailableUsers() {
        
        List<SelectOption> availableUsers = new List<SelectOption>();
        for (Id userId : availableUsersMap.keySet()) {
            availableUsers.add(new SelectOption(userId, availableUsersMap.get(userId)));
        }
        return availableUsers;
    }

    public List<SelectOption> getSelectedUsers() {
        List<SelectOption> selectedUsers = new List<SelectOption>();
        for (String userId : selectedUsersMap.keySet()) {
            selectedUsers.add(new SelectOption(userId, selectedUsersMap.get(userId)));
        }
        return selectedUsers;
    }

    private void initializeCollections() {
        selectedUserIds = new List<String>();
        removedUserIds = new List<String>();
        availableUsersMap = new Map<Id, String>();
        selectedUsersMap = new Map<Id, String>();
    }

    private void getUsers() {
        QueueSobject qs = [SELECT QueueId,SobjectType FROM QueueSobject where QueueId=:queue];
        list<GroupMember> gms = [SELECT Group.Name,UserOrGroupId FROM GroupMember WHERE Group.Type = 'Queue' AND GroupId =:qs.QueueId];
        system.debug(gms);
        set<id> gids =new set<id>();
        for(GroupMember g:gms){
            gids.add(g.UserOrGroupId);
        }
          String aid=ApexPages.currentPage().getParameters().get('id');
        list<user> urs = [SELECT id, Name FROM User where IsActive = true AND id NOT IN:gids AND Name!='Chatter Expert' AND AccountId=:aid order by Name Asc];
        system.debug(urs);
        for(user u : urs){
             availableUsersMap.put(u.Id, u.Name);
        }
         list<user> urss = [SELECT id, Name FROM User where IsActive = true AND id IN:gids AND Name!='Chatter Expert' order by Name Asc];
        system.debug(urs);
        for(user ur : urss){
             selectedUsersMap.put(ur.Id, ur.Name);
        }    
    }
    public PageReference savenew(){
        List<GroupMember> groups = new List<GroupMember>();
        List<GroupMember> groupss = [select Id from GroupMember where Group.Type = 'Queue' and GroupId =:queue ];
        if( !groupss.isEmpty() )
        {
            delete groupss;        
        }
        if(selectedUsersMap.size() == 0){
            ApexPages.addMessage( new ApexPages.Message(ApexPages.Severity.Error, 'Please select a user to Add to Queue') );
        }
        else{
            for(id ids:selectedUsersMap.keyset()){
              // ApexPages.addMessage( new ApexPages.Message(ApexPages.Severity.INFO, 'Added user to Queue'+queue) );
              insert new GroupMember( GroupId = queue , UserOrGroupId = ids); 
            }
           }
        return null;
        }
}
Raj VakatiRaj Vakati
Try this code
 
@isTest
private class AssignedAdvisorControllerTest{
   
    
    static testMethod void test_getAdvisorPhone(){
        System.test.startTest();
		
		
		Account ac = new Account(name = 'ACME Co') ;
        insert ac;

        Contact con = new Contact(LastName = 'Test_Contact'
        ,AccountId = ac.Id
        ,Email = 'testCommunityUsermig123@test.com'
        ,Title = 'Journalist');
        insert con;
		
       
	   
	   Profile pf= [Select Id from profile where Name='System Administrator']; 
        
        String orgId=UserInfo.getOrganizationId(); 
        String dateString=String.valueof(Datetime.now()).replace(' ','').replace(':','').replace('-','') ;
        Integer RandomId=Integer.valueOf(Math.rint(Math.random()*1000000)); 
        String uniqueName=orgId+dateString+RandomId; 
        User uu=new User(firstname = 'ABC', 
                         lastName = 'XYZ', ContactId = con.Id,
                         email = uniqueName + '@test' + orgId + '.org', 
                         Username = uniqueName + '@test' + orgId + '.org', 
                         EmailEncodingKey = 'ISO-8859-1', 
                         Alias = uniqueName.substring(18, 23), 
                         TimeZoneSidKey = 'America/Los_Angeles', 
                         LocaleSidKey = 'en_US', 
                         LanguageLocaleKey = 'en_US', 
                         ProfileId = pf.Id
                        ); 
        
        
        insert uu;
		
		System.runAs(uu){

     PageReference pageRef = Page.YOURPAGE;
     pageRef.getParameters().put('Id', String.valueOf(ac.Id));
     Test.setCurrentPage(pageRef); 
	 ApexPages.StandardController sc = new ApexPages.StandardController(ac);
     QueueAssignController tesQA = new QueueAssignController(sc);
tesQA.filterAvailableOptions();
tesQA.getUsers();
tesQA.getSelectedUsers();
tesQA.savenew();
tesQA.add();
tesQA.remove();
tesQA.UpdateList();



		}
		
		
        System.test.stopTest();
    }
}

 
devloper sfdcdevloper sfdc
Hi Raj after use your class i have receive Error. |System.DmlException: Insert failed. First exception on row 0; first error: FIELD_INTEGRITY_EXCEPTION, only portal users can be associated to a contact: []
Raj VakatiRaj Vakati
Try this remove contact is form the user record
 
@isTest
private class AssignedAdvisorControllerTest{
   
    
    static testMethod void test_getAdvisorPhone(){
        System.test.startTest();
		
		
		Account ac = new Account(name = 'ACME Co') ;
        insert ac;

        Contact con = new Contact(LastName = 'Test_Contact'
        ,AccountId = ac.Id
        ,Email = 'testCommunityUsermig123@test.com'
        ,Title = 'Journalist');
        insert con;
		
       
	   
	   Profile pf= [Select Id from profile where Name='System Administrator']; 
        
        String orgId=UserInfo.getOrganizationId(); 
        String dateString=String.valueof(Datetime.now()).replace(' ','').replace(':','').replace('-','') ;
        Integer RandomId=Integer.valueOf(Math.rint(Math.random()*1000000)); 
        String uniqueName=orgId+dateString+RandomId; 
        User uu=new User(firstname = 'ABC', 
                         lastName = 'XYZ' 
                         email = uniqueName + '@test' + orgId + '.org', 
                         Username = uniqueName + '@test' + orgId + '.org', 
                         EmailEncodingKey = 'ISO-8859-1', 
                         Alias = uniqueName.substring(18, 23), 
                         TimeZoneSidKey = 'America/Los_Angeles', 
                         LocaleSidKey = 'en_US', 
                         LanguageLocaleKey = 'en_US', 
                         ProfileId = pf.Id
                        ); 
        
        
        insert uu;
		
		System.runAs(uu){

     PageReference pageRef = Page.YOURPAGE;
     pageRef.getParameters().put('Id', String.valueOf(ac.Id));
     Test.setCurrentPage(pageRef); 
	 ApexPages.StandardController sc = new ApexPages.StandardController(ac);
     QueueAssignController tesQA = new QueueAssignController(sc);
tesQA.filterAvailableOptions();
tesQA.getUsers();
tesQA.getSelectedUsers();
tesQA.savenew();
tesQA.add();
tesQA.remove();
tesQA.UpdateList();



		}
		
		
        System.test.stopTest();
    }
}

 
devloper sfdcdevloper sfdc
after changed code new error is coming System.DmlException: Insert failed. First exception on row 0; first error: MIXED_DML_OPERATION, DML operation on setup object is not permitted after you have updated a non-setup object (or vice versa): User, original object: Account: []