You need to sign in to do that
Don't have an account?
Kyo
Test Class not work
it's not work 2 line
hilight a line not work in the Trigger
setAccountNumber.add(myNewCon .Account_Number__c) ;
myNewCon.AccountID = Acc.id;
@isTest private class TestUpdateAccountNameAndNumberinContact{ static testMethod void myUnitPopContact() { Account Acc = new Account(Name = 'test',AccountNumber = '0000001'); insert Acc; Account Acc2 = new Account(Name = 'test2',AccountNumber = '0000001'); insert Acc2; Test.StartTest(); Contact Con = new Contact(); ApexPages.currentPage().getParameters().put('id',con.id); Con.LastName = 'test2'; Con.AccountID = Acc.id; Con.Account_Number__c = Acc.AccountNumber; insert con; try{ update con; }catch(DMLException de){} Contact Dup = new Contact(); Dup.LastName = 'test'; Dup.AccountID = Acc2.id; Dup.Account_Number__c = Con.Account_Number__c ; insert Dup; try{ update Dup; }catch(DMLException de){} Test.StopTest(); } }
trigger UpdateAccountNameAndNumberinContact on Contact (before Update){ //List<Account> Acc = new List<Account>(); Set<String> setAccountNumber = new Set<String>(); Set<String> setAccount = new Set<String>(); for(Contact Con : Trigger.new){ Map<Id,Contact> newConMap = Trigger.newMap; Map<Id,Contact> oldConMap = Trigger.oldMap; for(Id ConId:newConMap.keySet()){ Contact myNewCon = newConMap.get(ConId); Contact myOldCon = oldConMap.get(ConId); if(myNewCon.AccountID == myOldCon.AccountID && myNewCon.Account_Number__c <> myOldCon.Account_Number__c && myNewCon.Account_Number__c != null){ setAccountNumber.add(myNewCon .Account_Number__c) ; } else if(myNewCon.AccountID <> myOldCon.AccountID && myNewCon.Account_Number__c == myOldCon.Account_Number__c && myNewCon.AccountID != null){ setAccount.add(myNewCon .AccountID ) ; } } } Account Acc = new Account(); List<Account> lstAcc = [Select id,AccountNumber from Account Where AccountNumber in : setAccountNumber or id in : setAccount]; if(lstAcc.size()>0) { Acc = lstAcc[0]; } for(Contact Con : Trigger.new){ Map<Id,Contact> newConMap = Trigger.newMap; Map<Id,Contact> oldConMap = Trigger.oldMap; for(Id ConId:newConMap.keySet()){ Contact myNewCon = newConMap.get(ConId); Contact myOldCon = oldConMap.get(ConId); if(myNewCon.AccountID == myOldCon.AccountID && myNewCon.Account_Number__c <> myOldCon.Account_Number__c && myNewCon.Account_Number__c != null){ myNewCon.AccountID = Acc.id; } else if(myNewCon.AccountID <> myOldCon.AccountID && myNewCon.Account_Number__c == myOldCon.Account_Number__c && myNewCon.AccountID != null){ myNewCon.Account_Number__c = Acc.AccountNumber; } /*else if(myNewCon.AccountID <> myOldCon.AccountID && myNewCon.Account_Number__c <> myOldCon.Account_Number__c && myNewCon.AccountID != null && myNewCon.Account_Number__c != null){ myNewCon.AccountID.AddError('Mismatch Account Name and Account Number'); myNewCon.Account_Number__c.AddError('Mismatch Account Name and Account Number'); }*/ } } }
Thank you so much
first line errror may be about, you are storing number/integer value in set of string.
Try this I have added a method in this, May I know why you have used try catchblick in test method, I have not used it as you are not throwing any exception in trigger , if you are facing any issue in test method let me know.
thank you Shashikant Sharma it's work !
Your welcome mate.
I would request you to mark this accepted solution so that others can also benifitted from it.