You need to sign in to do that
Don't have an account?

trigger test class code coverage problem
Hi,
Written Trigger on Campaign Member and it is working fine as expected. I wrote a test class for the trigger and code coverage is 48%. Need assistance to complete the test class and deploy into production. Below is my Trigger and Test Class.
Thanks in advance.
Written Trigger on Campaign Member and it is working fine as expected. I wrote a test class for the trigger and code coverage is 48%. Need assistance to complete the test class and deploy into production. Below is my Trigger and Test Class.
Trigger : trigger insertCustomObj on CampaignMember (after insert, after update) { System.debug('---- Entered Trigger ----'); List<Customer_Profile__c> customProfileList = new List<Customer_Profile__c>(); Set<Id> accountIds = new Set<Id>(); for(CampaignMember cm : Trigger.new) { System.debug('---- Inside CampaignMember : ----'); accountIds.add(cm.contactId); } Map<Id, List<Account>> accMap = new Map<Id, List<Account>>(); if(!accountIds.isEmpty()){ System.debug('---- Checking Account Id : ----'); for(Account acc: [SELECT id, name, personcontactId FROM Account WHERE personcontactId IN:accountIds]){ personAccountIds.add(acc.Id); if(!accMap.containsKey(acc.personcontactId)){ accMap.put(acc.personcontactId, new List<Account>{acc}); } else{ List<Account> accList = accMap.get(acc.personcontactId); accList.add(acc); accMap.put(acc.personcontactId, accList); } } } Set<Id> personAccountIds = new Set<Id>(); List<Customer_Profile__c> existingCustomerProfiles = [SELECT id, business_accounts__c, person_accounts__c FROM Customer_Profile__c WHERE person_accounts__c IN :personAccountIds]; Set<String> bizAcctCombo = new Set<String>(); for(Customer_Profile__c cp : existingCustomerProfiles) { bizAcctCombo.add(String.valueOf(cp.business_accounts__c) + String.valueOf(cp.person_accounts__c)); } List<CampaignMember> campaignMembers = [SELECT id, campaign.business_accounts__c, contactId FROM CampaignMember WHERE Id IN :Trigger.newMap.keyset()]; for(CampaignMember cm : campaignMembers) { if(accMap.containsKey(cm.contactId)){ for(Account a: accMap.get(cm.contactId)){ String bizAcctString = String.valueOf(cm.campaign.business_accounts__c) + String.valueOf(a.id); if (!bizAcctCombo.contains(bizAcctString)) { Customer_Profile__c cusObj = new Customer_Profile__c(); cusObj.person_accounts__c = a.id; cusObj.Business_accounts__c = cm.campaign.business_accounts__c ; customProfileList.add(cusObj); bizAcctCombo.add(bizAcctString); } } } System.debug('--- Customer Profile List ---' + customProfileList.size()); } try{ if(customProfileList.size()>0) { System.debug('--- Inside CustomObj ---'); insert customProfileList; } System.debug('--- Total Custom Object Inserted---'); } catch (Exception e){ System.debug('The following exception has occurred: ' + e.getLineNumber() + ' : ' + e.getMessage()); } }
Test Class : @isTest(SeeAllData = true) private class insertCustomObjTest { private static testMethod void insertCustomObj() { system.debug('Started Member Insert Test Class'); Test.startTest(); Account acct = new Account (Name = 'Test Account'); insert acct; system.debug('Inserted Account, ID: ' + acct.id); Contact con = new Contact (FirstName = 'Sample', LastName = 'Contact', AccountId = acct.Id); insert con; system.debug('Inserted Contact, ID: ' + con.id); Campaign camp = new Campaign (Name = 'Test', IsActive = TRUE); insert camp; system.debug('Inserted Campaign, ID: ' + camp.id); CampaignMember member = new CampaignMember (contactId = con.id, Status = 'sent', CampaignId = camp.Id); insert member; system.debug('Inserted CampaignMember, ID: ' + member.Id); system.debug('CampaignMember Status: ' + member.Status); system.debug('CampaignId Status: ' + member.CampaignId); system.debug('This should fire the Trigger'); Customer_Profile__c testCusobj = new Customer_Profile__c (Name = 'Test Account'); insert testCusobj; system.debug('Inserted Custom Object, ID: ' + testCusobj.id); Test.stopTest(); List<Contact> ChgContact = [Select Id, Name FROM Contact WHERE Id = :con.Id]; System.Debug (ChgContact[0].Id); } }
Thanks in advance.
Same Code Coverage. It is not coming inside the below for Loop. Could you check and help.
Thanks.
You need to set up a personal account and contact in such way to meet all the data logic is executed ..