@isTest private class AssetHandlerTest { private static User user1; private static List setupRAList; static Asset setupTestData() { // 省 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; // 病院を作る ControllerUtil.EscapeNFM001Trigger = true; StaticParameter.EscapeNFM001Trigger = true; StaticParameter.EscapeAccountTrigger = true; StaticParameter.EscapeNFM001AgencyContractTrigger = true; Account hospital = new Account(); hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; System.debug('病院完了!'); 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 = '东京'; insert hospital; System.debug('病院 insert 完了!'); // 戦略科室を得る Account strategicDep = new Account(); strategicDep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_Class_OTH'].id; strategicDep.Name = 'Olympus社内 其他'; strategicDep.Department_Class_Label__c = '其他'; strategicDep.Hospital__c = hospital.Id; strategicDep.ParentId = hospital.Id; insert strategicDep; // 診療科を作る 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.Id; dep.Department_Class__c = strategicDep.Id; dep.Hospital__c = hospital.Id; insert dep; System.debug('診療科 insert 完了!'); // 产品 Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing', Fixture_Model_No_T__c = 'n01', ProductCode_Ext__c='pc01',Manual_Entry__c=false); insert new Product2[] {pro1}; // 保有设备A (主体) Asset assetA1 = new Asset(Asset_Owner__c = 'Olympus'); assetA1.RecordTypeId = System.Label.Asset_RecordType; assetA1.SerialNumber = 'ass01'; assetA1.Name = 'ass01'; assetA1.AccountId = dep.Id; assetA1.Department_Class__c = strategicDep.Id; assetA1.Hospital__c = hospital.Id; assetA1.Product2Id = pro1.Id; assetA1.Quantity = 1; assetA1.Status = '有库存'; assetA1.Manage_type__c = '个体管理'; assetA1.Loaner_accsessary__c = false; assetA1.Out_of_wh__c = 0; assetA1.Salesdepartment__c = '1.华北营业本部'; assetA1.Internal_asset_location__c = '北京 备品中心'; assetA1.Product_category__c = 'GI'; assetA1.Equipment_Type__c = '产品试用'; assetA1.SalesProvince__c = '北京'; insert new Asset[] {assetA1}; Fixture_Set__c fsObjA1 = new Fixture_Set__c(); fsObjA1.Name = 'set1'; fsObjA1.Fixture_Set_Body_Model_No__c = 'modelNo1'; fsObjA1.Loaner_name__c = 'name1'; insert fsObjA1; // 备品配套明细 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 = fsObjA1.Id; fsdObjA1.Is_Body__c = true; fsdObjA1.Is_Optional__c = false; fsdObjA1.UniqueKey__c = fsObjA1.Id + ':' + pro1.Id; fsdObjA1.SortInt__c = 1; insert new Fixture_Set_Detail__c[] {fsdObjA1}; //备品借出申请 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(); Rental_Apply__c raObj1 = new Rental_Apply__c(); raObj1.Name = 'testra1'; raObj1.Product_category__c = 'GI'; raObj1.Demo_purpose1__c = '其他'; raObj1.demo_purpose2__c = '其他'; raObj1.Person_In_Charge__c = Userinfo.getUserId(); raObj1.applyUser__c = Userinfo.getUserId(); raObj1.Demo_purpose_text__c = '123'; raObj1.Request_shipping_day__c = Date.toDay(); raObj1.Request_return_day__c = Date.toDay(); raObj1.direct_send__c = '上门自提'; raObj1.Loaner_received_staff__c = '王五'; raObj1.Loaner_received_staff_phone__c = '110'; raObj1.pickup_time__c = System.now(); setupRAList = new Rental_Apply__c[]{raObj,raObj1}; insert setupRAList; // 借出备品配套一览 Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c(); raesObj.Rental_Apply__c = raObj.Id; raesObj.Fixture_Set__c = fsObjA1.Id; raesObj.Cancel_Select__c = false; raesObj.Shipment_request_time__c = Date.toDay(); raesObj.Rental_Start_Date__c = Date.toDay(); raesObj.Rental_End_Date__c = Date.toDay(); raesObj.IndexFromUniqueKey__c = 1; raesObj.UniqueKey__c = '1:'+ fsObjA1.Id + ':1'; Rental_Apply_Equipment_Set__c raesObj1 = new Rental_Apply_Equipment_Set__c(); raesObj1.Rental_Apply__c = raObj1.Id; raesObj1.Fixture_Set__c = fsObjA1.Id; raesObj1.Cancel_Select__c = false; raesObj1.Shipment_request_time__c = Date.toDay(); raesObj1.Rental_Start_Date__c = Date.toDay().addDays(1); raesObj1.Rental_End_Date__c = Date.toDay().addDays(1); raesObj1.IndexFromUniqueKey__c = 2; raesObj1.UniqueKey__c = '1:'+ fsObjA1.Id + ':2'; insert new Rental_Apply_Equipment_Set__c[]{raesObj, raesObj1}; // 借出备品配套一览明细 Rental_Apply_Equipment_Set_Detail__c raesdObj1 = new Rental_Apply_Equipment_Set_Detail__c(); 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.IndexFromUniqueKey__c = 1; raesdObj1.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA1.Id + ':1'; raesdObj1.Rental_Apply_Equipment_Set__c = raesObj.Id; Rental_Apply_Equipment_Set_Detail__c raesdObj2 = new Rental_Apply_Equipment_Set_Detail__c(); raesdObj2.Rental_Apply__c = raObj1.Id; raesdObj2.Fixture_Set_Detail__c = fsdObjA1.Id; raesdObj2.Rental_Num__c = 1; raesdObj2.Queue_Number__c = null; raesdObj2.Is_Body__c = true; raesdObj2.IndexFromUniqueKey__c = 1; raesdObj2.UniqueKey__c = '1:'+ raesObj1.Id + ':' + fsdObjA1.Id + ':1'; raesdObj2.Rental_Apply_Equipment_Set__c = raesObj1.Id; insert new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1, raesdObj2}; return assetA1; } // 已分配的数据节点 static Id setupTestData2() { // OLY_OCM-643 追加ControllerUtil.EscapeNFM001Trigger StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001Trigger = true; StaticParameter.EscapeAccountTrigger = true; ControllerUtil.EscapeNFM001Trigger = true; Rental_Apply__c raObj = new Rental_Apply__c(); Fixture_Set_Detail__c fsdObjA1 = new Fixture_Set_Detail__c(); Fixture_Set_Detail__c fsdObjA2 = new Fixture_Set_Detail__c(); Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c(); Asset asset1 = new Asset(Asset_Owner__c = 'Olympus'); Asset asset2 = new Asset(Asset_Owner__c = 'Olympus'); Fixture_OneToOne_Link__c foLink1 = new Fixture_OneToOne_Link__c(); System.runAs(new User(Id = Userinfo.getUserId())) { StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001Trigger = true; StaticParameter.EscapeAccountTrigger = true; ControllerUtil.EscapeNFM001Trigger = true; Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); Oly_TriggerHandler.bypass(AgencyHospitalHandler.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 = '东京'; insert hospital; // 戦略科室を得る Account strategicDep = new Account(); strategicDep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_Class_OTH'].id; strategicDep.Name = 'Olympus社内 其他'; strategicDep.Department_Class_Label__c = '其他'; strategicDep.Hospital__c = hospital.Id; strategicDep.ParentId = hospital.Id; insert strategicDep; // 診療科を作る 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.Id; dep.Department_Class__c = strategicDep.Id; dep.Hospital__c = hospital.Id; insert dep; // 产品 Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing', Fixture_Model_No_T__c = 'n01', Asset_Model_No__c = 'Pro1', ProductCode_Ext__c='pc01',Manual_Entry__c=false); Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI', Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing', Fixture_Model_No_T__c = 'n02', Asset_Model_No__c = 'Pro2', ProductCode_Ext__c='pc02',Manual_Entry__c=false); insert new Product2[] {pro1, pro2}; //备品借出申请 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(); insert raObj; // 保有设备 asset1.RecordTypeId = System.Label.Asset_RecordType; asset1.SerialNumber = 'asset1'; asset1.Name = 'asset1'; asset1.AccountId = dep.Id; asset1.Department_Class__c = strategicDep.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.Out_of_wh__c = 0; asset1.Salesdepartment__c = '1.华北营业本部'; 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 = '0001'; asset2.RecordTypeId = System.Label.Asset_RecordType; asset2.SerialNumber = 'asset2'; asset2.Name = 'asset2'; asset2.AccountId = dep.Id; asset2.Department_Class__c = strategicDep.Id; asset2.Hospital__c = hospital.Id; asset2.Product2Id = pro2.Id; asset2.Quantity = 100; asset2.Status = '不明'; asset2.Manage_type__c = '数量管理'; asset2.Loaner_accsessary__c = true; asset2.Out_of_wh__c = 0; asset2.Salesdepartment__c = '1.华北营业本部'; asset2.Internal_asset_location__c = '北京 备品中心'; asset2.Product_category__c = 'GI'; asset2.Equipment_Type__c = '产品试用'; asset2.SalesProvince__c = '北京'; asset2.CompanyOfEquipment__c = '北京'; asset2.Internal_Asset_number__c = '0002'; insert new Asset[] {asset1, asset2}; // 备品一对一Link表 //Fixture_OneToOne_Link__c foLink1 = new Fixture_OneToOne_Link__c(); foLink1.Main_Asset__c = asset1.Id; foLink1.Accessory_Asset__c = asset2.Id; foLink1.Quantity__c = 1; foLink1.Select_Accessory_Asset_Cnt__c = 1; insert new Fixture_OneToOne_Link__c[] {foLink1}; // 备品配套 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; // 备品配套明细 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.UniqueKey__c = fsObj1.Id + ':' + pro1.Id; fsdObjA1.SortInt__c = 1; fsdObjA2.Name = '备品配套明细名2'; fsdObjA2.Name_CHN_Created__c = '中文名称2'; fsdObjA2.Product2__c = pro2.Id; fsdObjA2.Fixture_Set__c = fsObj1.Id; fsdObjA2.Is_Body__c = false; fsdObjA2.Is_Optional__c = true; fsdObjA2.UniqueKey__c = fsObj1.Id + ':' + pro2.Id; fsdObjA2.SortInt__c = 2; insert new Fixture_Set_Detail__c[] {fsdObjA1,fsdObjA2}; // 借出备品配套一览 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(); Rental_Apply_Equipment_Set_Detail__c raesdObj2 = new Rental_Apply_Equipment_Set_Detail__c(); System.runAs(new User(Id = Userinfo.getUserId())) { // 借出备品配套一览明细 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_OneToOneAccessory_Cnt__c = 1; raesdObj1.FSD_Is_Optional__c = false; raesdObj1.FSD_Is_OneToOne__c = true; raesdObj1.ApplyPersonAppended__c = false; raesdObj1.Fixture_OneToOne_Link_Id__c = foLink1.Id; 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 = '产品试用'; // 借出备品配套一览明细 raesdObj2.Rental_Apply__c = raObj.Id; raesdObj2.Fixture_Set_Detail__c = fsdObjA2.Id; raesdObj2.Rental_Num__c = 2; raesdObj2.Queue_Number__c = null; raesdObj2.Is_Body__c = false; raesdObj2.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj2.IndexFromUniqueKey__c = 2; raesdObj2.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA2.Id + ':2'; raesdObj2.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj2.FSD_Is_Optional__c = true; raesdObj2.FSD_Is_OneToOne__c = true; raesdObj2.ApplyPersonAppended__c = false; raesdObj2.Cancel_Select__c = false; raesdObj2.Fixture_OneToOne_Link_Id__c = foLink1.Id; raesdObj2.FSD_Fixture_Model_No__c = 'n04'; raesdObj2.Fixture_Model_No_text__c = 'n04'; raesdObj2.Salesdepartment_before__c = '1.华北营业本部'; raesdObj2.Internal_asset_location_before__c = '北京 备品中心'; raesdObj2.Product_category_text__c = 'GI'; raesdObj2.Equipment_Type_text__c = '产品试用'; insert new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1,raesdObj2}; } System.runAs(new User(Id = Userinfo.getUserId())) { // 申请单 raObj.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Pi_Zhun.ordinal()); raObj.Status_Text__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Pi_Zhun.ordinal()); raObj.NotWatch_RA_Status__c = true; update raObj; // 借出备品配套一览明细 raesdObj1.Select_Time__c = Date.toDay(); raesdObj1.Asset__c = asset1.Id; raesdObj1.Loaner_accsessary__c = false; raesdObj1.FSD_Name_CHN__c = 'name01'; raesdObj1.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); raesdObj2.Select_Time__c = Date.toDay(); raesdObj2.Asset__c = asset2.Id; raesdObj2.Loaner_accsessary__c = true; raesdObj2.FSD_Name_CHN__c = 'name02'; raesdObj2.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); update new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1,raesdObj2}; raesObj.First_RAESD__c = raesdObj2.Id; update raesObj; } return raObj.Id; } private static User getUser() { if (user1 != null) { return user1; } String timenow = Datetime.now().format('yyyyMMddHHmmss'); User hpOwner = new User(Test_staff__c = true, LastName = 'TestMao', FirstName = 'TestMaoF', Alias = 'hp', CommunityNickname = 'TestMao', Email = 'Test@sunbridge.com', Username = 'Test' + timenow + '@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = System.Label.ProfileId_SystemAdmin, Dept__c = '医疗华北营业本部', Province__c = '北京'); insert hpOwner; return hpOwner; } /* * Asset新規作成する際の暂定分配テスト * TODO 20210208 报101,需要修改 */ static void newAssetQueueRedistri() { system.runAs(getUser()){ Asset aa = setupTestData(); List raObjs = setupRAList; System.assertEquals(raObjs.size(), 2); Rental_Apply__c raObj = raObjs[0]; raObj.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Chu_Ku_Zhi_Shi.ordinal()); update raObj; // cancelAssetQueueRedistriTest() なとで assert 済み // List ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset]; // System.assertEquals(ass.size(), 1); // // List raesds = [Select Id From Rental_Apply_Equipment_Set_Detail__c]; // System.assertEquals(raesds.size(), 2); List raess = [Select Id From Rental_Apply_Equipment_Set__c Where Rental_Start_Date__c = toDay]; System.assertEquals(raess.size(), 1); PageReference page = new PageReference('/apex/MainFixtureSelect?pt_recid=' + raess[0].Id); System.Test.setCurrentPage(page); Test.startTest(); MainFixtureSelectController mh = new MainFixtureSelectController(); CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = mh; mh.myComponentController.init(); mh.bieCunFangDi = '北京 备品中心'; mh.bieBenBu = '1.华北营业本部'; mh.bieChanPinFenLei = 'GI'; mh.bieBeiPinFenLei = '产品试用'; mh.searchOpp(); mh.init(); System.assertEquals(mh.viewList.size(), 1); Rental_Apply_Equipment_Set_Detail__c robj = (Rental_Apply_Equipment_Set_Detail__c) mh.viewList[0].sobj; // cancelAssetQueueRedistriTest() なとで assert 済み // System.assertEquals(robj.Asset__c, ass[0].Id); mh.viewList[0].check = true; mh.save(); List ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset]; // cancelAssetQueueRedistriTest() なとで assert 済み // raesds = [Select Id, Asset__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess[0].Id]; // System.assertEquals(raesds.size(), 1); // System.assertNotEquals(raesds[0].Asset__c, null); // System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); // System.assertEquals(ass.size(), 1); // System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); Date d1 = Date.today().addDays(1); raess = [Select Id From Rental_Apply_Equipment_Set__c Where Rental_Start_Date__c = :d1]; System.assertEquals(raess.size(), 1); PageReference page1 = new PageReference('/apex/MainFixtureSelect?pt_recid=' + raess[0].Id); System.Test.setCurrentPage(page1); mh = new MainFixtureSelectController(); cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = mh; mh.myComponentController.init(); mh.bieCunFangDi = '北京 备品中心'; mh.bieBenBu = '1.华北营业本部'; mh.bieChanPinFenLei = 'GI'; mh.bieBeiPinFenLei = '产品试用'; mh.searchOpp(); mh.init(); Test.stopTest(); System.assertEquals(mh.viewList.size(), 1); robj = (Rental_Apply_Equipment_Set_Detail__c) mh.viewList[0].sobj; System.assertEquals(robj.Asset__c, ass[0].Id); mh.viewList[0].check = true; MainFixtureSelectController.queue(raess[0].Id, ass[0].Id); /** raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess[0].Id]; System.assertEquals(raesds.size(), 1); System.assertEquals(raesds[0].Queue_Day__c, Date.today()); System.assertEquals(raesds[0].Queue_Number__c, 1); **/ Asset aa2 = aa.clone(false); aa2.SerialNumber = 'ass02'; aa2.Name = 'ass02'; insert aa2; List raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess[0].Id]; System.assertEquals(raesds.size(), 1); System.assertEquals(raesds[0].Queue_Day__c, Date.today()); System.assertEquals(raesds[0].Queue_Number__c, 0); System.assertEquals(raesds[0].Asset__c, aa2.Id); ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset Where id =:aa2.Id]; System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); } } /* * 明細キャンセルの暂定分配テスト */ static testMethod void cancelAssetQueueRedistriTest() { system.runAs(getUser()){ Asset aa = setupTestData(); List raObjs = setupRAList; System.assertEquals(raObjs.size(), 2); Rental_Apply__c raObj = raObjs[0]; raObj.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Chu_Ku_Zhi_Shi.ordinal()); update raObj; List ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset]; System.assertEquals(ass.size(), 1); List raesds = [Select Id From Rental_Apply_Equipment_Set_Detail__c]; System.assertEquals(raesds.size(), 2); //Test.startTest(); List raess = [Select Id From Rental_Apply_Equipment_Set__c Where Rental_Start_Date__c = toDay]; Rental_Apply_Equipment_Set__c raess1 = raess[0]; System.assertEquals(raess.size(), 1); PageReference page = new PageReference('/apex/MainFixtureSelect?pt_recid=' + raess[0].Id); System.Test.setCurrentPage(page); Test.startTest(); MainFixtureSelectController mh = new MainFixtureSelectController(); CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = mh; mh.myComponentController.init(); mh.bieCunFangDi = '北京 备品中心'; mh.bieBenBu = '1.华北营业本部'; mh.bieChanPinFenLei = 'GI'; mh.bieBeiPinFenLei = '产品试用'; mh.searchOpp(); mh.init(); System.assertEquals(mh.viewList.size(), 1); Rental_Apply_Equipment_Set_Detail__c robj = (Rental_Apply_Equipment_Set_Detail__c) mh.viewList[0].sobj; System.assertEquals(robj.Asset__c, ass[0].Id); mh.viewList[0].check = true; mh.save(); ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset]; raesds = [Select Id, Asset__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess[0].Id]; System.assertEquals(raesds.size(), 1); System.assertNotEquals(raesds[0].Asset__c, null); System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); System.assertEquals(ass.size(), 1); System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); Date d1 = Date.today().addDays(1); raess = [Select Id From Rental_Apply_Equipment_Set__c Where Rental_Start_Date__c = :d1]; Rental_Apply_Equipment_Set__c raess2 = raess[0]; System.assertEquals(raess.size(), 1); PageReference page1 = new PageReference('/apex/MainFixtureSelect?pt_recid=' + raess[0].Id); System.Test.setCurrentPage(page1); mh = new MainFixtureSelectController(); cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = mh; mh.myComponentController.init(); mh.bieCunFangDi = '北京 备品中心'; mh.bieBenBu = '1.华北营业本部'; mh.bieChanPinFenLei = 'GI'; mh.bieBeiPinFenLei = '产品试用'; mh.searchOpp(); mh.init(); System.Test.stopTest(); System.assertEquals(mh.viewList.size(), 1); robj = (Rental_Apply_Equipment_Set_Detail__c) mh.viewList[0].sobj; System.assertEquals(robj.Asset__c, ass[0].Id); mh.viewList[0].check = true; MainFixtureSelectController.queue(raess[0].Id, ass[0].Id); /** raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess[0].Id]; System.assertEquals(raesds.size(), 1); System.assertEquals(raesds[0].Queue_Day__c, Date.today()); System.assertEquals(raesds[0].Queue_Number__c, 1); raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess1.Id]; raesds[0].Cancel_Select__c = true; raesds[0].Cancel_Reason__c = '主动取消'; update raesds; raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess2.Id]; System.assertEquals(raesds.size(), 1); System.assertEquals(raesds[0].Queue_Day__c, Date.today()); System.assertEquals(raesds[0].Queue_Number__c, 0); System.assertEquals(raesds[0].Asset__c, aa.Id); ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset Where id =:aa.Id]; System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); **/ } } /** * * @description 明細キャンセルの暂定分配テスト 排的是别的Asset * @example * Asset A * Asset B * RaesdAA 分配Asset A * RaesdBB 排队Asset B * RaesdAA取消分配后RaesdBB为暂定分配 * */ static testMethod void cancelAssetQueueRedistriTest2() { system.runAs(getUser()){ Asset aa = setupTestData(); // 产品 Product2 pro1 = new Product2(Name='name02',IsActive=true,Family='SP', Fixture_Model_No__c='n02',Serial_Lot_No__c='S/N tracing', Fixture_Model_No_T__c = 'n02', ProductCode_Ext__c='pc02',Manual_Entry__c=false); insert new Product2[] {pro1}; Asset a2 = aa.clone(false); System.assertEquals(null, a2.Id); a2.Product2Id = pro1.Id; a2.Salesdepartment__c = '4.华东营业本部'; a2.Internal_asset_location__c = '上海 备品中心'; a2.Product_category__c = 'SP'; a2.Equipment_Type__c = '产品试用'; a2.SalesProvince__c = '上海'; a2.SerialNumber = 'ass02'; a2.Name = 'ass02'; insert a2; List raObjs = [Select Id From Rental_Apply__c]; System.assertEquals(raObjs.size(), 2); Rental_Apply__c raObj = raObjs[0]; raObj.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Chu_Ku_Zhi_Shi.ordinal()); update raObj; List ass = [SELECT Id, Last_Reserve_RAES_Detail__c FROM Asset WHERE id = :a2.Id]; System.assertEquals(ass.size(), 1); List raesds = [Select Id From Rental_Apply_Equipment_Set_Detail__c]; System.assertEquals(raesds.size(), 2); //Test.startTest(); List raess = [Select Id From Rental_Apply_Equipment_Set__c Where Rental_Start_Date__c = toDay]; Rental_Apply_Equipment_Set__c raess1 = raess[0]; System.assertEquals(raess.size(), 1); PageReference page = new PageReference('/apex/MainFixtureSelect?pt_recid=' + raess1.Id); System.Test.setCurrentPage(page); MainFixtureSelectController mh = new MainFixtureSelectController(); CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = mh; mh.myComponentController.init(); mh.bieCunFangDi = '上海 备品中心'; mh.bieBenBu = '4.华东营业本部'; mh.bieChanPinFenLei = 'SP'; mh.bieBeiPinFenLei = '产品试用'; mh.keyword = 'n02'; mh.init(); Test.startTest(); mh.searchOpp(); System.assertEquals(mh.viewList.size(), 1); Rental_Apply_Equipment_Set_Detail__c robj = (Rental_Apply_Equipment_Set_Detail__c) mh.viewList[0].sobj; System.assertEquals(robj.Asset__c, ass[0].Id); mh.viewList[0].check = true; mh.save(); ass = [SELECT Id, Last_Reserve_RAES_Detail__c FROM Asset WHERE id = :a2.Id]; raesds = [Select Id, Asset__c, Fixture_Model_No_text__c FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply_Equipment_Set__c = :raess1.Id]; System.assertEquals(raesds.size(), 1); System.assertNotEquals(raesds[0].Asset__c, null); System.assertEquals('n02', raesds[0].Fixture_Model_No_text__c); System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); System.assertEquals(ass.size(), 1); Date d1 = Date.today().addDays(1); raess = [Select Id From Rental_Apply_Equipment_Set__c Where Rental_Start_Date__c = :d1]; Rental_Apply_Equipment_Set__c raess2 = raess[0]; System.assertEquals(raess.size(), 1); PageReference page1 = new PageReference('/apex/MainFixtureSelect?pt_recid=' + raess2.Id); System.Test.setCurrentPage(page1); mh = new MainFixtureSelectController(); cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = mh; mh.myComponentController.init(); mh.bieCunFangDi = '上海 备品中心'; mh.bieBenBu = '4.华东营业本部'; mh.bieChanPinFenLei = 'SP'; mh.bieBeiPinFenLei = '产品试用'; mh.keyword = 'n02'; mh.searchOpp(); mh.init(); Test.stopTest(); System.assertEquals(mh.viewList.size(), 1); robj = (Rental_Apply_Equipment_Set_Detail__c) mh.viewList[0].sobj; System.assertEquals(robj.Asset__c, ass[0].Id); mh.viewList[0].check = true; /** raesds = [SELECT Id, Asset__c, Queue_Day__c, Queue_Number__c, Fixture_Model_No_text__c FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply_Equipment_Set__c = :raess2.Id AND Is_Body__c = true]; System.assertEquals(raesds.size(), 1); System.assertEquals(raesds[0].Queue_Day__c, null); System.assertEquals(raesds[0].Queue_Number__c, null); Map mm = MainFixtureSelectController.queue(raess2.Id, a2.Id); raesds = [SELECT Id, Asset__c, Queue_Day__c, Queue_Number__c, Fixture_Model_No_text__c FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply_Equipment_Set__c = :raess2.Id AND Is_Body__c = true]; ass = [SELECT Id, Last_Reserve_RAES_Detail__c, Fixture_Model_No_F__c FROM Asset WHERE id = :a2.Id]; System.assertEquals('n02', ass[0].Fixture_Model_No_F__c); System.assertEquals(raesds.size(), 1); System.assertEquals(raesds[0].Queue_Day__c, Date.today()); System.assertEquals(raesds[0].Queue_Number__c, 1); System.assertEquals('n02', raesds[0].Fixture_Model_No_text__c); raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess1.Id]; raesds[0].Cancel_Select__c = true; raesds[0].Cancel_Reason__c = '主动取消'; update raesds; raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess2.Id]; System.assertEquals(raesds.size(), 1); System.assertEquals(raesds[0].Queue_Day__c, Date.today()); System.assertEquals(raesds[0].Queue_Number__c, 0); System.assertEquals(raesds[0].Asset__c, a2.Id); ass = [SELECT Id, Last_Reserve_RAES_Detail__c FROM Asset WHERE id =:a2.Id]; System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); **/ } } /** * * @description mainAssetUpdateed_OneToOneRecord测试Case * */ static testMethod void TestmainAssetUpdateed_OneToOneRecord() { system.runAs(getUser()){ Id raId = setupTestData2(); System.Test.startTest(); List otoList = [SELECT Id , In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun_F__c , In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun__c FROM Fixture_OneToOne_Link__c]; // for (Fixture_OneToOne_Link__c oto : otoList) { // System.assertEquals(oto.In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun__c, oto.In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun_F__c); // } update otoList; List raesdList = [SELECT Id , Manage_type_F__c , Asset__r.Last_Reserve_RAES_Detail__c , Asset__r.SerialNumber FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c = :raId]; for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdList) { raesd.Cancel_Select__c = true; raesd.Cancel_Mem__c = UserInfo.getUserId(); raesd.Cancel_Date__c = Date.today(); raesd.Cancel_Time__c = MainFixtureSelectController.getCurrentTime(); raesd.Cancel_Reason__c = '主动取消'; raesd.Loaner_cancel_Remarks__c = 'TestClass'; if (raesd.Asset__r.SerialNumber == 'asset2') { System.assertEquals('数量管理', raesd.Manage_type_F__c); System.assertEquals(null, raesd.Asset__r.Last_Reserve_RAES_Detail__c); } else { System.assertEquals('个体管理', raesd.Manage_type_F__c); System.assertNOTEquals(null, raesd.Asset__r.Last_Reserve_RAES_Detail__c); } } update raesdList; otoList = [SELECT Id , In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun_F__c , In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun__c FROM Fixture_OneToOne_Link__c]; System.assertEquals(1, otoList.size()); for (Fixture_OneToOne_Link__c oto : otoList) { System.assertEquals(oto.In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun__c, oto.In_wh_Fu_Shu_Pin_You_Xiao_Ku_Cun_F__c); } System.Test.stopTest(); } } /** * * @description 暂定分配是Asset修理暂定分配取消 * @example * Asset A * RaesdAA 暂定分配Asset A * RaesdBB排队 Asset A * AssetA 修理 * RaesdAA取消分配 * RaesdBB为排队中 * * 注释掉理由: * 明细暂定分配的时候创建修理的话会报以下错误 * 借出_分配_数 不能大于 设备的总数 ------> Asset 入力规则 You_Xiao_Ku_Cun_chk * 暂定分配-1 * 修理-1 * 数量1 * 1-1-1 = -1 * * 如果暂定分配想修理的话分配暂定分配的那一条明细 * 然后再出出库前检测的时候选择NG修理 * */ // static testMethod void cancelAssetQueueRedistriTest3() { // system.runAs(getUser()){ // Asset aa = setupTestData(); // List raObjs = [Select Id From Rental_Apply__c]; // System.assertEquals(raObjs.size(), 2); // Rental_Apply__c raObj = raObjs[0]; // raObj.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Chu_Ku_Zhi_Shi.ordinal()); // update raObj; // List ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset]; // System.assertEquals(ass.size(), 1); // List raesds = [Select Id From Rental_Apply_Equipment_Set_Detail__c]; // System.assertEquals(raesds.size(), 2); // Test.startTest(); // List raess = [SELECT Id // FROM Rental_Apply_Equipment_Set__c // WHERE Rental_Start_Date__c = toDay]; // Rental_Apply_Equipment_Set__c raess1 = raess[0]; // raesds = [SELECT Id, Asset__c FROM Rental_Apply_Equipment_Set_Detail__c // WHERE Rental_Apply_Equipment_Set__c = :raess1.Id]; // System.assertEquals(raesds.size(), 1); // raesds[0].Asset__c = ass[0].Id; // raesds[0].Queue_Number__c = 0; // raesds[0].Queue_Day__c = Date.today(); // update raesds[0]; // raesds = [SELECT Id, Asset__c, RAESD_Status__c // FROM Rental_Apply_Equipment_Set_Detail__c // WHERE Rental_Apply_Equipment_Set__c = :raess1.Id]; // System.assertEquals(raesds.size(), 1); // System.assertEquals(FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Zan_Ding_Fen_Pei.ordinal()) ,raesds[0].RAESD_Status__c); // List aset = [select Id from Asset where Loaner_accsessary__c = false]; // System.assertEquals(aset.size(), 1); // List hospitals = [SELECT Id // FROM Account // WHERE Name = 'test hospital']; // System.assertEquals(1, hospitals.size()); // // 戦略科室を得る // Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospitals[0].Id AND recordType.DeveloperName = 'Department_Class_OTH']; // List deps = [SELECT Id // FROM Account // WHERE AgentCode_Ext__c = '9999998']; // System.assertEquals(1, deps.size()); // // 修理を作成する // Repair__c repair = new Repair__c(); // repair.Account__c = deps[0].Id; // repair.Department_Class__c = strategicDep[0].Id; // repair.Hospital__c = hospitals[0].Id; // repair.Delivered_Product__c = aset[0].Id; // insert repair; // Date d1 = Date.today().addDays(1); // raess = [Select Id From Rental_Apply_Equipment_Set__c Where Rental_Start_Date__c = :d1]; // Rental_Apply_Equipment_Set__c raess2 = raess[0]; // System.assertEquals(raess.size(), 1); // PageReference page1 = new PageReference('/apex/MainFixtureSelect?pt_recid=' + raess[0].Id); // System.Test.setCurrentPage(page1); // MainFixtureSelectController mh = new MainFixtureSelectController(); // CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); // cmp.pageController = mh; // mh.myComponentController.init(); // mh.bieCunFangDi = '北京 备品中心'; // mh.bieBenBu = '1.华北营业本部'; // mh.bieChanPinFenLei = 'GI'; // mh.bieBeiPinFenLei = '动物试验用'; // mh.searchOpp(); // mh.init(); // System.assertEquals(mh.viewList.size(), 1); // Rental_Apply_Equipment_Set_Detail__c robj = (Rental_Apply_Equipment_Set_Detail__c) mh.viewList[0].sobj; // System.assertEquals(robj.Asset__c, ass[0].Id); // mh.viewList[0].check = true; // MainFixtureSelectController.queue(raess[0].Id, ass[0].Id); // raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess[0].Id]; // System.assertEquals(raesds.size(), 1); // System.assertEquals(raesds[0].Queue_Day__c, Date.today()); // System.assertEquals(raesds[0].Queue_Number__c, 1); // raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess1.Id]; // raesds[0].Cancel_Select__c = true; // raesds[0].Cancel_Reason__c = '主动取消'; // update raesds; // raesds = [Select Id, Asset__c, Queue_Day__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Rental_Apply_Equipment_Set__c = :raess2.Id]; // System.assertEquals(1, raesds.size()); // System.assertEquals(Date.today(), raesds[0].Queue_Day__c); // System.assertEquals(1, raesds[0].Queue_Number__c); // System.assertEquals(null, raesds[0].Asset__c); // ass = [Select Id, Last_Reserve_RAES_Detail__c From Asset Where id =:aa.Id]; // System.assertEquals(null, ass[0].Last_Reserve_RAES_Detail__c); // } // } /** * Insert Asset 找不到 Account * 做 Account, 做 Group, 设定 AccountShare */ // @isTest // static void beforeSetAccountId_InsertAsset_FeatureInsertAcc() { // // 做数据 // // setupAccount(dataAccShareNameList); // // Olympus社内 // // List olympusAccount = [SELECT Id,name // // FROM Account // // WHERE Name LIKE 'Olympus社内%' // // ORDER BY Name]; // // 省 // 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; // // 病院を作る // ControllerUtil.EscapeNFM001Trigger = true; // StaticParameter.EscapeNFM001Trigger = true; // StaticParameter.EscapeAccountTrigger = true; // StaticParameter.EscapeNFM001AgencyContractTrigger = true; // Account hospital = new Account(); // hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; // System.debug('病院完了!'); // 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 = '东京'; // insert hospital; // System.debug('病院 insert 完了!'); // // 戦略科室を得る // Account strategicDep = new Account(); // strategicDep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_Class_OTH'].id; // strategicDep.Name = 'Olympus社内 其他'; // strategicDep.Department_Class_Label__c = '其他'; // strategicDep.Hospital__c = hospital.Id; // strategicDep.ParentId = hospital.Id; // insert strategicDep; // // 診療科を作る // 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.Id; // dep.Department_Class__c = strategicDep.Id; // dep.Hospital__c = hospital.Id; // insert dep; // System.debug('診療科 insert 完了!'); // AssetHandler.testTargetDepts = new Set {'1.华北Test', '4.华东Test'}; // List insertAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; // // 产品 // Product2 pro5 = new Product2(Name='name05',IsActive=true,Family='SP', // Fixture_Model_No__c='n05',Serial_Lot_No__c='S/N tracing', // Fixture_Model_No_T__c = 'n05', // ProductCode_Ext__c='pc05',Manual_Entry__c=false); // insert pro5; // Asset assetC1 = new Asset(Asset_Owner__c = 'Olympus'); // assetC1.RecordTypeId = System.Label.Asset_RecordType; // assetC1.AssetManageConfirm__c = true; // assetC1.SerialNumber = 'assetC1'; // assetC1.Name = 'assetC1'; // assetC1.Hospital__c = hospital.Id; // assetC1.Department_Class__c = strategicDep.Id; // assetC1.AccountId = dep.Id; // assetC1.Product2Id = pro5.Id; // assetC1.Quantity = 1; // assetC1.Status = '有库存'; // assetC1.Manage_type__c = '个体管理'; // assetC1.Internal_asset_location__c = '北京'; // assetC1.Salesdepartment__c = '1.华北Test'; // assetC1.Loaner_accsessary__c = true; // assetC1.Delete_Flag__c = false; // assetC1.Freeze_sign__c = false; // assetC1.Out_of_wh__c = 0; // Asset assetC2 = new Asset(Asset_Owner__c = 'Olympus'); // assetC2.RecordTypeId = System.Label.Asset_RecordType; // assetC2.AssetManageConfirm__c = true; // assetC2.SerialNumber = 'assetC2'; // assetC2.Name = 'assetC2'; // assetC2.Hospital__c = hospital.Id; // assetC2.Department_Class__c = strategicDep.Id; // assetC2.AccountId = dep.Id; // assetC2.Product2Id = pro5.Id; // assetC2.Quantity = 1; // assetC2.Status = '有库存'; // assetC2.Manage_type__c = '个体管理'; // assetC2.Internal_asset_location__c = '上海'; // assetC2.Salesdepartment__c = '4.华东Test'; // assetC2.Loaner_accsessary__c = true; // assetC2.Delete_Flag__c = false; // assetC2.Freeze_sign__c = false; // assetC2.Out_of_wh__c = 0; // Test.startTest(); // // System.assertEquals('0011000000ezjp5AAA', olympusAccount[2].Id); // // System.assertEquals('Olympus社内 其他 系统管理用', olympusAccount[2].Name); // insert new List {assetC1, assetC2}; // Test.stopTest(); // List astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; // System.assertEquals(2, astList.size()); // System.assertEquals('备品共享_北京_华北Test', astList[0].OlympusAccShareName__c); // System.assertEquals('备品共享_北京_华北Test', astList[0].Account.Department_Name__c); // System.assertEquals('备品共享_上海_华东Test', astList[1].OlympusAccShareName__c); // System.assertEquals('备品共享_上海_华东Test', astList[1].Account.Department_Name__c); // Map insertAccount = new Map(); // for (Account acc : [SELECT Id, Department_Name__c FROM Account WHERE Department_Name__c IN: insertAccShareNameList]) { // insertAccount.put(acc.Department_Name__c, acc); // } // System.assertEquals(2, insertAccount.size()); // astList = [SELECT Id, AccountId FROM Asset WHERE Account.Department_Name__c IN: insertAccShareNameList]; // System.assertEquals(2, astList.size()); // Map insertGroup = new Map(); // for (Group grp : [SELECT Id, Name FROM Group WHERE Type = 'Regular' AND Name IN: insertAccShareNameList]) { // insertGroup.put(grp.Name, grp); // } // System.assertEquals(2, insertGroup.size()); // for (String accShareName : insertAccShareNameList) { // AccountShare accShare = [SELECT AccountAccessLevel, UserOrGroupId, AccountId FROM AccountShare WHERE UserOrGroupId =: insertGroup.get(accShareName).Id AND AccountId =: insertAccount.get(accShareName).Id]; // System.assertEquals('Edit', accShare.AccountAccessLevel); // } // } /** * 做数据 * Insert Asset 找到 Account * 只设定 AccountId "Olympus社内 其他 备品" => "Olympus社内 其他 备品共享_XXX" */ static List beforeSetAccountId_InsertAsset_date(List insertAccShareNameList) { setupAccount(insertAccShareNameList); Map insertAccount = new Map(); for (Account acc : [SELECT Id, Department_Name__c FROM Account WHERE Department_Name__c IN: insertAccShareNameList]) { insertAccount.put(acc.Department_Name__c, acc); } System.assertEquals(insertAccShareNameList.size(), insertAccount.size()); // Olympus社内 List olympusAccount = [SELECT Id FROM Account WHERE Name LIKE 'Olympus社内%' ORDER BY Name]; // 产品 Product2 pro5 = new Product2(Name='name05',IsActive=true,Family='SP', Fixture_Model_No__c='n05',Serial_Lot_No__c='S/N tracing', Fixture_Model_No_T__c = 'n05', ProductCode_Ext__c='pc05',Manual_Entry__c=false); insert pro5; pro5 = [SELECT Id, ProductCode_Ext__c FROM Product2 WHERE Fixture_Model_No__c = 'n05']; Asset assetC1 = new Asset(Asset_Owner__c = 'Olympus'); assetC1.RecordTypeId = System.Label.Asset_RecordType; assetC1.AssetManageConfirm__c = true; assetC1.SerialNumber = 'assetC1'; assetC1.Name = 'assetC1'; assetC1.Hospital__c = olympusAccount[0].Id; assetC1.Department_Class__c = olympusAccount[1].Id; assetC1.AccountId = olympusAccount[2].Id; // Olympus社内 其他 备品 assetC1.Product2Id = pro5.Id; assetC1.Quantity = 1; assetC1.Status = '有库存'; assetC1.Manage_type__c = '个体管理'; assetC1.Internal_asset_location__c = '北京'; assetC1.Salesdepartment__c = '1.华北Test'; assetC1.Loaner_accsessary__c = true; assetC1.Delete_Flag__c = false; assetC1.Freeze_sign__c = false; assetC1.Out_of_wh__c = 0; Asset assetC2 = new Asset(Asset_Owner__c = 'Olympus'); assetC2.RecordTypeId = System.Label.Asset_RecordType; assetC2.AssetManageConfirm__c = true; assetC2.SerialNumber = 'assetC2'; assetC2.Name = 'assetC2'; assetC2.Hospital__c = olympusAccount[0].Id; assetC2.Department_Class__c = olympusAccount[1].Id; assetC2.AccountId = olympusAccount[2].Id; // Olympus社内 其他 备品 assetC2.Product2Id = pro5.Id; assetC2.Quantity = 1; assetC2.Status = '有库存'; assetC2.Manage_type__c = '个体管理'; assetC2.Internal_asset_location__c = '上海'; assetC2.Salesdepartment__c = '4.华东Test'; assetC2.Loaner_accsessary__c = true; assetC2.Delete_Flag__c = false; assetC2.Freeze_sign__c = false; assetC2.Out_of_wh__c = 0; return new List {assetC1, assetC2}; } /** * Insert Asset 找到 Account * 只设定 AccountId "Olympus社内 其他 备品" => "Olympus社内 其他 备品共享_XXX" */ @isTest static void beforeSetAccountId_InsertAsset() { // 做数据 List insertAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; List insAssetList = beforeSetAccountId_InsertAsset_date(insertAccShareNameList); Test.startTest(); AssetHandler.testTargetDepts = new Set {'1.华北Test', '4.华东Test'}; insert insAssetList; Test.stopTest(); List astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals('备品共享_北京_华北Test', astList[0].OlympusAccShareName__c); System.assertEquals('备品共享_北京_华北Test', astList[0].Account.Department_Name__c); System.assertEquals('备品共享_上海_华东Test', astList[1].OlympusAccShareName__c); System.assertEquals('备品共享_上海_华东Test', astList[1].Account.Department_Name__c); } /** * Insert Asset 找到 Account * 只设定 AccountId "Olympus社内 其他 备品" */ @isTest static void beforeSetAccountId_InsertAsset0() { // 做数据 testTargetDepts を指定しない "备品" に // List insertAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; List insAssetList = beforeSetAccountId_InsertAsset_date(new List()); Test.startTest(); insert insAssetList; Test.stopTest(); List astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals(null, astList[0].OlympusAccShareName__c); System.assertEquals('备品', astList[0].Account.Department_Name__c); System.assertEquals(null, astList[1].OlympusAccShareName__c); System.assertEquals('备品', astList[1].Account.Department_Name__c); } /** * Update Asset 找不到 Account * 做 Account, 做 Group, 设定 AccountShare */ @isTest static void beforeSetAccountId_UpdateAsset_FeatureInsertAcc() { // 做数据 List dataAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; List insAssetList = beforeSetAccountId_InsertAsset_date(dataAccShareNameList); AssetHandler.testTargetDepts = new Set {'1.华北Test', '4.华东Test'}; insert insAssetList; // Olympus社内 List olympusAccount = [SELECT Id FROM Account WHERE Name LIKE 'Olympus社内%' ORDER BY Name]; AssetHandler.testTargetDepts = new Set {'2.东北Test', '3.西北Test'}; List insertAccShareNameList = new List {'备品共享_黑龙江_东北Test', '备品共享_宁夏_西北Test'}; // 产品 Product2 pro5 = [SELECT Id, ProductCode_Ext__c FROM Product2 WHERE Fixture_Model_No__c = 'n05']; Asset assetC1 = [SELECT Id FROM Asset WHERE SerialNumber='assetC1']; assetC1.Internal_asset_location__c = '哈尔滨'; assetC1.Salesdepartment__c = '2.东北Test'; Asset assetC2 = [SELECT Id FROM Asset WHERE SerialNumber='assetC2']; assetC2.Internal_asset_location__c = '银川'; assetC2.Salesdepartment__c = '3.西北Test'; Test.startTest(); update new List {assetC1, assetC2}; Test.stopTest(); List astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals('备品共享_黑龙江_东北Test', astList[0].OlympusAccShareName__c); System.assertEquals('备品共享_黑龙江_东北Test', astList[0].Account.Department_Name__c); System.assertEquals('备品共享_宁夏_西北Test', astList[1].OlympusAccShareName__c); System.assertEquals('备品共享_宁夏_西北Test', astList[1].Account.Department_Name__c); Map insertAccount = new Map(); for (Account acc : [SELECT Id, Department_Name__c FROM Account WHERE Department_Name__c IN: insertAccShareNameList]) { insertAccount.put(acc.Department_Name__c, acc); } System.assertEquals(2, insertAccount.size()); astList = [SELECT Id, AccountId FROM Asset WHERE Account.Department_Name__c IN: insertAccShareNameList]; System.assertEquals(2, astList.size()); Map insertGroup = new Map(); for (Group grp : [SELECT Id, Name FROM Group WHERE Type = 'Regular' AND Name IN: insertAccShareNameList]) { insertGroup.put(grp.Name, grp); } System.assertEquals(2, insertGroup.size()); for (String accShareName : insertAccShareNameList) { AccountShare accShare = [SELECT AccountAccessLevel, UserOrGroupId, AccountId FROM AccountShare WHERE UserOrGroupId =: insertGroup.get(accShareName).Id AND AccountId =: insertAccount.get(accShareName).Id]; System.assertEquals('Edit', accShare.AccountAccessLevel); } } /** * Update Asset 找到 Account */ @isTest static void beforeSetAccountId_UpdateAsset() { // 做数据 List dataAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; List insAssetList = beforeSetAccountId_InsertAsset_date(dataAccShareNameList); AssetHandler.testTargetDepts = new Set {'1.华北Test', '4.华东Test'}; insert insAssetList; // 做数据 的 assert List astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals('备品共享_北京_华北Test', astList[0].OlympusAccShareName__c); System.assertEquals('备品共享_北京_华北Test', astList[0].Account.Department_Name__c); System.assertEquals('备品共享_上海_华东Test', astList[1].OlympusAccShareName__c); System.assertEquals('备品共享_上海_华东Test', astList[1].Account.Department_Name__c); // Olympus社内 List olympusAccount = [SELECT Id FROM Account WHERE Name LIKE 'Olympus社内%' ORDER BY Name]; // 产品 Product2 pro5 = [SELECT Id, ProductCode_Ext__c FROM Product2 WHERE Fixture_Model_No__c = 'n05']; Asset assetC1 = [SELECT Id FROM Asset WHERE SerialNumber='assetC1']; assetC1.Internal_asset_location__c = '上海'; assetC1.Salesdepartment__c = '4.华东Test'; Asset assetC2 = [SELECT Id FROM Asset WHERE SerialNumber='assetC2']; assetC2.Internal_asset_location__c = '北京'; assetC2.Salesdepartment__c = '1.华北Test'; Test.startTest(); update new List {assetC1, assetC2}; Test.stopTest(); astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals('备品共享_上海_华东Test', astList[0].OlympusAccShareName__c); System.assertEquals('备品共享_上海_华东Test', astList[0].Account.Department_Name__c); System.assertEquals('备品共享_北京_华北Test', astList[1].OlympusAccShareName__c); System.assertEquals('备品共享_北京_华北Test', astList[1].Account.Department_Name__c); } /** * Update Asset 到 '0.备品中心' */ @isTest static void beforeSetAccountId_UpdateAssetTo0() { // 做数据 List dataAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; List insAssetList = beforeSetAccountId_InsertAsset_date(dataAccShareNameList); AssetHandler.testTargetDepts = new Set {'1.华北Test', '4.华东Test'}; insert insAssetList; // 做数据 的 assert List astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals('备品共享_北京_华北Test', astList[0].OlympusAccShareName__c); System.assertEquals('备品共享_北京_华北Test', astList[0].Account.Department_Name__c); System.assertEquals('备品共享_上海_华东Test', astList[1].OlympusAccShareName__c); System.assertEquals('备品共享_上海_华东Test', astList[1].Account.Department_Name__c); // Olympus社内 List olympusAccount = [SELECT Id FROM Account WHERE Name LIKE 'Olympus社内%' ORDER BY Name]; // 产品 Product2 pro5 = [SELECT Id, ProductCode_Ext__c FROM Product2 WHERE Fixture_Model_No__c = 'n05']; Asset assetC1 = [SELECT Id FROM Asset WHERE SerialNumber='assetC1']; assetC1.Internal_asset_location__c = '上海'; assetC1.Salesdepartment__c = '0.备品中心'; Asset assetC2 = [SELECT Id FROM Asset WHERE SerialNumber='assetC2']; assetC2.Internal_asset_location__c = '北京'; assetC2.Salesdepartment__c = '0.备品中心'; Test.startTest(); update new List {assetC1, assetC2}; Test.stopTest(); astList = [SELECT Id, Salesdepartment__c, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals('0.备品中心', astList[0].Salesdepartment__c); System.assert(String.isBlank(astList[0].OlympusAccShareName__c), 'OlympusAccShareName__c Expected isBlank, Actual:' + astList[0].OlympusAccShareName__c); System.assertEquals('备品', astList[0].Account.Department_Name__c); System.assertEquals('0.备品中心', astList[1].Salesdepartment__c); System.assert(String.isBlank(astList[1].OlympusAccShareName__c), 'OlympusAccShareName__c Expected isBlank, Actual:' + astList[1].OlympusAccShareName__c); System.assertEquals('备品', astList[1].Account.Department_Name__c); } /** * Clone Asset 到 '备品' 中心共享 */ @isTest static void beforeSetAccountId_CloneAssetTo0() { // 做数据 List dataAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; List insAssetList = beforeSetAccountId_InsertAsset_date(dataAccShareNameList); AssetHandler.testTargetDepts = new Set {'1.华北Test', '4.华东Test'}; insert insAssetList; // 做数据 的 assert List astList = [SELECT Id, AccountId, OlympusAccShareName__c, Account.Department_Name__c FROM Asset ORDER BY SerialNumber]; System.assertEquals(2, astList.size()); System.assertEquals('备品共享_北京_华北Test', astList[0].OlympusAccShareName__c); System.assertEquals('备品共享_北京_华北Test', astList[0].Account.Department_Name__c); System.assertEquals('备品共享_上海_华东Test', astList[1].OlympusAccShareName__c); System.assertEquals('备品共享_上海_华东Test', astList[1].Account.Department_Name__c); // Olympus社内 List olympusAccount = [SELECT Id FROM Account WHERE Name LIKE 'Olympus社内%' ORDER BY Name]; // 产品 Product2 pro5 = [SELECT Id, ProductCode_Ext__c FROM Product2 WHERE Fixture_Model_No__c = 'n05']; Asset assetC1 = [SELECT Id, RecordTypeId , Name , AccountId , Quantity , Status , Manage_type__c , Abandoned_Inventory__c , Abandoned_RealThing__c , CountForRepair__c , Confirm_Lost_Count__c , Consumable_Guaranteen_end__c , Fixture_Model_No_F__c , SerialNumber , Asset_loaner_category__c , Product2Id , unknow_serial_NO_product__c , Product_Serial_No__c , AssetMark__c , Internal_asset_location__c , Salesdepartment__c , SalesProvince__c , Equipment_Type__c , EquipmentSet_Managment_Code__c , WH_location__c , TransferFrozenQuantity__c , TransferFrozenAbandon__c , TransferFrozenRepair__c , TransferFrozenLost__c FROM Asset WHERE SerialNumber='assetC1']; assetC1 = assetC1.clone(false); assetC1.Internal_asset_location__c = '上海'; assetC1.Salesdepartment__c = '0.备品中心'; assetC1.unknow_serial_NO_product__c = true; assetC1.SerialNumber = 'assetC1_c'; assetC1.Product_Serial_No__c = 'assetC1_c'; assetC1.Loaner_accsessary__c = true; assetC1.AssetManageConfirm__c = true; assetC1.Abandoned_RealThing__c = 0; assetC1.Abandoned_Inventory__c = 0; assetC1.Frozen_Quantity__c = 0; assetC1.Out_of_wh__c = 0; assetC1.Rental_Count__c = 0; assetC1.MaintainCount_For_Processing__c = 0; assetC1.CountForRepair__c = 0; assetC1.Consumed_Count__c = 0; assetC1.TransferFrozenQuantity__c = 0; assetC1.TransferFrozenAbandon__c = 0; assetC1.TransferFrozenLost__c = 0; assetC1.TransferFrozenRepair__c = 0; assetC1.Confirm_Lost_Count__c = 0; assetC1.Inventory_Frozen_Quantity__c = 0; assetC1.Appended_Inventory_Frozen_Quantity__c = 0; assetC1.Inventory_Profit_Quantity__c = 0; assetC1.Appended_Inventory_Profit_Quantity__c = 0; Asset assetC2 = [SELECT Id, RecordTypeId , Name , AccountId , Quantity , Status , Manage_type__c , Abandoned_Inventory__c , Abandoned_RealThing__c , CountForRepair__c , Confirm_Lost_Count__c , Consumable_Guaranteen_end__c , Fixture_Model_No_F__c , SerialNumber , Asset_loaner_category__c , Product2Id , unknow_serial_NO_product__c , Product_Serial_No__c , AssetMark__c , Internal_asset_location__c , Salesdepartment__c , SalesProvince__c , Equipment_Type__c , EquipmentSet_Managment_Code__c , WH_location__c , TransferFrozenQuantity__c , TransferFrozenAbandon__c , TransferFrozenRepair__c , TransferFrozenLost__c FROM Asset WHERE SerialNumber='assetC2']; assetC2 = assetC2.clone(false); assetC2.Internal_asset_location__c = '北京'; assetC2.Salesdepartment__c = '0.备品中心'; assetC2.unknow_serial_NO_product__c = true; assetC2.SerialNumber = null; assetC2.Product_Serial_No__c = null; // workflow会重新赋值 assetC2.Loaner_accsessary__c = true; assetC2.AssetManageConfirm__c = true; assetC2.Abandoned_RealThing__c = 0; assetC2.Abandoned_Inventory__c = 0; assetC2.Frozen_Quantity__c = 0; assetC2.Out_of_wh__c = 0; assetC2.Rental_Count__c = 0; assetC2.MaintainCount_For_Processing__c = 0; assetC2.CountForRepair__c = 0; assetC2.Consumed_Count__c = 0; assetC2.TransferFrozenQuantity__c = 0; assetC2.TransferFrozenAbandon__c = 0; assetC2.TransferFrozenLost__c = 0; assetC2.TransferFrozenRepair__c = 0; assetC2.Confirm_Lost_Count__c = 0; assetC2.Inventory_Frozen_Quantity__c = 0; assetC2.Appended_Inventory_Frozen_Quantity__c = 0; assetC2.Inventory_Profit_Quantity__c = 0; assetC2.Appended_Inventory_Profit_Quantity__c = 0; Test.startTest(); insert new List {assetC1, assetC2}; Test.stopTest(); astList = [SELECT Id, Salesdepartment__c, OlympusAccShareName__c, Account.Department_Name__c FROM Asset WHERE SerialNumber != 'assetC1' AND SerialNumber != 'assetC2' ORDER BY SerialNumber]; System.assertEquals(2, astList.size(), astList); System.assertEquals('0.备品中心', astList[0].Salesdepartment__c); System.assert(String.isBlank(astList[0].OlympusAccShareName__c), 'OlympusAccShareName__c Expected isBlank, Actual:' + astList[0].OlympusAccShareName__c); System.assertEquals('备品', astList[0].Account.Department_Name__c); System.assertEquals('0.备品中心', astList[1].Salesdepartment__c); System.assert(String.isBlank(astList[1].OlympusAccShareName__c), 'OlympusAccShareName__c Expected isBlank, Actual:' + astList[1].OlympusAccShareName__c); System.assertEquals('备品', astList[1].Account.Department_Name__c); } @isTest static void futureInsertAccShare() { // 做数据 setupAccount(new List {}); Test.startTest(); Datetime execNow = System.now(); List insertAccShareNameList = new List {'备品共享_北京_华北Test', '备品共享_上海_华东Test'}; System.enqueueJob(new AssetHandler.MyQueueableClass(JSON.serialize(insertAccShareNameList), execNow)); Test.stopTest(); Map insertAccount = new Map(); for (Account acc : [SELECT Id, Department_Name__c FROM Account WHERE Department_Name__c IN: insertAccShareNameList]) { insertAccount.put(acc.Department_Name__c, acc); } System.assertEquals(2, insertAccount.size()); Map insertGroup = new Map(); for (Group grp : [SELECT Id, Name FROM Group WHERE Type = 'Regular' AND Name IN: insertAccShareNameList]) { insertGroup.put(grp.Name, grp); } System.assertEquals(2, insertGroup.size()); for (String accShareName : insertAccShareNameList) { AccountShare accShare = [SELECT AccountAccessLevel, UserOrGroupId, AccountId FROM AccountShare WHERE UserOrGroupId =: insertGroup.get(accShareName).Id AND AccountId =: insertAccount.get(accShareName).Id]; System.assertEquals('Edit', accShare.AccountAccessLevel); } } // Olympus社内 的 数据 private static void setupAccount(List othList) { ControllerUtil.EscapeNFM001Trigger = true; StaticParameter.EscapeNFM001Trigger = true; StaticParameter.EscapeAccountTrigger = true; StaticParameter.EscapeNFM001AgencyContractTrigger = true; System.runAs(new User(Id = Userinfo.getUserId())) { // 省 Address_Level__c al1 = new Address_Level__c(); al1.Name = '東京'; al1.Level1_Code__c = 'CN-99'; al1.Level1_Sys_No__c = '999999'; insert al1; // 市 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 = al1.id; insert al2; // Olympus社内 9999999 Account hospital = new Account(); hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; hospital.Name = 'Olympus社内'; hospital.AgentCode_Ext__c = System.Label.Account_Asset_Hospatal; hospital.Is_Active__c = '有効'; hospital.Attribute_Type__c = '其他'; hospital.Speciality_Type__c = 'その他'; hospital.Grade__c = '一般'; hospital.OCM_Category__c = 'L'; hospital.Is_Medical__c = '非医疗机构'; hospital.State_Master__c = al1.id; hospital.City_Master__c = al2.id; hospital.Town__c = '东京'; insert hospital; // 戦略科室を得る Account strategicDep = new Account(); strategicDep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_Class_OTH'].id; strategicDep.Name = 'Olympus社内 其他'; strategicDep.Department_Class_Label__c = '其他'; strategicDep.Hospital__c = hospital.Id; strategicDep.ParentId = hospital.Id; insert strategicDep; // 备品中心:9999998 List departmentList = new List(); Account accountDep = new Account(); accountDep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id; accountDep.Name = 'Olympus社内 其他 备品'; accountDep.AgentCode_Ext__c = System.Label.Account_Asset; accountDep.ParentId = strategicDep.Id; accountDep.Department_Class__c = strategicDep.Id; accountDep.Department_Name__c = '备品'; accountDep.Hospital__c = hospital.Id; departmentList.add(accountDep); for (String dptName : othList) { Account accountOth = new Account( recordtypeId = accountDep.recordtypeId, Name = 'Olympus社内 其他 ' + dptName, ParentId = strategicDep.Id, Department_Class__c = strategicDep.Id, Department_Name__c = dptName, Hospital__c = hospital.Id ); departmentList.add(accountOth); } insert departmentList; } } }