You need to sign in to do that
Don't have an account?
raji devi 1
Test class for trigger on contact
The following is my trigger code i written test class for this, i coverd upto 80% i wand to make it 100% can you help me to fulfill this.
trigger createaccount on Contact (before insert, before update) {
string sp =' ';
if(trigger.isinsert && trigger.isbefore ){
//add error messages to select only accountid or checkbox
for(contact con : trigger.new){
if(con.accountid != null && con.Create_New_Account__c ==true){
con.addError('Enter only account name or create account checkbox true');
}
if(con.firstname == null)
con.adderror('FirstName is madatory');
}
}
if(Trigger.isInsert && Trigger.isBefore ){
set<id> stid = new set<id>();
list<contact>con=trigger.new;
for(contact cn : con)
{
if(string.isnotblank(cn.Staging_ID__c) && cn.FirstName!= null && cn.LastName!=null)
{
stid.add(cn.Staging_ID__c);
cn.firstname=cn.FirstName.subString(0 ,1).ToUpperCase()+cn.FirstName.subString(1);
cn.lastname=cn.LastName.subString(0 ,1).ToUpperCase()+cn.LastName.subString(1);
}
}
list<ProfileStaging__c> pslist = [select id , Profile_Created__c from ProfileStaging__c where id in : stid];
for(ProfileStaging__c ps : pslist)
{
ps.Profile_Created__c = true;
}update pslist;
}
if(Trigger.isInsert && Trigger.isBefore ){
List<Account> acclist = new List<Account>();
Map<String,Account > accountMap = new Map<String,Account >();
for(Contact c:Trigger.New){
if(c.FirstName!= null && c.LastName!=null)
{
if(c.Create_New_Account__c == True){
Account acc = new Account();
// c.idmaping__c=c.id;
acc.name =c.FirstName.subString(0 ,1).ToUpperCase()+c.FirstName.subString(1)+sp+ c.LastName.subString(0 ,1).ToUpperCase()+c.LastName.subString(1)+sp+ 'Family';
acclist.add(acc);
}
}
if(!acclist.isEmpty())
insert acclist;
}
for(Account acc : acclist) {
System.debug('accName===>'+acc.name);
accountMap.put(acc.name,acc);
}
for(Contact c:Trigger.New){
if(c.Source_temp__c != null)
{
c.Source__c= c.Source_temp__c;
}
if(c.Create_New_Account__c == True) {
if(c.FirstName!= null && c.LastName!=null)
{
c.AccountId = accountMap.get(c.FirstName.subString(0 ,1).ToUpperCase()+c.FirstName.subString(1)+sp+ c.LastName.subString(0 ,1).ToUpperCase()+c.LastName.subString(1)+sp+ 'Family').id;
c.Create_New_Account__c = False;
}
}
}
}
}
************************************************************* my test class is*******************************************
@istest
public class triggerAccCreatedwtihFamilyTest{
static testmethod void unittestmethod(){
Test.startTest();
contact c = new contact();
c.lastname='test';
c.firstname = 'testfirtname';
c.Potential_Non_Potential__c ='p';
c.Personal_Email__c ='raji@gmail.com';
c.Create_New_Account__c=true;
c.Pincode__c= '500045';
insert c;
Test.stopTest();
}
}
trigger createaccount on Contact (before insert, before update) {
string sp =' ';
if(trigger.isinsert && trigger.isbefore ){
//add error messages to select only accountid or checkbox
for(contact con : trigger.new){
if(con.accountid != null && con.Create_New_Account__c ==true){
con.addError('Enter only account name or create account checkbox true');
}
if(con.firstname == null)
con.adderror('FirstName is madatory');
}
}
if(Trigger.isInsert && Trigger.isBefore ){
set<id> stid = new set<id>();
list<contact>con=trigger.new;
for(contact cn : con)
{
if(string.isnotblank(cn.Staging_ID__c) && cn.FirstName!= null && cn.LastName!=null)
{
stid.add(cn.Staging_ID__c);
cn.firstname=cn.FirstName.subString(0 ,1).ToUpperCase()+cn.FirstName.subString(1);
cn.lastname=cn.LastName.subString(0 ,1).ToUpperCase()+cn.LastName.subString(1);
}
}
list<ProfileStaging__c> pslist = [select id , Profile_Created__c from ProfileStaging__c where id in : stid];
for(ProfileStaging__c ps : pslist)
{
ps.Profile_Created__c = true;
}update pslist;
}
if(Trigger.isInsert && Trigger.isBefore ){
List<Account> acclist = new List<Account>();
Map<String,Account > accountMap = new Map<String,Account >();
for(Contact c:Trigger.New){
if(c.FirstName!= null && c.LastName!=null)
{
if(c.Create_New_Account__c == True){
Account acc = new Account();
// c.idmaping__c=c.id;
acc.name =c.FirstName.subString(0 ,1).ToUpperCase()+c.FirstName.subString(1)+sp+ c.LastName.subString(0 ,1).ToUpperCase()+c.LastName.subString(1)+sp+ 'Family';
acclist.add(acc);
}
}
if(!acclist.isEmpty())
insert acclist;
}
for(Account acc : acclist) {
System.debug('accName===>'+acc.name);
accountMap.put(acc.name,acc);
}
for(Contact c:Trigger.New){
if(c.Source_temp__c != null)
{
c.Source__c= c.Source_temp__c;
}
if(c.Create_New_Account__c == True) {
if(c.FirstName!= null && c.LastName!=null)
{
c.AccountId = accountMap.get(c.FirstName.subString(0 ,1).ToUpperCase()+c.FirstName.subString(1)+sp+ c.LastName.subString(0 ,1).ToUpperCase()+c.LastName.subString(1)+sp+ 'Family').id;
c.Create_New_Account__c = False;
}
}
}
}
}
************************************************************* my test class is*******************************************
@istest
public class triggerAccCreatedwtihFamilyTest{
static testmethod void unittestmethod(){
Test.startTest();
contact c = new contact();
c.lastname='test';
c.firstname = 'testfirtname';
c.Potential_Non_Potential__c ='p';
c.Personal_Email__c ='raji@gmail.com';
c.Create_New_Account__c=true;
c.Pincode__c= '500045';
insert c;
Test.stopTest();
}
}
You need to check which lines are not covering then accordingly you can write tst code to cover those lines...
Like youc an insert conatct where Account Id and checkbox is not null...and then you can insert one more record where these avalues are null so it will cover both the parts..
in your test code you haev not added Acount adn in code you are chceking in below code if accountId is not null then only it will go inside..
so to cover this condition you can insert one conatct witha ccount id so ot will cover that part likely you can do for rest.
please check adn let me lknow if that helps you,
Thanks,
Sandeep
Thanks
Amit Chaudhary