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
Snehal Gaware 15Snehal Gaware 15 

test class for apex class.. need help

Hi,
I need help in writting test class for following class.
public class Populate
{
public Case cs{get;set;}
public SC_Problem_Management__c prblm{get;set;}
public ApexPages.StandardController stdCntrlr {get; set;}
    
public Populate(ApexPages.StandardController controller)
{
    cs = new Case();
    prblm = new SC_Problem_Management__c();
    prblm = (SC_Problem_Management__c)controller.getRecord();
    //Get the ID of Currently present case on vf page
    String csId = [SELECT Id FROM Case WHERE Id =: prblm.Case__c].Id;
    System.debug('testing'+ csId);
    prblm.Case__c= csId;
    if(csId != null)
    {
    //calling autofilling method
 autoCal();
    }

}

//function is called from actionsupport event

public void autoCal()
{
Id caseid = prblm.Case__c;     // collecting case id from visualforce page
if(caseid!=null){
List<Case> caseLst = [select id,Products__c,Componet__c ,Feature__c,Status,Priority,Subject,Description__c,Assignment_Group__c from Case where id=:caseid];
system.debug('Product'+ caseLst[0].Products__c);
    if(!caseLst.isEmpty())
    {
        
prblm.Products__c= caseLst[0].Products__c;      
prblm.Component__c = caseLst[0].Componet__c; 
prblm.Feature__c = caseLst[0].Feature__c;
prblm.Status__c = caseLst[0].Status; 
prblm.Priority__c = caseLst[0].Priority; 
prblm.Title__c=caseLst[0].Subject;
prblm.Issue_Escape__c=caseLst[0].Assignment_Group__c;
prblm.Description__c= caseLst[0].Description__c;
	}
}
}
public pagereference Save()
{
insert prblm;
pagereference pr = new pagereference('/'+prblm.id);   
    System.debug('pagereference/////'+pr);
        return pr;
        
      
} 
}

Thanks in advance. any help will be appreciated.
Best Answer chosen by Snehal Gaware 15
Raj VakatiRaj Vakati
change as below 
 
@istest()
public class testPopulate
{
     private static testmethod void testex1()
     {

Account a = new Account();
        a.Name = 'Test';
        a.Industry = 'Retail';
        insert a;
		  Contact c=new Contact(
            FirstName='fname',
            LastName = 'lname',accountid =a.id , 
            Email = 'email@gmail.com',
            Phone = '9743800309'); 
        insert c; 
        // Add all fields to case 
		Case caseObj = new Case(
		ContactId = c.id,
		AccountId = a.Id,
		Status = 'Working',
		Origin = 'Phone');

		insert caseObj;

		SC_Problem_Management__c pm = new SC_Problem_Management__c();
		pm.Name ='Test';
		pm.case__c = caseObj.Id ;
		// add all fields 
		insert pm ; 
		

         PageReference pageRef = Page.YOUR_PAGENAME;
         Test.setCurrentPage(pageRef);
         ApexPages.StandardController sc = new ApexPages.StandardController(pm);
         PM_Controller  testPopulateIns = new PM_Controller(sc);
		
		 

    }
}

 

All Answers

Raj VakatiRaj Vakati
Use this and add all fields
@istest()
public class testPopulate
{
     private static testmethod void testex1()
     {

Account a = new Account();
        a.Name = 'Test';
        a.Industry = 'Retail';
        insert a;
		  Contact c=new Contact(
            FirstName='fname',
            LastName = 'lname',accountid =a.id , 
            Email = 'email@gmail.com',
            Phone = '9743800309'); 
        insert c; 
        // Add all fields to case 
		Case caseObj = new Case(
		ContactId = c.id,
		AccountId = a.Id,
		Status = 'Working',
		Origin = 'Phone');

		insert caseObj;

		SC_Problem_Management__c pm = new SC_Problem_Management__c();
		pm.Name ='Test';
		pm.case__c = caseObj.Id ;
		// add all fields 
		insert pm ; 
		

         PageReference pageRef = Page.YOUR_PAGENAME;
         Test.setCurrentPage(pageRef);
         ApexPages.StandardController sc = new ApexPages.StandardController(pm);
         Populate testPopulateIns = new Populate(sc);
		 testPopulateIns.autoCal();
		 testPopulateIns.Save();
		 
		 

    }
}

 
Snehal Gaware 15Snehal Gaware 15
Hi Raj, Thanks for reply.
i have tried your code as well but it is giving code coverage as None.
@isTest
public class Populate_Test 
{

     private static testmethod void testex1()
     {

Account a = new Account();
        a.Name = 'Test';
       // a.Industry = 'Retail';
        insert a;
		  
         Contact c=new Contact(
            FirstName='fname',
            LastName = 'lname',
            accountid =a.id , 
            Email = 'email@gmail.com',
            Phone = '9743800309'); 
        insert c; 
        
         // Add all fields to case 
		Case caseObj = new Case(
		ContactId = c.id,
		AccountId = a.Id
		);

		insert caseObj;

		SC_Problem_Management__c pm = new SC_Problem_Management__c();
		pm.Products__c= 'AutoClass';
        pm.Impact__c='Critical';
        pm.Urgency__c='Critical';
        pm.Priority__c='Critical';
		pm.Case__c = caseObj.Id ;
		// add all fields 
		insert pm ; 
		

         PageReference pageRef = Page.NewProblem;
         Test.setCurrentPage(pageRef);
         ApexPages.StandardController sc = new ApexPages.StandardController(pm);
         Populate testPopulateIns = new Populate(sc);
		 testPopulateIns.autoCal();
		 testPopulateIns.Save();
		 
		 

    }

}
Raj VakatiRaj Vakati
Can u check the test class is running successfully or not .. Pls set up all the fields 
Snehal Gaware 15Snehal Gaware 15
Hi Raj, Yes it runs successfully now. It was failing due to active processes so made some changes in class and it works.

Could you please help me with below class for test class
 
public with sharing class PM_Controller {
  ApexPages.StandardController sc;
  public PM_Controller(ApexPages.StandardController con) {
    sc = con;
    SC_Problem_Management__c record = (SC_Problem_Management__c)con.getRecord();
    record.Case__c = ApexPages.currentPage().getParameters().get('caseId');
  }}

​​​​​​​
Raj VakatiRaj Vakati
change as below 
 
@istest()
public class testPopulate
{
     private static testmethod void testex1()
     {

Account a = new Account();
        a.Name = 'Test';
        a.Industry = 'Retail';
        insert a;
		  Contact c=new Contact(
            FirstName='fname',
            LastName = 'lname',accountid =a.id , 
            Email = 'email@gmail.com',
            Phone = '9743800309'); 
        insert c; 
        // Add all fields to case 
		Case caseObj = new Case(
		ContactId = c.id,
		AccountId = a.Id,
		Status = 'Working',
		Origin = 'Phone');

		insert caseObj;

		SC_Problem_Management__c pm = new SC_Problem_Management__c();
		pm.Name ='Test';
		pm.case__c = caseObj.Id ;
		// add all fields 
		insert pm ; 
		

         PageReference pageRef = Page.YOUR_PAGENAME;
         Test.setCurrentPage(pageRef);
         ApexPages.StandardController sc = new ApexPages.StandardController(pm);
         PM_Controller  testPopulateIns = new PM_Controller(sc);
		
		 

    }
}

 
This was selected as the best answer
Raj VakatiRaj Vakati
Mark it closed .. if its solved 
Snehal Gaware 15Snehal Gaware 15
Thanks Raj. It works perfect.