You need to sign in to do that
Don't have an account?
Sandeepbv
Code Coverage for Trigger- Need help
Hello,
I created a before insert trigger which uses sosl queries to search for field value 'phone number' of call_log__c object in salesforce.
Here's my trigger and test class
Thanks in advance
Jas
I created a before insert trigger which uses sosl queries to search for field value 'phone number' of call_log__c object in salesforce.
- If phone is matched with Account phone number, it links call_log__c object with Account.
- If phone is matched with phone_book__c phone, it links call_log__c object with phone_book__c.
- If no record is found, then new phone_book__c record is created, and is linked with call_log__c object.
Here's my trigger and test class
trigger MatchPhoneNumber on Call_Log__c (before insert) { List<List<sObject>> searchList = [FIND :Trigger.New[0].Caller_Id__c IN ALL FIELDS RETURNING Account(Name),Phone_Book__c(Name, Caller_Name__c)]; Account[] searchAccounts = (Account[])searchList[0]; Phone_Book__c[] searchPhones =(Phone_Book__c[])searchList[1]; if(!searchAccounts.isEmpty()){ for (Account a : searchAccounts) { for(Call_Log__c c : Trigger.New) { c.member__c = a.ID; } } } if(!searchPhones.isEmpty()){ for (Phone_Book__c p : searchPhones) { for(Call_Log__c c : Trigger.New) { c.Phone_Number__c = p.ID; } } } else{ Phone_Book__c p = new Phone_Book__c(); p.name = Trigger.New[0].Caller_Id__c; p.caller_id__c = Trigger.New[0].Caller_Id__c; insert p; for(Call_Log__c c : Trigger.New) { c.Phone_Number__c = p.ID; } } }
@isTest public class TestMatchPhoneNumber { static testMethod void insertcalllog(){ Account acc = new Account(); acc.LastName = 'Jas'; acc.Phone = '1234567890'; acc.Security_Key__c = '1as4s22'; insert acc; System.assertEquals(1,[select count() from Account where LastName = 'Jas' ]); Phone_Book__c p = New Phone_book__c(); p.name = '1234567890'; insert p; System.assertEquals(1,[select count() from Phone_Book__c where Name = '1234567890' ]); Call_Log__c c1 = New Call_Log__c(); Call_Log__c c2 = New Call_Log__c(); c1.Caller_ID__c = '1234567890'; c2.Caller_ID__c = '1111111111'; insert c1; insert c2; Test.startTest(); Id [] fixedSearchResults= new Id[2]; fixedSearchResults[0] = acc.Id; fixedSearchResults[1] = p.Id; Test.setFixedSearchResults(fixedSearchResults); List<List<sObject>> searchList = [FIND '1234567890' IN ALL FIELDS RETURNING Account(Name),Phone_Book__c(Name, Caller_Name__c)]; List<List<sObject>> searchList2 = [FIND '1111111111' IN ALL FIELDS RETURNING Account(Name),Phone_Book__c(Name, Caller_Name__c)]; Account[] searchAccounts = (Account[])searchList[0]; Phone_Book__c[] searchPhones =(Phone_Book__c[])searchList[1]; Account[] searchAccounts2 = (Account[])searchList2[0]; Phone_Book__c[] searchPhones2 =(Phone_Book__c[])searchList2[1]; Test.stopTest(); System.assert(!searchAccounts.isEmpty()); System.assert(!searchPhones.isEmpty()); System.assert(!searchAccounts2.isEmpty()); System.assert(!searchPhones2.isEmpty()); c1.member__c = acc.ID; c1.Phone_Number__c = p.ID; Phone_Book__c ph = New Phone_book__c(); ph.Name = c2.Caller_ID__c; ph.Caller_ID__c = c2.Caller_ID__c; insert ph; Call_log__c call = [Select id, member__c, phone_number__c from call_log__c where caller_id__c = '1234567890']; List<Phone_book__c> pl = [Select id from Phone_book__c where id = :ph.Id]; System.assertEquals( pl.size() , 1 ); //System.assertEquals(fixedSearchResults[0], call.member__c); //System.assertEquals(fixedSearchResults[1], call.phone_number__c); } }
Thanks in advance
Jas
.
Please, help me how can test this part of code.
Thanks,
Jas
Also, your test.startTest and test.stopTest should be around the insertion of the call log records (insert c1 and insert c2).