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
Dhanesh SubramanianDhanesh Subramanian 

How to write a test class for merge delete

test class for merge delete
I have my trigger to capture the deleted record during merge and insert into new custom obj. I have a test class for it, but its code coverage is only 46%? how this can be increased?

trigger MergeAccounts on Account (after delete) 
{
    if(trigger.isafter && trigger.isdelete)
    {
        List<Account_Audit__c> deletedaccount = new List<Account_Audit__c>();
    
        for (Account acct:trigger.old)
        {
            If(acct.masterRecordId!=null)
            {
                Account_Audit__c Aaudit = new Account_Audit__c();
                Aaudit.Losing_Account_Name__c= acct.name;
                Aaudit.Losing_Owner__c=acct.OwnerId;
                Aaudit.Merge_date_time__c=date.today();
                Aaudit.Merged_by_user__c=UserInfo.getName() ;
                deletedaccount.add(Aaudit);
            }
        }
        if(deletedaccount.size()>0)
        {
            database.insert(deletedaccount);
        }
    }


testclass

@istest
Public class MergeAccountstest
{
    public static  testMethod void mergetest() 
    {
        Account a = new Account(name='test');
        insert a;
        
        delete a;
    }
    public static  testMethod void Auditmergetest() 
    {
        Account_Audit__c b = new Account_Audit__c(
        Losing_Account_Name__c = 'test',
        Losing_Owner__c = '005q00000012y6X',
        Merge_date_time__c = date.today(),
        Merged_by_user__c = UserInfo.getName());
        
        insert b;
    }
}
Arunkumar RArunkumar R
Hi Dhanesh,

Can you try the below test class,
 
@isTest

private class TestMergeAccountDelete
{
static testMethod void deleteAccount()
{

Account master = new Account(Name='Account1');
insert master;

Account[] duplicates = new Account[]{new Account(Name='Account1, Inc.'), new Account(Name='Account 1')};
insert duplicates;

Database.MergeResult[] results = Database.merge(master, duplicates, false);

}

}

 
Bhanu MaheshBhanu Mahesh
Hi Dhanesh,
You have to merge Accounts, then only masterRecordId will get populated on deleted record.

Try below code
 
@istest
Public class MergeAccountstest{
    public static  testMethod void mergetest() {
        Account a = new Account(name='test');
        insert a;
		Account a1 = new Account(name='test1');
        insert a1;
        test.startTest();
		merge a a1;
		test.stopTest();
		List<Account_Audit__c> accAudit = [SELECT Id FROM Account_Audit__c WHERE Losing_Account_Name__c = 'test1'];
		System.assertEquals(1,accAudit.size());
    }
}

Regards,
Bhanu Mahesh

Mark this as 'SOLVED' if your issue resolved