You need to sign in to do that
Don't have an account?
Sana123
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
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
Please mention the error which you are getting, if possible try to narrow it down for community .
@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);
}