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
kotesh arudrakotesh arudra 

How to write test class for lightning controller? Can any one pls suggest me?

public with sharing class Sendliteraturecontroller {
    @AuraEnabled
    public static list <campaign> fetchcampaign() {
        list < campaign > returnCamList = new List < campaign > ();
        List <campaign> lstCam = [SELECT id,Name,Description,LiteratureID__c,TemporarilyUnavailable__c From campaign];
       
        for (campaign c: lstCam) {
            returnCamList.add(c);
           
        }
        return lstCam;
    }
    @AuraEnabled
    public static List < String > createRecords(List < String > lstRecordId,id leadid) {
        List < String > oErrorMsg = new List < String > ();
        lead  l = [select id,name,description,phone,email,OwnerId from lead where id=:leadid limit 1];
        list<CampaignMember> cm = new list<CampaignMember>();
        list<campaign> camps = [select  id,Name,LiteratureID__c,TemporarilyUnavailable__c,Description from campaign where id in:lstRecordId];
        list<CampaignMember> members =[SELECT id, LeadId ,CampaignId  FROM  CampaignMember where LeadId=:leadid];
         User u =[select id,name from user where name = 'Marry wader' limit 1];
        id recordtype=[Select id from RecordType where sObjectType = 'task' and developerName ='Literature_Fulfillment' ].id;
        list<id> matched = new list<id>();
        list<task> tasks = new list<task>();
       
        for(CampaignMember me :members){
            matched.add(me.CampaignId);
        }
        for(campaign cam :camps){
            if(!matched.contains(cam.id)){
                cm.add(new CampaignMember(CampaignId = cam.id,leadid = l.id)); 
                task t = new task();
                t.RecordTypeId =recordtype;
                t.Type = 'Literature Fulfillment';
            t.WhoId = l.Id;
            t.OwnerId = u.Id;
            t.Subject = 'Lead requirement Comment';
            t.Priority = 'Normal';
            t.Status = 'Not Started';
            t.Description = t.Subject+''+cam.Name;
                
             tasks.add(t);   
            }
        } 
       
        

         try{
            
             insert tasks; 
        }catch (dmlexception ex){
            system.debug(' Task cannot be created'+ex.getCause()); 
        }
        
        
        Database.saveResult[] DR_Dels = Database.insert(cm, false);
        for (Database.saveResult dr: DR_Dels) {
            if (dr.isSuccess()) {
                system.debug('successfully created campaign');
            } else {
                oErrorMsg.add('');
                for (Database.Error err: dr.getErrors()) {
                    
                    oErrorMsg.add(err.getStatusCode() + ': ' + err.getMessage());
                }
            }
        }
        return oErrorMsg;
    }
    
}
Raj VakatiRaj Vakati
sample code is here .. update the all required fields and other fields from the code
@isTest
public class Sendliteraturecontroller_Lead {
    static testMethod void runPositiveTestCases(){

         
        
        Lead testLead1 = new Lead(LastName = 'Weebles',
                                 Company ='Weebles Widgets');
        insert testLead1;
        
        / 
        
        List<Lead> testLead2 = new List<Lead>();
        for(integer i=0; i<2000; i++) {
            testLead2.add(new Lead(LastName = 'Weebles',Company = 'Weebles Widgets' + i, Email = i+'@weebles.com'));
        }
        insert testLead2;
        
        Campaign camp1 = new Campaign(Name = 'Test Campaign 1', IsActive = True);
        insert camp1;
         
        Campaign campID = [SELECT Id FROM Campaign WHERE Name = 'Test Campaign 1'
                           AND IsActive = True AND CreatedDate = :System.today()];
        //Add the bulk contacts to campaign
        //This is where I'm stuck
        List<CampaignMember> testCampMemb1 = new List<CampaignMember>();
        for(integer i=0; i<2000; i++) {
            testCampMemb1.add(new CampaignMember(CampaignId = campID, Status = 'Sent'));
        }
        insert testCampMemb1;
            

Sendliteraturecontroller.fetchcampaign();
Sendliteraturecontroller.createRecords(new List<String>{camp1.Id},testLead1.Id));
         
    }
}


 
kotesh arudrakotesh arudra

Hi raj,

as your suggestions i have written a test class but i am getting "Too many SOQL quaries:101" error So to over come this i have written  test.statTest(); and test.stopTest(); but still gtng same error, I was struck here..

 

@isTest
public class SendliteraturecontrollerTest {
    
    
    static testmethod void sendlierature(){
        test.startTest();
        Lead testLead1 = new Lead(LastName = 'Test', Company ='Andersen');
        insert testLead1; 
        List<Lead> testLead2 = new List<Lead>();
        for(integer i=0; i<100; i++) {
            testLead2.add(new Lead(LastName = 'Test',Company = 'Andersen' + i, Email = i+'@Andersen.com'));
        }
        insert testLead2;
        
        
        
        list<Campaign> cams= new list<Campaign>();
        for(integer i=0; i<100; i++) {
            cams.add(new Campaign(Name = 'Test Campaign 1', IsActive = True));
        }
        insert cams;
       
        
        
        List<CampaignMember> testCampMemb1 = new List<CampaignMember>();
        
        for(integer i=0; i<100; i++) {
            testCampMemb1.add(new CampaignMember(Status = 'Sent', CampaignId = cams[i].id,leadid = testLead2[i].id));
        }
        insert testCampMemb1; 
        
        
        Sendliteraturecontroller.fetchcampaign();
        lead  l = [select id,name,description,Phone,Email,ContactPhone__c,OwnerId from lead   limit 1];
        list<campaign> camps = [select  id,Name,LiteratureID__c,TemporarilyUnavailable__c,Description,Part__c from campaign  limit 10];
        list<string> campaigns = new list<string>();
        for(campaign ca :camps){
            campaigns.add(ca.id);
        }
        User thisUser = [Select Id from User where Id = :UserInfo.getUserId()];
        System.runAs( thisUser ){
            Sendliteraturecontroller.createRecords(campaigns,l.Id); 
        }
         test.stopTest();
        
        
    }
     static testmethod void sendlieraturetest1(){
         test.startTest();
        Lead testLead1 = new Lead(LastName = 'Test', Company ='Andersen');
        insert testLead1; 
        List<Lead> testLead2 = new List<Lead>();
          
        for(integer i=0; i<100; i++) {
            testLead2.add(new Lead(LastName = 'Test',Company = 'Andersen' + i, Email = i+'@Andersen.com'));
        }
        insert testLead2;
        
         
         
        list<Campaign> cams= new list<Campaign>();
        for(integer i=0; i<100; i++) {
            cams.add(new Campaign(Name = 'Test Campaign 1', IsActive = True,Type='Literature',WebRequest__c ='Mail To'));
        }
        insert cams; 
        
         
         
        List<CampaignMember> testCampMemb1 = new List<CampaignMember>();
        
        for(integer i=0; i<100; i++) {
            testCampMemb1.add(new CampaignMember(Status = 'Sent', CampaignId = cams[i].id,leadid = testLead2[i].id));
        }
        insert testCampMemb1; 
         
        Sendliteraturecontroller.fetchcampaign();
        lead  l = [select id,name,description,Phone,Email,ContactPhone__c,OwnerId from lead   limit 1];
        list<campaign> camps = [select  id,Name,LiteratureID__c,TemporarilyUnavailable__c,Description,Part__c from campaign limit 10];
        list<string> campaigns = new list<string>();
        for(campaign ca :camps){
            campaigns.add(ca.id);
        }
        User thisUser = [Select Id from User where Id = :UserInfo.getUserId()];
        System.runAs( thisUser ){
            Sendliteraturecontroller.createRecords(campaigns,l.Id); 
        }
        
        test.stopTest(); 
        
    }
    
    
    
}