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
Sana123Sana123 

I am getting error in test class ? Can someone tell where i am getting wrong

///Trigger Handler
public static void createContactsv1 (List<Account> listOfAccounts, Map<Id, Account> mapoldAccount){
    
    Set<Id> setOfIds = new Set<Id>();
    Map<Id, List<String>> mapOfAccountIdAndString = new  Map<Id, List<String>>();
   
    List<Account> accountToUpdate = new List<Account>();
    for(Account account : listOfAccounts){
        
        if(String.isNotBlank(account.Move_To_Account__c) && String.isNotBlank(account.Move_To_Contacts__c) && (mapoldAccount == null 
                                               || mapoldAccount.get(account.Id).Move_To_Account__c != account.Move_To_Account__c
                                               || mapoldAccount.get(account.Id).Move_To_Contacts__c != account.Move_To_Contacts__c))
            
        {
             
             List<String> listOfContacts = account.Contacts__c.split('\n');
             List<String> listOfMoveToContacts = account.Move_To_Contacts__c.split('\n');
            
            
            if(listOfContacts.size()>0)
            {
                String moveToContact = '';
                for(String contact : listOfMoveToContacts)
                {
                    if(listOfMoveToContacts.size()>0 && listOfContacts.contains(contact))  {
                        
                        if(!mapOfAccountIdAndString.containsKey(account.Move_To_Account__c)) //false
                            mapOfAccountIdAndString.put(account.Move_To_Account__c, new List<String>());
                        
                        mapOfAccountIdAndString.get(account.Move_To_Account__c).add(contact); //st/ st2 //st3
                        setOfIds.add(account.Id);
                        moveToContact = '\n';//if move to contact value is contains in contact__c value 
                    }
                    else{
                         moveToContact = moveToContact+contact+'\n'; //if not contains then add contact to movettocontact
                    }
                   
                }
                moveToContact = String.isNotBlank(moveToContact)?moveToContact:moveToContact.replaceAll('\\s', '');
                accountToUpdate.add(new Account(Id = account.Id, Move_To_Contacts__c = moveToContact));
            }
            
        }
    }
    
    if(mapOfAccountIdAndString.size() > 0)
    {    
        for(Id accountId : mapOfAccountIdAndString.keySet()) 
        {
            String contactValue = '';
            for(String contact : mapOfAccountIdAndString.get(accountId))
            {
                contactValue = contactValue+contact+'\n';
            }
            accountToUpdate.add(new Account(Id = accountId, Contacts__c = contactValue));
        }
        
        if(accountToUpdate.size()>0) update accountToUpdate; 
    }
    
    if(setOfIds.size()>0)
    {
        
        List<Contact> contacts = [SELECT Id, Email, FirstName, LastName, Account.Move_To_Account__c, AccountId FROM Contact WHERE AccountId  IN :setOfIds];
        
        list<Contact> contactsTomoved = new List<Contact>();
        if(contacts.size()>0)
        {
            for(Contact contact : contacts)
            {
                for(String contString : mapOfAccountIdAndString.get(contact.Account.Move_To_Account__c))
                { 
                    
                    if(contact.FirstName == contString.substringAfter('FirstName=').substringBefore(',')
                       && contact.LastName == contString.substringAfter('LastName=').substringBefore(',')
                       && contact.Email == contString.substringAfter('Email=').substringBefore(','))
                    {
                        contact.AccountId = contact.Account.Move_To_Account__c;
                        contactsTomoved.add(contact);
                    }
                }
                
            }
        }
        
        if(contactsTomoved.size() > 0) update contactsTomoved;  
    }
 }


///test class--

@isTest
public class AccountTriggerHandlerTest {
    @isTest
    public static void createContactsv2Test()
    {

List<Account>accounts = new List<Account>();
  String str = 'FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com' +'\r\n' + 'FirstName=B,LastName=B,MobilePhone=2,Email=bb@unknown.com';
        Account lookUpAccount = new Account(Name = 'LookUp');
            insert lookUpAccount;
            accounts[0].Move_To_Account__c = lookUpAccount.Id;
            accounts[0].Move_To_Contacts__c = 'FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com';
            update accounts;
            List<Contact> totalContactsAfterMovingContact = [SELECT AccountId, FirstName ,LastName , MobilePhone,Email FROM Contact WHERE AccountId = :accounts[0].Id];
            //System.debug('totalContactsAfterMovingContact: '+ totalContactsAfterMovingContact.size());
            System.assertEquals(2 , totalContactsAfterMovingContact.size());
            
            accounts[0].Contacts__c = '';
            update accounts;
            
            accounts[0].Contacts__c = str;
            update accounts;
            
            List<Contact> totalContactsOnInsertingAndMovingContact = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[0].Id];
            //System.debug('totalContactsOnInsertingAndMovingContact: '+ totalContactsOnInsertingAndMovingContact.size());
            System.assertEquals(1 , totalContactsOnInsertingAndMovingContact.size());
            
            accounts[0].Contacts__c = str + '\r\n' + 'FirstName=D,LastName=D,MobilePhone=4,Email=dd@unknown.com' + '\r\n' + 'FirstName=F,LastName=F,MobilePhone=6,Email=ff@unknown.com';
            update accounts;
List<Contact> totalContactsOnInsertingAndMovingContact_1 = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[0].Id];
            System.assertEquals(3 , totalContactsOnInsertingAndMovingContact_1.size());
            
            accounts[0].Contacts__c = str;
            update accounts;
            List<Contact> totalContactsOnDeleting = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[0].Id];
            //System.debug('totalContactsOnDeleting: '+ totalContactsOnDeleting.size());
            System.assertEquals(1 , totalContactsOnDeleting.size());
            
            accounts[0].Contacts__c = str + '\r\n' + 'FirstName=D,LastName=D,MobilePhone=4,Email=dd@unknown.com' + '\r\n' + 'FirstName=F,LastName=F,MobilePhone=6,Email=ff@unknown.com';
            update accounts;
            List<Contact> totalContactsOnInsertingAndMovingContact_2 = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[0].Id];
            System.assertEquals(3 , totalContactsOnInsertingAndMovingContact_2.size());
            
            accounts[0].Move_To_Contacts__c = 'FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com' + '\r\n' + 'FirstName=D,LastName=D,MobilePhone=4,Email=dd@unknown.com';
            update accounts;
            List<Contact> totalContactsAfterMovingContact_1 = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[0].Id];
            System.assertEquals(2 , totalContactsAfterMovingContact_1.size());
            
            String str_2 = str + '\r\n' + 'FirstName=D,LastName=D,MobilePhone=4,Email=dd@unknown.com' + '\r\n' + 'FirstName=F,LastName=F,MobilePhone=6,Email=ff@unknown.com';
            accounts[0].Contacts__c = str_2 + '\r\n' + 'FirstName=G,LastName=G,MobilePhone=7,Email=gg@unknown.com';
            accounts[0].Move_To_Contacts__c = 'FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com' + '\r\n' + 'FirstName=D,LastName=D,MobilePhone=4,Email=dd@unknown.com' + '\r\n' + 'FirstName=G,LastName=G,MobilePhone=7,Email=gg@unknown.com';
            update accounts;
List<Contact> totalContactsOnInsertingAndMovingContact_3 = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[0].Id];
            System.assertEquals(2 , totalContactsOnInsertingAndMovingContact_3.size());
            
            accounts[0].Contacts__c = '';
            update accounts;
            accounts[0].Contacts__c = str_2 + '\r\n' + 'FirstName=G,LastName=G,MobilePhone=7,Email=gg@unknown.com' + '\r\n' + 'FirstName=H,LastName=H,MobilePhone=8,Email=hh@unknown.com';
            accounts[0].Move_To_Contacts__c = 'FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com' + '\r\n' + 'FirstName=D,LastName=D,MobilePhone=4,Email=dd@unknown.com' + '\r\n' + 'FirstName=G,LastName=G,MobilePhone=7,Email=gg@unknown.com' + '\r\n' + 'FirstName=H,LastName=H,MobilePhone=8,Email=hh@unknown.com';
            update accounts;
            List<Contact> totalContactsOnInsertingAndMovingContact_4 = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[0].Id];
            System.assertEquals(2 , totalContactsOnInsertingAndMovingContact_4.size());
            
            accounts[1].Move_To_Contacts__c = 'FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com';
            update accounts;
            accounts[1].Move_To_Contacts__c = str;
            update accounts;
            List<Contact> totalContactsOnInsertingAndMovingContact_5 = [SELECT AccountId, FirstName ,LastName , MobilePhone, Email FROM Contact WHERE AccountId = :accounts[1].Id];
            System.assertEquals(1 , totalContactsOnInsertingAndMovingContact_5.size());
            
            
            Account lookUpAccount_1 = new Account(Name = 'TestLookUp_1');
            insert lookUpAccount_1;
            accounts[2].Move_To_Account__c = lookUpAccount_1.Id;
            accounts[2].Move_To_Contacts__c = 'FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com';
            update accounts;
            
            
        }


///Please someone tell me where i am getting wrong
AbhinavAbhinav (Salesforce Developers) 

Please mention the error which you are getting, if possible try to narrow it down for community .
Sana123Sana123
Actually i have coverage error ,like this is my test class but its handler coverage is 90%  and trigger is 66% but i want my trigger coverage must be 75% .. so can you please help me in this test class for making the code coverage must be 75%

@isTest
public class AccountTriggerHandlerTest {
    @isTest
    public static void createContactsv2Test()
    {
        Account acc = new Account();
        acc.Name = 'Test Account';
        acc.Contacts__c='FirstName=A,LastName=A,MobilePhone=1,Email=aa@unknown.com'+'\r\n'
            +'FirstName=B,LastName=B,MobilePhone=2,Email=bb@unknown.com';
        insert acc;
        
        Contact con = new Contact();
        con.LastName = 'Test Contact';
        con.AccountId = acc.Id;
        con.email='abc@gmail.com';
        insert con;
        
        acc.Name='Test';
        
        acc.Contacts__c='FirstName=A1,LastName=B1,MobilePhone=32121,Email=a1a@unknown.com'+'\r\n'
            + 'FirstName=B1,LastName=B2,MobilePhone=221,Email=bb1@unknown.com';
        update acc;
        
        
        
        String str = 'FirstName=Anjana,LastName=Sharma,MobilePhone=32342342,Email=anjana@gmail.com';
        
        List<Account> accounts = new List<Account>();
       
        
        Account lookup = new Account();
        lookup.name = 'lookupacc';
        insert lookup;
        
        Account acc1 = new Account();
        acc1.Name = 'Test12';
        acc1.Contacts__c = str;
        acc1.Move_To_Account__c = lookup.Id;
        acc1.Move_To_Contacts__c = 'FirstName=Anjana,LastName=Sharma,MobilePhone=32342342,Email=anjana@gmail.com';
        insert acc1;
        
        system.assertEquals(acc1.Contacts__c,acc1.Move_To_Contacts__c);
        
        //Delete acc1;
      
    }
        }


#trigger --

if(trigger.isAfter &&(Trigger.isInsert || Trigger.isUpdate)){
        AccountTriggerHandler1.createContactsv2(trigger.new, trigger.oldMap);
        AccountTriggerHandler1.createContactsv1(trigger.new, trigger.oldMap);
    }
    if(trigger.isAfter &&Trigger.isDelete){
        AccountTriggerHandler1.createContactsv1(null , trigger.oldMap);
        AccountTriggerHandler1.createContactsv2(null, trigger.oldMap);
        
    }