Create an Apex class that uses the @future annotation to update Account records.
Create an Apex class with a method using the @future annotation that accepts a List of Account IDs and updates a custom field on the Account object with the number of contacts associated to the Account. Write unit tests that achieve 100% code coverage for the class.
- Create a field on the Account object called 'Number_of_Contacts__c' of type Number. This field will hold the total number of Contacts for the Account.
- Create an Apex class called 'AccountProcessor' that contains a 'countContacts' method that accepts a List of Account IDs. This method must use the @future annotation.
- For each Account ID passed to the method, count the number of Contact records associated to it and update the 'Number_of_Contacts__c' field with this value.
- Create an Apex test class called 'AccountProcessorTest'.
- The unit tests must cover all lines of code included in the AccountProcessor class, resulting in 100% code coverage.
- Run your test class at least once (via 'Run All' tests the Developer Console) before attempting to verify this challenge.
AccountProcessor class:
public class AccountProcessor {
@future
public static void countContacts(List<ID> accIds){
List<Account> listacc = [SELECT id,Number_of_Contacts__c,(SELECT id from contacts) from account where id in : accIds];
for (account acc : listacc){
List<Contact> con = acc.contacts;
acc.Number_of_Contacts__c = con.size();
}
update listacc;
}
}
AccountProcessTest class:
@isTest
public class AccountProcessorTest {
public static testmethod void TestAccountProcessorTest(){
Account a = new Account();
a.Name = 'Test Account';
Insert a;
system.debug('account a :'+a.id);
Contact cont = New Contact();
cont.FirstName ='Ankit';
cont.LastName ='Avula';
cont.AccountId = a.Id;
Insert cont;
system.debug('contact cont :' +cont.id);
List<Id> accIds = new List<Id>();
accIds.add(a.Id);
Test.startTest();
AccountProcessor.countContacts(accIds);
Test.stopTest();
Account ACC = [select Number_of_Contacts__c from Account where id = :a.id LIMIT 1];
System.assertEquals(ACC.Number_of_Contacts__c, 1);
}
}
Methods defined as TestMethod do not support Web service callouts error
ReplyDelete