Skip to main content

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);

}

}

 
2 respuestas
  1. 26 abr 2019, 08:30

    @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();

    }

    }

    }

    HI raj above is my test class with 55% code coverage...please make changes in this to make it reach at 75%
0/9000