@Istest public with sharing class SendEmailUtilTest { static void setupTestData() { StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001Trigger = true; FixtureUtil.SkipTrigger = true; StaticParameter.EscapeVMCTrigger = true; Oly_TriggerHandler.bypass('ConsumApplyTriggerHandler'); Oly_TriggerHandler.bypass('ConsumApplyEquipmentSetDetailHandler'); Oly_TriggerHandler.bypass('ConsumApplyEquipmentSetHandler'); Oly_TriggerHandler.bypass(RentalApplyTriggerHandler.class.getName()); // 省 Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-99'; al.Level1_Sys_No__c = '999999'; insert al; // 市 Address_Level2__c al2 = new Address_Level2__c(); al2.Level1_Code__c = 'CN-99'; al2.Level1_Sys_No__c = '999999'; al2.Level1_Name__c = '東京'; al2.Name = '渋谷区'; al2.Level2_Code__c = 'CN-9999'; al2.Level2_Sys_No__c = '9999999'; al2.Address_Level__c = al.id; insert al2; // 病院を作る Account hospital = new Account(); hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; hospital.Name = 'test hospital'; hospital.Is_Active__c = '有効'; hospital.Attribute_Type__c = '卫生部'; hospital.Speciality_Type__c = '综合医院'; hospital.Grade__c = '一级'; hospital.OCM_Category__c = 'SLTV'; hospital.Is_Medical__c = '医疗机构'; hospital.State_Master__c = al.id; hospital.City_Master__c = al2.id; hospital.Town__c = '东京'; hospital.TradeComplianceStatus__c = '警示名单'; insert hospital; // 戦略科室を得る Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; // 診療科を作る Account dep = new Account(); dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id; dep.Name = 'test dep'; dep.AgentCode_Ext__c = '9999998'; dep.ParentId = strategicDep[0].Id; dep.Department_Class__c = strategicDep[0].Id; dep.Hospital__c = hospital.Id; insert dep; // 产品 // 20220317 ljh Fixture_Model_No__c和配套的 主体备品配套明细型号应该一致 Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', Fixture_Model_No__c='modelNo1',Serial_Lot_No__c='S/N tracing', Fixture_Model_No_T__c = 'modelNo1', Asset_Model_No__c = 'Pro1', ProductCode_Ext__c='pc01',Manual_Entry__c=false,CountryOfOrigin__c='US'); insert new Product2[] {pro1}; //备品借出申请 Rental_Apply__c raObj = new Rental_Apply__c(); raObj.Name = 'testra'; raObj.Product_category__c = 'GI'; raObj.Demo_purpose1__c = '其他'; raObj.demo_purpose2__c = '其他'; raObj.Person_In_Charge__c = Userinfo.getUserId(); raObj.applyUser__c = Userinfo.getUserId(); raObj.Demo_purpose_text__c = '123'; raObj.Request_shipping_day__c = Date.toDay(); raObj.Request_return_day__c = Date.toDay(); raObj.direct_send__c = '上门自提'; raObj.Loaner_received_staff__c = '王五'; raObj.Loaner_received_staff_phone__c = '110'; raObj.pickup_time__c = System.now(); raObj.Cross_Region_Assign__c= '北京 备品中心'; raObj.Hospital__c = hospital.Id; raObj.Loaner_centre_mail_address__c = 'OCM_Asset@olympus.com.cn.invalid'; insert raObj; // 保有设备 Asset asset1 = new Asset(Asset_Owner__c = 'Olympus'); asset1.RecordTypeId = System.Label.Asset_RecordType; asset1.SerialNumber = 'A1'; asset1.Name = 'A1'; asset1.AccountId = dep.Id; asset1.Department_Class__c = strategicDep[0].Id; asset1.Hospital__c = hospital.Id; asset1.Product2Id = pro1.Id; asset1.Quantity = 1; asset1.Status = '使用中'; asset1.Manage_type__c = '个体管理'; asset1.Loaner_accsessary__c = false; asset1.AssetManageConfirm__c = true; asset1.Salesdepartment__c = '0.备品中心'; asset1.Internal_asset_location__c = '大连'; asset1.Product_category__c = 'GI'; asset1.Equipment_Type__c = '产品试用'; asset1.SalesProvince__c = '辽宁'; asset1.CompanyOfEquipment__c = '大连'; asset1.Internal_Asset_number__c = '0003'; asset1.WH_location__c = '货架号1'; asset1.Rental_Count__c = 0; asset1.Out_of_wh__c = 0; insert new Asset[] {asset1}; Fixture_Set__c fsObj1 = new Fixture_Set__c(); fsObj1.Name = 'set1'; fsObj1.Fixture_Set_Body_Model_No__c = 'modelNo1'; fsObj1.Loaner_name__c = 'name1'; insert fsObj1; // 备品配套明细 Fixture_Set_Detail__c fsdObjA1 = new Fixture_Set_Detail__c(); fsdObjA1.Name = '备品配套明细名1'; fsdObjA1.Name_CHN_Created__c = '中文名称1'; fsdObjA1.Product2__c = pro1.Id; fsdObjA1.Fixture_Set__c = fsObj1.Id; fsdObjA1.Is_Body__c = true; fsdObjA1.Is_Optional__c = false; fsdObjA1.Is_OneToOne__c = false; fsdObjA1.UniqueKey__c = fsObj1.Id + ':' + pro1.Id; fsdObjA1.SortInt__c = 1; insert new Fixture_Set_Detail__c[] {fsdObjA1}; // 借出备品配套一览 Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c(); raesObj.Rental_Apply__c = raObj.Id; raesObj.Fixture_Set__c = fsObj1.Id; raesObj.Cancel_Select__c = false; raesObj.Rental_Start_Date__c = Date.toDay(); raesObj.Rental_End_Date__c = Date.toDay(); raesObj.IndexFromUniqueKey__c = 1; raesObj.UniqueKey__c = '1:'+ fsObj1.Id + ':1'; insert raesObj; // 借出备品配套一览明细 Rental_Apply_Equipment_Set_Detail__c raesdObj1 = new Rental_Apply_Equipment_Set_Detail__c(); raesdObj1.Name = fsdObjA1.Name; raesdObj1.Rental_Apply__c = raObj.Id; raesdObj1.Fixture_Set_Detail__c = fsdObjA1.Id; raesdObj1.Rental_Num__c = 1; raesdObj1.Queue_Number__c = null; raesdObj1.Is_Body__c = true; raesdObj1.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj1.IndexFromUniqueKey__c = 1; raesdObj1.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA1.Id + ':1'; raesdObj1.FSD_Fixture_Model_No__c = 'n01'; raesdObj1.Fixture_Model_No_text__c = 'n01'; raesdObj1.Salesdepartment_before__c = '1.华北营业本部'; raesdObj1.Internal_asset_location_before__c = '大连'; raesdObj1.Product_category_text__c = 'GI'; raesdObj1.Equipment_Type_text__c = '产品试用'; insert new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1}; raesObj.First_RAESD__c = raesdObj1.Id; update raesObj; // 申请单变为已批准 raObj.Status__c = '已批准'; update raObj; //耗材备品申请 Consum_Apply__c ca = new Consum_Apply__c(); ca.Name = 'XXXX-YYYY_ZZZZ_1'; ca.Status__c = '批准'; ca.DataMigration_Flag__c = true; ca.Hospital__c = hospital.Id; ca.Loaner_centre_mail_address__c = 'OCM_Asset@olympus.com.cn.invalid'; insert ca; Consum_Apply_Equipment_Set__c caes = new Consum_Apply_Equipment_Set__c(); caes.Consum_Apply__c = ca.Id; caes.Consum_Start_Date__c = Date.today().addDays(20); caes.DataMigration_Flag__c = true; insert caes; Consum_Apply_Equipment_Set_Detail__c caesd = new Consum_Apply_Equipment_Set_Detail__c(); caesd.DataMigration_Flag__c = true; caesd.Consum_Apply__c = ca.Id; caesd.Consum_Apply_Equipment_Set__c = caes.Id; caesd.Consum_Start_Date__c = caes.Consum_Start_Date__c; caesd.Trial_User__c = '我'; caesd.Follower_User__c = UserInfo.getUserId(); insert caesd; // 草案中 } static testMethod void testMethod1() { setupTestData(); try { //黑名单发邮件 Rental_Apply__c ra = [SELECT Id, Hospital__c FROM Rental_Apply__c LIMIT 1]; Account acc = new Account(); acc.Id = ra.Hospital__c; acc.TradeComplianceStatus__c = '黑名单'; update acc; SendEmailUtil.tradeTempleSend(ra.Id, '分配画面', null, null); } catch (Exception e) { } } static testMethod void testMethod2(){ //警示名单发邮件 setupTestData(); Rental_Apply__c ra = [SELECT Id, Hospital__c FROM Rental_Apply__c LIMIT 1]; List assList = [SELECT Id from Asset]; List raesdList = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c]; List assStringList = new List(); List raesdStringList = new List(); if(assList.size()>0){ for(Asset ass : assList){ assStringList.add(ass.Id); } } if(raesdList.size()>0){ for(Rental_Apply_Equipment_Set_Detail__c raesd : raesdList){ raesdStringList.add(raesd.Id); } } SendEmailUtil.tradeTempleSend(ra.Id, '分配画面', assStringList, null); SendEmailUtil.tradeTempleSend(ra.Id, '主体分配', null, raesdStringList); } //耗材发送邮件 static testMethod void testMethod3(){ setupTestData(); Consum_Apply__c ca = [SELECT Id FROM Consum_Apply__c LIMIT 1]; List assList = [SELECT Id from Asset]; List raesdList = [SELECT Id FROM Consum_Apply_Equipment_Set_Detail__c]; List assStringList = new List(); List caesdStringList = new List(); if(assList.size()>0){ for(Asset ass : assList){ assStringList.add(ass.Id); } } if(raesdList.size()>0){ for(Consum_Apply_Equipment_Set_Detail__c raesd : raesdList){ caesdStringList.add(raesd.Id); } } SendEmailUtil.tradeConsumTempleSend(ca.Id, '提交待审批', assStringList, null); SendEmailUtil.tradeConsumTempleSend(ca.Id, '默认分配画面', null, caesdStringList); } static testMethod void testMethod4(){ setupTestData(); Consum_Apply__c ca = [SELECT Id,Hospital__c FROM Consum_Apply__c LIMIT 1]; Account acc = new Account(); acc.Id = ca.Hospital__c; acc.TradeComplianceStatus__c = '黑名单'; update acc; SendEmailUtil.tradeConsumTempleSend(ca.Id, '提交待审批', null, null); SendEmailUtil.tradeConsumTempleSend(ca.Id, '查看默认分配', null, null); } }