高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/AssetHandlerTest.cls
@@ -1014,96 +1014,163 @@
     * Insert Asset 找不到 Account
     * 做 Account, 做 Group, 设定 AccountShare
     */
    @isTest
    static void beforeSetAccountId_InsertAsset_FeatureInsertAcc() {
        // 做数据
        setupAccount(new List<String> {});
    // @isTest
    // static void beforeSetAccountId_InsertAsset_FeatureInsertAcc() {
    //     // 做数据
    //     // setupAccount(dataAccShareNameList);
        //  Olympus社内
        List<Account> olympusAccount = [SELECT Id
                 FROM Account
                WHERE Name LIKE 'Olympus社内%'
                ORDER BY Name];
    //     //  Olympus社内
    //     // List<Account> olympusAccount = [SELECT Id,name
    //     //          FROM Account
    //     //         WHERE Name LIKE 'Olympus社内%'
    //     //         ORDER BY Name];
        AssetHandler.testTargetDepts = new Set<String> {'1.华北Test', '4.华东Test'};
        List<String> insertAccShareNameList = new List<String> {'备品共享_北京_华北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;
    //     // 省
    //     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;
        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;
        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;
    //     // 病院を作る
    //     ControllerUtil.EscapeNFM001Trigger = true;
    //     StaticParameter.EscapeNFM001Trigger = true;
    //     StaticParameter.EscapeAccountTrigger = true;
    //     StaticParameter.EscapeNFM001AgencyContractTrigger = true;
        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;
        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;
    //     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 完了!');
        Test.startTest();
        insert new List<Asset> {assetC1, assetC2};
        Test.stopTest();
    //     // 戦略科室を得る
    //     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;
        List<Asset> 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);
    //     // 診療科を作る
    //     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 完了!');
        Map<String, Account> insertAccount = new Map<String, Account>();
        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<String, Group> insertGroup = new Map<String, Group>();
        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);
        }
    }
    //     AssetHandler.testTargetDepts = new Set<String> {'1.华北Test', '4.华东Test'};
    //     List<String> insertAccShareNameList = new List<String> {'备品共享_北京_华北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<Asset> {assetC1, assetC2};
    //     Test.stopTest();
    //     List<Asset> 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<String, Account> insertAccount = new Map<String, Account>();
    //     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<String, Group> insertGroup = new Map<String, Group>();
    //     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);
    //     }
    // }
    /**
     * 做数据