global class AccountTransferSchedule implements Schedulable {
global transferProposalBatch trf;
global ID batchID;
global AccountTransferSchedule(TransferProposalBatch trf){
this.trf = trf;
}
global void execute(SchedulableContext sc) {
//Sequence of batch execution: Proposal, Opportunity, AccountTeamMember, AccountConnection, AccountSAMMapping, Revenue, SalesBudget
batchID = Database.executeBatch(trf , 100);
system.abortJob(sc.getTriggerId());
}
global void finish(SchedulableContext BC)
{
// Get the ID of the AsyncApexJob representing this batch job from Database.BatchableContext.
// Query the AsyncApexJob object to retrieve the current job's information.
AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email
FROM AsyncApexJob
WHERE Id =:BC.getTriggerId()];
//then use the active job id and abort it
system.abortJob(a.id);
}
}
HI raj above is my test class with 55% code coverage...please make changes in this to make it reach at 75%@isTest
public class AccountTransferScheduleTest {
public static testmethod void testAccountTransferScheduleBatch(){
User thisUser = [SELECT Id, Name FROM User WHERE Id = :UserInfo.getUserId()];
System.runAs (thisUser) {
User userAE = TestUtil.prepareUser();
Profile objProfile = [SELECT Id,Name FROM Profile WHERE Name = 'Master - Account Executive'];
userAE.ProfileId = objProfile.Id;
userAE.HR_Manager__c = thisUser.Id;
userAE.Username = 'testae@mands.com';
userAE.Budget_type__c = 'Local';
userAE.Budget_product_Lines__c = 'Linear/News/Sports';
userAE.Firstname = 'Test';
userAE.Lastname = 'User1';
insert userAE;
User userAE2 = TestUtil.prepareUser();
userAE2.ProfileId = objProfile.Id;
userAE2.HR_Manager__c = thisUser.Id;
userAE2.Username = 'testaeTo@mands.com';
userAE2.Budget_type__c = 'Local';
userAE2.Budget_product_Lines__c = 'Linear/News/Sports';
userAE2.Firstname = 'Test';
userAE2.Lastname = 'User';
insert userAE2;
Account acc = TestUtil.getAccountRec();
acc.primary_commodity__c = 'Auto Aftermarket';
insert acc;
List<Account_Transfer_Tool__c>accTransferList=new list<Account_Transfer_Tool__c>();
Account_Transfer_Tool__c att = new Account_Transfer_Tool__c();
att.Division__c = 'Central';
att.Region__c = 'MidNorth';
att.Status__c = 'New';
att.Transfer_Effective_Date__c = Date.newInstance(2019, 01, 15);
insert att;
accTransferList.add(att);
Account_Transfer_Mapping__c atm = new Account_Transfer_Mapping__c();
atm.Account__c = acc.Id;
atm.Account_Transfer_Simulation__c = att.Id;
atm.From_User__c = userAE.Id;
atm.To_User__c = userAE2.Id;
atm.External_ID__c = userAE.Id+';;;'+acc.Id+';;;'+'2019Jan'+';;;'+userAE2.Id;
insert atm;
List<Admin_Tool_Status_Summary__c>adminToolSmry=new list<Admin_Tool_Status_Summary__c>();
Admin_Tool_Status_Summary__c obj=new Admin_Tool_Status_Summary__c();
obj.From_User_Id__c=userAE2.id;
obj.To_User_Id__c=userAE.Id;
obj.Proposal_End_Date__c=String.valueOf(Date.today());
obj.Job_Type__c='AE Transfer';
obj.Transfer_Details__c=atm.id;
adminToolSmry.add(obj);
insert adminToolSmry;
Opportunity opp1=new Opportunity();
opp1.name='Test opp';
opp1.OwnerId=userAE.Id;
opp1.AccountId=acc.id;
opp1.StageName='Closed Won';
opp1.CloseDate=Date.newInstance(2019, 11, 18);
insert opp1;
Proposal__c p2=new Proposal__c();
p2.Name='Account Connection';
p2.Opportunity__c=opp1.id;
p2.Active__c = false;
p2.Start_Date__c = System.today();
p2.End_Date__c = System.today().addMonths(1);
p2.TIM_System__c='Orlando';
p2.Current_Advertiser_Tim_Id__c='Current advertiser';
p2.Current_Agency_Tim_Id__c='Current agency';
insert p2;
Opportunity opp2=new Opportunity();
opp2.name='Test opp1';
opp2.OwnerId=userAE2.Id;
opp2.AccountId=acc.id;
opp2.StageName='Closed Won';
opp2.CloseDate=Date.newInstance(2019, 11, 20);
insert opp2;
Proposal__c p3=new Proposal__c();
p3.Name='Account Connection';
p3.Opportunity__c=opp2.id;
p3.Active__c = false;
p3.Start_Date__c = System.today();
p3.End_Date__c = System.today().addMonths(1);
p3.TIM_System__c='Orlando';
p3.Current_Advertiser_Tim_Id__c='Current advertiser';
p3.Current_Agency_Tim_Id__c='Current agency';
insert p3;
//create Opportunity
Opportunity opp = TestDataHelper.createopportunity('Test Opportunity',System.today(),'Planning','Pipeline',acc.ID);
opp.ownerid=userAE.Id;
insert opp;
//create Proposal
Proposal__c p1 = TestDataHelper.createProposal('Test Opportunity Proposal',opp.id, '00000', true);
p1.RecordTypeId = TestDataHelper.LinearRecTypeId;
p1.Active__c = true;
p1.Start_Date__c = System.today();
p1.End_Date__c = System.today().addMonths(1);
p1.TIM_System__c='Orlando';
p1.Current_Advertiser_Tim_Id__c='Current advertiser';
p1.Current_Agency_Tim_Id__c='Current agency';
insert p1;
Admin_Tool_Status_Detail__c objAT = new Admin_Tool_Status_Detail__c();
objAT.Admin_Tool_Status_Summary__c = obj.Id;
objAT.Object_Type__c='Account Connection';
objAT.Status__c='Not Started';
objAT.Id__c=p1.id;
objAT.Error_Message__c='error';
//objAT.Status__c='Success';
insert objAT;
Admin_Tool_Status_Detail__c objAT1 = new Admin_Tool_Status_Detail__c();
objAT1.Admin_Tool_Status_Summary__c = obj.Id;
objAT1.Object_Type__c='Account Connection';
objAT1.Status__c='Not Started';
objAT1.Id__c=p2.id;
objAT1.Error_Message__c='error';
//objAT1.Status__c='Success';
insert objAT1;
Admin_Tool_Status_Detail__c objAT2 = new Admin_Tool_Status_Detail__c();
objAT2.Admin_Tool_Status_Summary__c = obj.Id;
objAT2.Object_Type__c='Account Connection';
objAT2.Status__c='Not Started';
objAT2.Id__c=p3.id;
objAT2.Error_Message__c='error';
//objAT1.Status__c='Success';
insert objAT2;
String query = 'Select id,Id__c , Status__c,Error_Message__c, Admin_Tool_Status_Summary__r.Proposal_End_Date__c, Admin_Tool_Status_Summary__r.To_User_ID__c, Admin_Tool_Status_Summary__r.From_User_ID__c from Admin_Tool_Status_Detail__c where Object_Type__c = \'Proposal\' and Status__c=\'Not Started\' and Admin_Tool_Status_Summary__r.Id in: admToolSummaryIDs order by Tim_System__c';
Map<string,integer>mapOfBcthsize=new map<string,integer>();
mapOfBcthsize.put('Opportunity_Batch_Size',200);
mapOfBcthsize.put('Account_Team_Batch_Size',200);
mapOfBcthsize.put('Account_Connection_Batch_Size',200);
mapOfBcthsize.put('Account_SAM_Mappings_Batch_Size',200);
mapOfBcthsize.put('Revenue_Batch_Size',200);
mapOfBcthsize.put('Budget_Batch_Size',200);
mapOfBcthsize.put('NBUC_Batch_Size',200);
Set<string>userset=new set<string>();
userset.add(userAE.Id);
userset.add(userAE2.id);
TransferProposalBatch trf=new TransferProposalBatch(query,adminToolSmry,mapOfBcthsize,userset);
/* List<AsyncApexJob> jobInfo = [SELECT Status,NumberOfErrors FROM AsyncApexJob];
System.assertEquals(jobInfo.size(), 0); */
Test.startTest();
//AccountTransferSchedule ats=new AccountTransferSchedule(trf);
// Schedulablecontext sc=null;
AccountTransferSchedule ats=new AccountTransferSchedule(trf);
Datetime scheduledDate = adminToolSmry[0].Transfer_Details__r.Account_Transfer_Simulation__r.Transfer_Effective_Date__c;
//AccountTransferSchedule atrf = new AccountTransferSchedule(updPrslBtch);
DateTime tobeWorked = Datetime.now();
//DateTime tobeWorked1 = scheduledDate <= Datetime.now()?Datetime.now().addSeconds(15):scheduledDate;
//DateTime tobeWorked = tobeWorked1 != null?tobeWorked1:Datetime.now().addSeconds(15);
String hour = String.valueOf(tobeWorked.hour());
String min = String.valueOf(tobeWorked.minute());
String ss = String.valueOf(tobeWorked.second());
String nextFireTime = ss + ' ' + min + ' ' + hour + ' * * ?';
String jobID = system.schedule('Proposal Transfer Job- '+ accTransferList[0].Id, nextFireTime, ats );
//ats.execute(sc);
/* String sch = '0 0 23 * * ?';
system.schedule('Test status Check', sch, ats );*/
Test.stopTest();
}
}
}