@isTest
private class AccountUpEffectiveContractBatchTest
{
	@isTest
	static void itShould()
	{
		List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
        if (rectCo.size() == 0) {
            return;
        }

        List<RecordType> rectContract = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '契約'];
        if (rectCo.size() == 0) {
            return;
        }
		//经销商
        Account myAccount1 = new Account(name='Testaccount001',
                                        Dealer_discount__c =20,
                                        RecordTypeId = rectCo[0].Id);
        insert myAccount1;
        //经销商有效合同
        Account myAccount2 = new Account(name='Testaccount002',
                                            RecordTypeId = rectContract[0].Id,
                                            Contract_Decide_Start_Date__c = Date.today().addDays(-1),
                                            Contract_Decide_End_Date__c =Date.today().addDays(1),
                                            Agent_Ref__c =myAccount1.Id,
                                            ParentId =myAccount1.Id,ET_SP_Dealer__c = true);
        insert myAccount2;

        Account acc = [select id,Agency_With_EffectiveContract__c from Account where id = :myAccount1.Id ];
        System.assertEquals(true, acc.Agency_With_EffectiveContract__c);
        myAccount1.Agency_With_EffectiveContract__c = false;
        update myAccount1;
        System.Test.StartTest();
        Id execBTId = Database.executeBatch(new AccountUpEffectiveContractBatch(),20);
        System.Test.StopTest();
        acc = [select id,Agency_With_EffectiveContract__c from Account where id = :myAccount1.Id ];
        System.assertEquals(true, acc.Agency_With_EffectiveContract__c);
	}

	@isTest
	static void itShould02()
	{
		List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
        if (rectCo.size() == 0) {
            return;
        }

        List<RecordType> rectContract = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '契約'];
        if (rectCo.size() == 0) {
            return;
        }
		//经销商
        Account myAccount1 = new Account(name='Testaccount001',
                                        Dealer_discount__c =20,
                                        RecordTypeId = rectCo[0].Id);
        insert myAccount1;
        //经销商有效合同
        Account myAccount2 = new Account(name='Testaccount002',
                                            RecordTypeId = rectContract[0].Id,
                                            Contract_Decide_Start_Date__c = Date.today().addDays(-1),
                                            Contract_Decide_End_Date__c =Date.today().addDays(1),
                                            Agent_Ref__c =myAccount1.Id,
                                            ParentId =myAccount1.Id,ET_SP_Dealer__c = false);
        insert myAccount2;

        Account acc = [select id,Agency_With_EffectiveContract__c from Account where id = :myAccount1.Id ];
        System.assertEquals(false, acc.Agency_With_EffectiveContract__c);
        myAccount1.Agency_With_EffectiveContract__c = true;
        update myAccount1;
        System.Test.StartTest();
        Id execBTId = Database.executeBatch(new AccountUpEffectiveContractBatch(),20);
        System.Test.StopTest();
        acc = [select id,Agency_With_EffectiveContract__c from Account where id = :myAccount1.Id ];
        System.assertEquals(true, acc.Agency_With_EffectiveContract__c);
	}
}