@isTest private class rollupToRepairBatchTest { private static Id pricebookId = ControllerUtil.getStandardPricebook().Id; @TestSetup private static void SetUP() { // システム管理者 User user = new User(Test_staff__c = true); user.LastName = '_サンブリッジ'; user.FirstName = 'う'; user.Alias = 'う'; user.Email = 'olympusTest03@sunbridge.com'; user.Username = 'olympusTest03@sunbridge.com'; user.CommunityNickname = 'う'; user.IsActive = true; user.EmailEncodingKey = 'ISO-2022-JP'; user.TimeZoneSidKey = 'Asia/Tokyo'; user.LocaleSidKey = 'ja_JP'; user.LanguageLocaleKey = 'ja'; user.ProfileId = System.Label.ProfileId_SystemAdmin; user.Job_Category__c = '销售推广'; user.Province__c = '上海市'; user.Dept__c = '医疗华北营业本部'; user.Use_Start_Date__c = Date.today().addMonths(-6); user.SalesManager__c = UserInfo.getUserId(); user.BuchangApprovalManagerSales__c = UserInfo.getUserId(); user.JingliApprovalManager__c = UserInfo.getUserId(); user.BuchangApprovalManager__c = UserInfo.getUserId(); user.ZongjianApprovalManager__c = UserInfo.getUserId(); user.JingliEquipmentManager__c = UserInfo.getUserId(); user.Buzhang_Equipment_Manager__c = UserInfo.getUserId(); System.runAs(user) { StaticParameter.rentalApplyIsRunning = true; StaticParameter.EscapeNFM001AgencyContractTrigger = true; ControllerUtil.EscapeNFM001Trigger = true; // 病院を作る Account hospital = new Account(); hospital.recordtypeId = [Select Id FROM RecordType WHERE DeveloperName = 'HP'].id; hospital.Name = 'test hospital'; insert hospital; // 戦略科室を得る List strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI']; // 診療科を作る Account dep = new Account(); dep.recordtypeId = [Select Id FROM RecordType WHERE DeveloperName = 'Department_GI'].id; dep.Name = 'test dep'; dep.ParentId = strategicDep[0].Id; dep.Department_Class__c = strategicDep[0].Id; dep.Hospital__c = hospital.Id; insert dep; //联系人 Contact core = new Contact(email = 'jplumber@salesforce.com', firstname = 'Joe', lastname = 'Plumber', accountid = dep.id); insert core; // 製品を作る Product2 productA = new Product2( Name = 'テスト商品', Fixture_Model_No__c = 'n01'); insert productA; // 価格表エントリを作成する PricebookEntry entry = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = productA.Id); entry.UnitPrice = 0; entry.IsActive = true; entry.UseStandardPrice = false; entry.CurrencyIsoCode = 'CNY'; entry.Product2Id = productA.Id; insert entry; // 納入機器を作成する Asset asset = new Asset(); asset.Name = 'テスト機器'; asset.AccountId = dep.Id; asset.Department_Class__c = strategicDep[0].Id; asset.Hospital__c = hospital.Id; asset.SerialNumber = 'testserial'; insert asset; Fixture_Set__c fixtures1 = new Fixture_Set__c(); fixtures1.Name = 'set1'; fixtures1.Loaner_name__c = 'name1'; insert new Fixture_Set__c[] {fixtures1}; Fixture_Set_Detail__c fsd1 = new Fixture_Set_Detail__c(); fsd1.Product2__c = productA.Id; fsd1.Fixture_Set__c = fixtures1.Id; fsd1.Is_Body__c = true; fsd1.Is_Optional__c = false; fsd1.UniqueKey__c = fixtures1.Id + ':' + productA.Id; fsd1.SortInt__c = 1; insert new Fixture_Set_Detail__c[] {fsd1}; // 修理做成 Repair__c repair01 = new Repair__c(); repair01.Account__c = dep.Id; repair01.Department_Class__c = strategicDep[0].Id; repair01.Hospital__c = hospital.Id; repair01.Delivered_Product__c = asset.Id; repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today().addDays(0); // 维修合同判断日がサービス契約の中間辺りの日付 insert repair01; Rental_Apply__c ra = new Rental_Apply__c(); ra.Name = 'test'; ra.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Cao_An_Zhong.ordinal()); ra.Request_shipping_day__c = Date.today().addDays(3); ra.Hope_Lonaer_date_Num__c = 1; ra.Request_return_day__c = Date.today().addDays(8); ra.Request_approval_time__c = datetime.now().addDays(99); ra.Person_In_Charge__c = user.Id; ra.applyUser__c = user.Id; ra.SalesManager__c = user.Id; ra.Repair__c = repair01.Id; ra.Demo_purpose1__c = '其他'; ra.Demo_purpose2__c = '其他'; ra.Account__c = dep.Id; ra.Strategic_dept__c = dep.Id; ra.Hospital__c = hospital.Id; ra.Loaner_medical_Staff__c = core.Id; ra.Phone_number__c = '12222222222'; ra.Request_approval_time__c = datetime.now().addDays(9); insert ra; Rental_Apply_Equipment_Set__c es1 = new Rental_Apply_Equipment_Set__c(); es1.Rental_Apply__c = ra.Id; es1.Fixture_Set__c = fixtures1.Id; es1.IndexFromUniqueKey__c = 1; es1.UniqueKey__c = '1:' + fixtures1.Id + ':1'; insert new Rental_Apply_Equipment_Set__c[] {es1}; //创建借出配套明细 Rental_Apply_Equipment_Set_Detail__c esd1 = new Rental_Apply_Equipment_Set_Detail__c(); esd1.Rental_Apply__c = ra.Id; esd1.Fixture_Set_Detail__c = fsd1.Id; esd1.Rental_Num__c = 1; esd1.Queue_Number__c = 0; esd1.Rental_Apply_Equipment_Set__c = es1.Id; esd1.Salesdepartment_before__c = '1.华北营业本部'; esd1.Internal_asset_location_before__c = '北京 备品中心'; esd1.Product_category_text__c = 'GI'; esd1.Equipment_Type_text__c = '产品试用'; esd1.IndexFromUniqueKey__c = 1; esd1.UniqueKey__c = '1:' + es1.Id + ':' + fsd1.Id + ':1'; esd1.Is_Body__c = true; esd1.Shippment_loaner_time__c = datetime.now().addDays(99); insert esd1; } } // 测试修理有效申请 @isTest private static void myUnitTestRepair() { System.Test.startTest(); Database.executeBatch(new rollupToRepairBatch(), 100); System.Test.stopTest(); rollupToRepairBatch batch = new rollupToRepairBatch(); batch.failedCount ++; batch.sendFieldEmail(); } @isTest private static void myUnitTestRepair1() { System.Test.startTest(); Database.executeBatch(new rollupToRepairBatch(true), 100); System.Test.stopTest(); } @isTest private static void myUnitTestRepair2() { System.Test.startTest(); Database.executeBatch(new rollupToRepairBatch(''), 100); System.Test.stopTest(); } @isTest private static void myUnitTestRepair3() { list IDlist = new list(); System.Test.startTest(); Database.executeBatch(new rollupToRepairBatch(IDlist), 100); System.Test.stopTest(); } }