@isTest
private class BreachRecordBatchTest {
	
	@isTest static void test_method_one() {
		OlympusCalendar__c ocq  = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c ocw  = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oce  = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc4r = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc5q = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc6q = new OlympusCalendar__c(Date__c = Date.today().addDays(-6), ChangeToHoliday__c=true, ChangeToWorkday__c=false);
        OlympusCalendar__c ocww = new OlympusCalendar__c(Date__c = Date.today().addDays(-7), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c ocwww= new OlympusCalendar__c(Date__c = Date.today().addDays(-8), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c ocew = new OlympusCalendar__c(Date__c = Date.today().addDays(-9), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc4rw = new OlympusCalendar__c(Date__c = Date.today().addDays(-10), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc5qw = new OlympusCalendar__c(Date__c = Date.today().addDays(-11), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc6qw = new OlympusCalendar__c(Date__c = Date.today().addDays(-12), ChangeToHoliday__c=true, ChangeToWorkday__c=false);
        
		OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false);
        OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false);
        OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
        OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true);

        insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,ocq,ocw,oce,oc4r,oc5q,oc6q, ocww,ocwww,ocew,oc4rw,oc5qw,oc6qw};
		List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE'];   
       	List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE'];
        //List<RecordType> rectus = [select Id from RecordType where IsActive = true and SobjectType = 'User' and Name = 'Customer IE'];
       
       User user = new User();
        user.LastName = 'test';
        user.FirstName = 'test';
        user.Alias = 'test';
        user.Email = 'test@test.com';
        user.Username = 'test111@test222.com';
        user.CommunityNickname = 'test';
        user.IsActive = true;
        user.EmailEncodingKey = 'ISO-2022-JP';
        user.TimeZoneSidKey = 'Asia/Tokyo';
        user.LocaleSidKey = 'ja_JP';
        user.LanguageLocaleKey = 'ja';
        user.ProfileId = System.Label.SystemAdmin;
        insert user;


        // 新建备品借出申请
        loaner_application__c loaner = new loaner_application__c();
        loaner.Name = 'TEST';
        loaner.RecordTypeId = rectLo[0].id;
        loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE';
        loaner.DEMO_PURPOSE__C = '演示';
        loaner.Request_shipping_Date__c = Date.today().addDays(10);
        loaner.Request_return_Date__c = Date.today().addDays(10);
        loaner.Status__c = '部分发货';
        loaner.Return_Track_Company__c = '物流公司';
        loaner.Rental_End_Date__c = Date.today().addDays(-2);
        loaner.OwnerId = user.Id;

        //loaner.Return_Trake_Staff__c = '返品人';
        insert loaner;

        loaner_application__c loaner1 = new loaner_application__c();
        loaner1.Name = 'TEST';
        loaner1.RecordTypeId = rectLo[0].id;
        loaner1.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE';
        loaner1.DEMO_PURPOSE__C = '演示';
        loaner1.Request_shipping_Date__c = Date.today().addDays(10);
        loaner1.Request_return_Date__c = Date.today().addDays(10);
        loaner1.Status__c = '部分发货';
        loaner1.Return_Track_Company__c = '物流公司';
        loaner1.Rental_End_Date__c = Date.today().addDays(+3);
        loaner1.OwnerId = user.Id;

        //loaner.Return_Trake_Staff__c = '返品人';
        insert loaner1;
        // 新建 客户
        Account acc = new Account();
        acc.RecordTypeId = rectCo[0].Id;
        acc.Name         = '客户テスト1';
        acc.DivisionName__c = 'DivisionName__c';
        acc.FacilityName__c = 'FacilityName__c';
        acc.PostCode__c='000000';
        insert acc;

        List<Asset> In_asset = new List<Asset>();

        Asset asset = new Asset();
        asset.Name = 'テスト機器1';
        asset.AccountId = acc.Id;
        asset.SerialNumber = 'testserial';
        In_asset.add(asset);

        asset = new Asset();
        asset.Name = 'テスト機器2';
        asset.AccountId = acc.Id;
        asset.SerialNumber = 'testserial';
        In_asset.add(asset);

        asset = new Asset();
        asset.Name = 'テスト機器3';
        asset.AccountId = acc.Id;
        asset.SerialNumber = 'testserial';
        In_asset.add(asset);

        insert In_asset;


        // 新建 借出明细
        List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>();
        loaner_application_detail__c detail = new loaner_application_detail__c();

        detail.loaner_application__c = loaner.Id;
        detail.loaner__c = In_asset[0].id;
        detail.name = '000';
        detail.RAESD_STATUS__C = '申请者已收货';
        In_detail.add(detail);

        detail = new loaner_application_detail__c();
        detail.loaner_application__c = loaner.Id;
        detail.loaner__c = In_asset[1].id;
        detail.name = '111';
        detail.RAESD_STATUS__C = '申请者已收货';
		//detail.Shipment_Request_Date__c = Date.today();
        In_detail.add(detail);

        detail = new loaner_application_detail__c();
        detail.loaner_application__c = loaner1.Id;
        detail.loaner__c = In_asset[2].id;
        detail.name = '222';
        detail.Automatic_Received_Date__c =  Date.today().addDays(-1);
        detail.RAESD_STATUS__C = '已出库';
        In_detail.add(detail);

        insert In_detail;

        Loaner_Express__c le = new Loaner_Express__c(
        	Name = 'test01',
        	loaner_application__c = loaner.Id
        	);

        insert le;
        In_detail[2].Loaner_Express__c = le.Id;
       	le.Consignor_LogisticsNumber__c ='test123123';
        le.Consignor_LogisticsCompany__c = 'testCompany';
        le.Shipment_Request_Date__c = Date.today();       
        le.NotReceivingNum__c = 1;
        update le;
        update In_detail;

        le.Consignor_LogisticsNumber__c = '3232323';
        update le;

         Loaner_Express__c le1 = new Loaner_Express__c(
        	Name = 'test01',
        	loaner_application__c = loaner.Id
        	);

        insert le1;
        //BreachRecordBatch.come();
        List<String> idList = new List<String>();
        for(loaner_application_detail__c lad : In_detail){
            idList.add(lad.id);
        }

        System.debug(idList.size()+'1111111111111111111111111');
        Database.executeBatch(new BreachRecordBatch(idList), 20);	

	}
	
	
}