You need to sign in to do that
Don't have an account?
Chitral Chadda
test class ..strings
I have a trigger which displays list of contact address on account
suppost i hav accnt a1 and related contact as c1, c2
there addres_for_contact__c field on contact
and final_address_of_contact__c field on account
if for c1 ...addres_for_contact__c='a';
for c2 ..addres_for_contact__c='b';
then on account ..final address of contact = a,b
here is the test class
when i do run test it shows pass : but there is 0 % code coverage
i m unsure what cud b d reason
suppost i hav accnt a1 and related contact as c1, c2
there addres_for_contact__c field on contact
and final_address_of_contact__c field on account
if for c1 ...addres_for_contact__c='a';
for c2 ..addres_for_contact__c='b';
then on account ..final address of contact = a,b
trigger listOfContactsOnAccount on contact (after insert , after update,after delete){ set<id> accountIdSet = new set<id>(); if( trigger.isInsert|| trigger.isUpdate){ for(contact c : trigger.new){ accountIdSet.add(c.AccountId); } } if(trigger.isDelete){ for(contact c: trigger.old){ accountIdSet.add(c.AccountId); } } //2.create map List<contact> cont = [ Select AccountId, Address_for_contact__c from contact where AccountId IN : accountIdSet ]; //using a map of lists instead of a map of contacts Map<id,List<contact>> accountContactsMap = new map<id, List<contact>>(); for(contact c : cont){ //check if a entry in the map exists for the account if(!accountContactsMap.containsKey(c.accountId)){ //if it doesnt then create one accountContactsMap.put(c.accountId, new List<Contact>()); } //get the contact list for the account and add the contact in accountContactsMap.get(c.accountId).add(c); } List<Account> accountsToUpdate= new List<Account>(); string l=''; for(contact cn :trigger.new) { if(accountContactsMap != null) { list<contact> aci = accountContactsMap.get(cn.AccountId); account ac = new account(id=cn.AccountId); { for(contact c : aci) { if(l==null) { l = c.Address_for_Contact__c ; } else { l= l+','+c.Address_for_contact__c; } } ac.Final_address_of_contacts__c = l; accountsToUpdate.add(ac); } } } update accountsToUpdate; }
here is the test class
@isTest public class testlistOfContactsOnAccount { public static testMethod void accountaddress() { account acc = new account(); acc.Name='account name'; //acc.Final_address_of_contacts__c ='agsah,bawdgh'; insert acc; List<Contact> clist = new List<Contact>(); contact ct1 = new contact(AccountId=acc.Id); ct1.LastName='abc'; ct1.Address_for_contact__c='agsah'; clist.add(ct1); contact ct2 = new contact(AccountId=acc.Id); ct2.LastName='xyz'; ct2.Address_for_contact__c='bawdgh'; clist.add(ct2); //ct2.accountid=acc.id insert clist; string l = null; for(contact c : cList) { if(l == null) { l= c.Address_for_contact__c; } else { l=l+','+c.Address_for_contact__c; } } acc.Final_address_of_contacts__c=l; update acc; account updt =[ select id,Final_address_of_contacts__c from account where id=:acc.id]; system.assertEquals(l, updt.Final_address_of_contacts__c); } }
when i do run test it shows pass : but there is 0 % code coverage
i m unsure what cud b d reason
https://developer.salesforce.com/page/An_Introduction_to_Apex_Code_Test_Methods
public class testlistOfContactsOnAccount
{
public static testMethod void accountaddress()
{
account acc = new account();
acc.Name='account name';
//acc.Final_address_of_contacts__c ='agsah,bawdgh';
List<Contact> clist = new List<Contact>();
contact ct1 = new contact(AccountId=acc.Id);
ct1.LastName='abc';
ct1.Address_for_contact__c='agsah';
clist.add(ct1);
contact ct2 = new contact(AccountId=acc.Id);
ct2.LastName='xyz';
ct2.Address_for_contact__c='bawdgh';
clist.add(ct2);
//ct2.accountid=acc.id
test.startTest();
insert acc;
insert clist;
string l = null;
for(contact c : cList)
{
if(l == null)
{ l= c.Address_for_contact__c;
}
else
{
l=l+','+c.Address_for_contact__c;
}
}
acc.Final_address_of_contacts__c=l;
update acc;
test.stopTest();
account updt =[ select id,Final_address_of_contacts__c from account where id=:acc.id];
system.assertEquals(l, updt.Final_address_of_contacts__c);
//List<Contact> deleteList = new List<Contact>();
// deleteList.add(ct1);
// delete deleteList;
//account updt1 =[ select id,Final_address_of_contacts__c from account where id=:acc.id];
//system.assertEquals('karol bagh', updt1.Final_address_of_contacts__c);
}
}
still 0 % coverage
Use (SeeAllData=true) like below at starting of test class.
@isTest(SeeAllData=true)
Best Regards,
Mithun.
System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, listOfContactsOnAccount: execution of AfterInsert
caused by: System.DmlException: Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: []
Trigger.listOfContactsOnAccount: line 62, column 1: []