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
Anonymous DeveloperAnonymous Developer 

Need help with creating a test class

This is my code
 
public without sharing class AS_GroupDatatableSourceCollection {

    @InvocableMethod(label = 'Groups Action')
    public static List<Response> getResults( List<Request> parserInput ) {


        // My Group
        List<Id> myGroupIds                     = new List<Id>();
        List<CollaborationGroupMember> cgmList  = [SELECT CollaborationGroupId FROM CollaborationGroupMember WHERE MemberId = :parserInput[0].user_id];
        for ( CollaborationGroupMember cgm : cgmList ) {
            myGroupIds.add(cgm.CollaborationGroupId);
        }
        system.debug('myGroupIds>>>' +myGroupIds);
        // Public
        
        List<Id> publicGroupIds                 = new List<Id>();
        for ( CollaborationGroup cg : [SELECT Id FROM CollaborationGroup WHERE CollaborationType = 'Public' AND Id NOT IN :myGroupIds] ) {
            publicGroupIds.add(cg.Id);
        }

        system.debug('publicGroupIds>>>' +publicGroupIds);
        // Same Type Groups
        List<AS_Membership_Groups__c> listmg    = Database.query('SELECT Id, Name, AS_Type__c, AS_Group_Id__c, AS_Paid__c, AS_Status__c FROM AS_Membership_Groups__c WHERE AS_Type__c INCLUDES (\''+ parserInput[0].type +'\')');
        List<Id> collabGroupsFromMG             = new List<Id>();
        // For eacgh membership groups, parse and store all into a single collection
        for (AS_Membership_Groups__c mg : listmg) {
            
            if ( ! String.isBlank( mg.AS_Group_Id__c ) ) {

                collabGroupsFromMG.addAll( mg.AS_Group_Id__c.split(',') );
            }
        }

        List<Id> myGroupTypeIds                 = new List<Id>();
        for ( CollaborationGroup cg : [SELECT Id FROM CollaborationGroup WHERE Id IN :collabGroupsFromMG AND Id NOT IN :myGroupIds] ) {
            myGroupTypeIds.add(cg.Id);
        }
        system.debug('myGroupTypeIds>>>' +myGroupTypeIds);


        Response res                            = new Response();
        res.myGroups                            = myGroupIds;
        res.eligibleGroups                      = myGroupTypeIds;
        res.publicGroups                        = publicGroupIds;

        List<Response> resList                  = new List<Response>();
        resList.add(res);

        return resList;
    }
        

    public class Request {

        @InvocableVariable
        public String type;
        
        @InvocableVariable
        public String user_id;

    }

    public class Response {
        @InvocableVariable
        public List<Id> myGroups;
        
        @InvocableVariable
        public List<Id> eligibleGroups;

        @InvocableVariable
        public List<Id> publicGroups;

        @InvocableVariable
        public List<String> parsedCollectionOfStrings;
    }
}

Thanks in advance
Best Answer chosen by Anonymous Developer
Prateek Prasoon 25Prateek Prasoon 25
Here's test class for your AS_GroupDatatableSourceCollection Apex class:
 
@isTest
private class AS_GroupDatatableSourceCollectionTest {
    @isTest
    static void testGetResults() {
        // Create test data
        CollaborationGroup cg1 = new CollaborationGroup(Name = 'My Test Group 1', CollaborationType = 'Private');
        CollaborationGroup cg2 = new CollaborationGroup(Name = 'My Test Group 2', CollaborationType = 'Public');
        CollaborationGroup cg3 = new CollaborationGroup(Name = 'My Test Group 3', CollaborationType = 'Public');
        insert new List<CollaborationGroup>{cg1, cg2, cg3};
        
        CollaborationGroupMember cgm = new CollaborationGroupMember(CollaborationGroupId = cg1.Id, MemberId = UserInfo.getUserId());
        insert cgm;
        
        AS_Membership_Groups__c mg = new AS_Membership_Groups__c(Name = 'My Test Membership Group', AS_Type__c = 'TypeA,TypeB', AS_Group_Id__c = cg2.Id);
        insert mg;
        
        // Call the getResults method
        AS_GroupDatatableSourceCollection.Request req = new AS_GroupDatatableSourceCollection.Request();
        req.type = 'TypeA';
        req.user_id = UserInfo.getUserId();
        List<AS_GroupDatatableSourceCollection.Response> resList = AS_GroupDatatableSourceCollection.getResults(new List<AS_GroupDatatableSourceCollection.Request>{req});
        
        // Verify the response
        System.assertEquals(1, resList.size());
        AS_GroupDatatableSourceCollection.Response res = resList[0];
        System.assertEquals(1, res.myGroups.size());
        System.assertEquals(cg1.Id, res.myGroups[0]);
        System.assertEquals(1, res.eligibleGroups.size());
        System.assertEquals(cg2.Id, res.eligibleGroups[0]);
        System.assertEquals(1, res.publicGroups.size());
        System.assertEquals(cg3.Id, res.publicGroups[0]);
    }
}

If you find my answer helpful, please mark it as the best answer. Thanks!

All Answers

Prateek Prasoon 25Prateek Prasoon 25
Here's test class for your AS_GroupDatatableSourceCollection Apex class:
 
@isTest
private class AS_GroupDatatableSourceCollectionTest {
    @isTest
    static void testGetResults() {
        // Create test data
        CollaborationGroup cg1 = new CollaborationGroup(Name = 'My Test Group 1', CollaborationType = 'Private');
        CollaborationGroup cg2 = new CollaborationGroup(Name = 'My Test Group 2', CollaborationType = 'Public');
        CollaborationGroup cg3 = new CollaborationGroup(Name = 'My Test Group 3', CollaborationType = 'Public');
        insert new List<CollaborationGroup>{cg1, cg2, cg3};
        
        CollaborationGroupMember cgm = new CollaborationGroupMember(CollaborationGroupId = cg1.Id, MemberId = UserInfo.getUserId());
        insert cgm;
        
        AS_Membership_Groups__c mg = new AS_Membership_Groups__c(Name = 'My Test Membership Group', AS_Type__c = 'TypeA,TypeB', AS_Group_Id__c = cg2.Id);
        insert mg;
        
        // Call the getResults method
        AS_GroupDatatableSourceCollection.Request req = new AS_GroupDatatableSourceCollection.Request();
        req.type = 'TypeA';
        req.user_id = UserInfo.getUserId();
        List<AS_GroupDatatableSourceCollection.Response> resList = AS_GroupDatatableSourceCollection.getResults(new List<AS_GroupDatatableSourceCollection.Request>{req});
        
        // Verify the response
        System.assertEquals(1, resList.size());
        AS_GroupDatatableSourceCollection.Response res = resList[0];
        System.assertEquals(1, res.myGroups.size());
        System.assertEquals(cg1.Id, res.myGroups[0]);
        System.assertEquals(1, res.eligibleGroups.size());
        System.assertEquals(cg2.Id, res.eligibleGroups[0]);
        System.assertEquals(1, res.publicGroups.size());
        System.assertEquals(cg3.Id, res.publicGroups[0]);
    }
}

If you find my answer helpful, please mark it as the best answer. Thanks!
This was selected as the best answer
Anonymous DeveloperAnonymous Developer
Thanks Prateek