高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/LostCancelReportHandlerTest.cls
@@ -2,178 +2,255 @@
private class LostCancelReportHandlerTest {
   @isTest static void test_method_one() {
      // recode type を取得
      List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
      if (rectCo.size() == 0) {
         throw new ControllerUtil.myException('not found 病院 recodetype');
      }
      List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
      if (rectSct.size() == 0) {
         throw new ControllerUtil.myException('not found 戦略科室分類 recodetype');
      }
      List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc];
      if (rectDpt.size() == 0) {
         throw new ControllerUtil.myException('not found 診療科 recodetype');
      }
      List<RecordType> rectLost = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Lost_cancel_report__c' and DeveloperName IN ('PCL_Lost_report', 'PCL_Cancel_report') order by DeveloperName desc];
      if (rectLost.size() == 0) {
         throw new ControllerUtil.myException('not found Lost_cancel_report recodetype');
      }
    @isTest static void test_method_one() {
        // recode type を取得
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            throw new ControllerUtil.myException('not found 病院 recodetype');
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            throw new ControllerUtil.myException('not found 戦略科室分類 recodetype');
        }
        List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc];
        if (rectDpt.size() == 0) {
            throw new ControllerUtil.myException('not found 診療科 recodetype');
        }
        List<RecordType> rectLost = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Lost_cancel_report__c' and DeveloperName IN ('PCL_Lost_report', 'PCL_Cancel_report') order by DeveloperName desc];
        if (rectLost.size() == 0) {
            throw new ControllerUtil.myException('not found Lost_cancel_report recodetype');
        }
      // insert
      Account company1 = new Account();
      company1.RecordTypeId = rectCo[0].Id;
      company1.Name         = '病院テスト1';
      insert company1;
        // insert
        Account company1 = new Account();
        company1.RecordTypeId = rectCo[0].Id;
        company1.Name         = '病院テスト1';
        insert company1;
      List<Account> dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = : company1.Id order by Department_Class_Label__c];
        List<Account> dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = : company1.Id order by Department_Class_Label__c];
      Account depart1 = new Account();
      depart1.RecordTypeId = rectDpt[0].Id;
      depart1.Name         = '*';
      depart1.Department_Name__c  = '診療科1';
      depart1.ParentId            = dc1s[0].Id;
      depart1.Department_Class__c = dc1s[0].Id;
      depart1.Hospital__c         = company1.Id;
      insert depart1;
        Account depart1 = new Account();
        depart1.RecordTypeId = rectDpt[0].Id;
        depart1.Name         = '*';
        depart1.Department_Name__c  = '診療科1';
        depart1.ParentId            = dc1s[0].Id;
        depart1.Department_Class__c = dc1s[0].Id;
        depart1.Hospital__c         = company1.Id;
        insert depart1;
      // 商談
      Opportunity opp1 = new Opportunity(Name='aiueo', StageName='contact', CloseDate=Date.today(),
                                         Hospital__c = company1.Id,
                                         Department_Class__c = dc1s[0].Id,
                                         AccountId = depart1.Id
                                         );
      insert opp1;
        // 商談
        Opportunity opp1 = new Opportunity(Name='aiueo', StageName='contact', CloseDate=Date.today(),
                                           Hospital__c = company1.Id,
                                           Department_Class__c = dc1s[0].Id,
                                           AccountId = depart1.Id
                                           );
        insert opp1;
      // 失单
      Lost_cancel_report__c lcr1 = new Lost_cancel_report__c(
         Opportunity__c = opp1.Id,
         RecordTypeId = rectLost[0].Id
         );
      insert lcr1;
        // 失单
        Lost_cancel_report__c lcr1 = new Lost_cancel_report__c(
            Opportunity__c = opp1.Id,
            RecordTypeId = rectLost[0].Id
            );
        insert lcr1;
      //test
      lcr1.Report_Status__c = '批准';
      update lcr1;
        // 20220720 ljh add start
        lcr1.Report_Status__c = '申请中';
        update lcr1;
        // 20220720 ljh add edn
        //test
        lcr1.Report_Status__c = '批准';
        update lcr1;
      Opportunity opptest = [SELECT Id, Lost_Cancel_Report__c FROM Opportunity WHERE Id =: opp1.Id];
        Opportunity opptest = [SELECT Id, Lost_Cancel_Report__c FROM Opportunity WHERE Id =: opp1.Id];
      // System.assertEquals(lcr1.Id, opptest.Lost_Cancel_Report__c);
   }
        // System.assertEquals(lcr1.Id, opptest.Lost_Cancel_Report__c);
    }
   // add tcm 20211212 start
   @isTest static void test_method_two() {
      // recode type を取得
      List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
      if (rectCo.size() == 0) {
         throw new ControllerUtil.myException('not found 病院 recodetype');
      }
      List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
      if (rectSct.size() == 0) {
         throw new ControllerUtil.myException('not found 戦略科室分類 recodetype');
      }
      List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc];
      if (rectDpt.size() == 0) {
         throw new ControllerUtil.myException('not found 診療科 recodetype');
      }
      List<RecordType> rectLost = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Lost_cancel_report__c' and DeveloperName IN ('PCL_Lost_report', 'PCL_Cancel_report') order by DeveloperName desc];
      if (rectLost.size() == 0) {
         throw new ControllerUtil.myException('not found Lost_cancel_report recodetype');
      }
    // add tcm 20211212 start
    @isTest static void test_method_two() {
        // recode type を取得
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            throw new ControllerUtil.myException('not found 病院 recodetype');
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            throw new ControllerUtil.myException('not found 戦略科室分類 recodetype');
        }
        List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc];
        if (rectDpt.size() == 0) {
            throw new ControllerUtil.myException('not found 診療科 recodetype');
        }
        List<RecordType> rectLost = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Lost_cancel_report__c' and DeveloperName IN ('PCL_Lost_report', 'PCL_Cancel_report') order by DeveloperName desc];
        if (rectLost.size() == 0) {
            throw new ControllerUtil.myException('not found Lost_cancel_report recodetype');
        }
      // insert
      Account company1 = new Account();
      company1.RecordTypeId = rectCo[0].Id;
      company1.Name = '病院テスト1';
      insert company1;
        // insert
        Account company1 = new Account();
        company1.RecordTypeId = rectCo[0].Id;
        company1.Name = '病院テスト1';
        insert company1;
      List<Account> dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = : company1.Id order by Department_Class_Label__c];
        List<Account> dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = : company1.Id order by Department_Class_Label__c];
      Account depart1 = new Account();
      depart1.RecordTypeId = rectDpt[0].Id;
      depart1.Name = '*';
      depart1.Department_Name__c  = '診療科1';
      depart1.ParentId= dc1s[0].Id;
      depart1.Department_Class__c = dc1s[0].Id;
      depart1.Hospital__c= company1.Id;
      insert depart1;
        Account depart1 = new Account();
        depart1.RecordTypeId = rectDpt[0].Id;
        depart1.Name = '*';
        depart1.Department_Name__c  = '診療科1';
        depart1.ParentId= dc1s[0].Id;
        depart1.Department_Class__c = dc1s[0].Id;
        depart1.Hospital__c= company1.Id;
        insert depart1;
      Account depart2 = new Account();
      depart2.RecordTypeId = rectDpt[0].Id;
      depart2.Name = '*111';
      depart2.Department_Name__c  = '診療科2';
      depart2.ParentId= dc1s[0].Id;
      depart2.Department_Class__c = dc1s[0].Id;
      depart2.Hospital__c= company1.Id;
      insert depart2;
        Account depart2 = new Account();
        depart2.RecordTypeId = rectDpt[0].Id;
        depart2.Name = '*111';
        depart2.Department_Name__c  = '診療科2';
        depart2.ParentId= dc1s[0].Id;
        depart2.Department_Class__c = dc1s[0].Id;
        depart2.Hospital__c= company1.Id;
        insert depart2;
      // 询价
      Opportunity opp1 = new Opportunity(Name='opp1', StageName='oppName', CloseDate=Date.today(),Hospital__c = company1.Id,Department_Class__c = dc1s[0].Id,AccountId = depart1.Id);
      insert opp1;
        // 询价
        Opportunity opp1 = new Opportunity(Name='opp1', StageName='oppName', CloseDate=Date.today(),Hospital__c = company1.Id,Department_Class__c = dc1s[0].Id,AccountId = depart1.Id);
        insert opp1;
      // 失单
      Lost_cancel_report__c lcr1 = new Lost_cancel_report__c(Opportunity__c = opp1.Id,RecordTypeId = rectLost[0].Id);
      insert lcr1;
        // 失单
        Lost_cancel_report__c lcr1 = new Lost_cancel_report__c(Opportunity__c = opp1.Id,RecordTypeId = rectLost[0].Id);
        insert lcr1;
      //失单品牌1
      PCLLostBrand__c pcllb1=new PCLLostBrand__c();
      pcllb1.LostPrice__c=1332;
      pcllb1.Lost_Reason_Sub__c='价格';   //原因次
      pcllb1.Lost_reason_main__c='价格';     //原因主
      pcllb1.Lost_By_Company__c='蛇牌';       //品牌(主)
      pcllb1.Agency__c=depart1.Id;            //经销商
      pcllb1.Lost_cancel_report__c=lcr1.Id;
        //失单品牌1
        PCLLostBrand__c pcllb1=new PCLLostBrand__c();
        pcllb1.LostPrice__c=1332;
        pcllb1.Lost_Reason_Sub__c='价格';   //原因次
        pcllb1.Lost_reason_main__c='价格';     //原因主
        pcllb1.Lost_By_Company__c='蛇牌';       //品牌(主)
        pcllb1.Agency__c=depart1.Id;            //经销商
        pcllb1.Lost_cancel_report__c=lcr1.Id;
      //失单品牌2
      PCLLostBrand__c pcllb2=pcllb1.clone();
      pcllb2.Lost_By_Company__c='其他';       //品牌(主)
      pcllb2.Lost_By_Company_Mannual__c='失单品牌';   //手动品牌
        //失单品牌2
        PCLLostBrand__c pcllb2=pcllb1.clone();
        pcllb2.Lost_By_Company__c='其他';       //品牌(主)
        pcllb2.Lost_By_Company_Mannual__c='失单品牌';   //手动品牌
        pcllb2.Agency__c=depart2.Id;            //经销商
      pcllb2.AgencyMannual__c='手动经销商';
      insert new List<PCLLostBrand__c> {pcllb1,pcllb2};
        pcllb2.AgencyMannual__c='手动经销商';
        insert new List<PCLLostBrand__c> {pcllb1,pcllb2};
        // 产品
        Product2 pro1 = new Product2(Name='name01', Brand_Name__c='蛇牌',Category5__c='竞争对手',IsActive=true,Family='SP',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);
        Product2 pro2 = new Product2(Name='name02', Brand_Name__c='其他',Category5__c='竞争对手',IsActive=true,Family='SP2',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);
        // Product2 pro3 = new Product2(Name='name03',Lost_By_Company__c='其他',IsActive=true,Family='SP3',Fixture_Model_No__c='n03',Serial_Lot_No__c='S/N tracing',Fixture_Model_No_T__c = 'n03',ProductCode_Ext__c='pc03',Manual_Entry__c=false);
         if(NFMUtil.isSandbox()){
                pro1.RecordTypeId = '0129D000001NacD';
                pro2.RecordTypeId = '0129D000001NacD';
            } else {
                pro1.RecordTypeId = '01210000000aMAE';
                pro2.RecordTypeId = '01210000000aMAE';
            }
      // 产品
      Product2 pro1 = new Product2(Name='name01',   Brand_Name__c='蛇牌',Category5__c='竞争对手',IsActive=true,Family='SP',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);
      Product2 pro2 = new Product2(Name='name02',   Brand_Name__c='其他',Category5__c='竞争对手',IsActive=true,Family='SP2',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);
      // Product2 pro3 = new Product2(Name='name03',Lost_By_Company__c='其他',IsActive=true,Family='SP3',Fixture_Model_No__c='n03',Serial_Lot_No__c='S/N tracing',Fixture_Model_No_T__c = 'n03',ProductCode_Ext__c='pc03',Manual_Entry__c=false);
      insert new List<Product2> {pro1,pro2};
        insert new List<Product2> {pro1,pro2};
      //失单型号
      PCLLostProduct__c pcllp1=new PCLLostProduct__c();
      pcllp1.Quantity__c=2;
      pcllp1.LostBrandName__c='蛇牌';
      pcllp1.ProductClass__c='主机';
      pcllp1.ProductCategory__c='4K';
      pcllp1.LostProduct__c=pro1.Id;     //产品Id
      pcllp1.LostProductMannual__c='失单对手型号(手动)';   //失单对手型号(手动)
      pcllp1.PCLLostBrand__c=pcllb1.Id;     //询价失单品牌
        //失单型号
        PCLLostProduct__c pcllp1=new PCLLostProduct__c();
        pcllp1.Quantity__c=2;
        pcllp1.LostBrandName__c='蛇牌';
        pcllp1.ProductClass__c='主机';
        pcllp1.ProductCategory__c='4K';
        pcllp1.LostProduct__c=pro1.Id;     //产品Id
        pcllp1.LostProductMannual__c='失单对手型号(手动)';   //失单对手型号(手动)
        pcllp1.PCLLostBrand__c=pcllb1.Id;     //询价失单品牌
      PCLLostProduct__c pcllp2=pcllp1.clone();
      pcllp2.LostBrandName__c='其他';
      pcllp2.ProductClass__c='主机';
      pcllp2.ProductCategory__c='4K';
      pcllp2.LostProduct__c=pro2.Id;     //产品Id
      pcllp2.PCLLostBrand__c=pcllb2.Id;     //询价失单品牌
        PCLLostProduct__c pcllp2=pcllp1.clone();
        pcllp2.LostBrandName__c='其他';
        pcllp2.ProductClass__c='主机';
        pcllp2.ProductCategory__c='4K';
        pcllp2.LostProduct__c=pro2.Id;     //产品Id
        pcllp2.PCLLostBrand__c=pcllb2.Id;     //询价失单品牌
      // PCLLostProduct__c pcllp3=pcllp1.clone();
      // pcllp3.LostBrandName__c='其他';
      // pcllp3.LostProduct__c=pro3.Id;     //产品Id
      // pcllp3.PCLLostBrand__c=pcllb2.Id;     //询价失单品牌
        // PCLLostProduct__c pcllp3=pcllp1.clone();
        // pcllp3.LostBrandName__c='其他';
        // pcllp3.LostProduct__c=pro3.Id;     //产品Id
        // pcllp3.PCLLostBrand__c=pcllb2.Id;     //询价失单品牌
      insert new List<PCLLostProduct__c> {pcllp1,pcllp2};
        insert new List<PCLLostProduct__c> {pcllp1,pcllp2};
      //test
      lcr1.Report_Status__c = '批准';
      update lcr1;
        //test
        lcr1.Report_Status__c = '批准';
        update lcr1;
   }
   // add tcm 20211212 end
    }
    // add tcm 20211212 end
    // 20221206 ljh start
    @isTest static void test_method_three() {
        // recode type を取得
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            throw new ControllerUtil.myException('not found 病院 recodetype');
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            throw new ControllerUtil.myException('not found 戦略科室分類 recodetype');
        }
        List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc];
        if (rectDpt.size() == 0) {
            throw new ControllerUtil.myException('not found 診療科 recodetype');
        }
        List<RecordType> rectLost = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Lost_cancel_report__c' and DeveloperName IN ('PCL_Lost_report', 'PCL_Cancel_report') order by DeveloperName desc];
        if (rectLost.size() == 0) {
            throw new ControllerUtil.myException('not found Lost_cancel_report recodetype');
        }
        // insert
        Account company1 = new Account();
        company1.RecordTypeId = rectCo[0].Id;
        company1.Name         = '病院テスト1';
        insert company1;
        List<Account> dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = : company1.Id order by Department_Class_Label__c];
        Account depart1 = new Account();
        depart1.RecordTypeId = rectDpt[0].Id;
        depart1.Name         = '*';
        depart1.Department_Name__c  = '診療科1';
        depart1.ParentId            = dc1s[0].Id;
        depart1.Department_Class__c = dc1s[0].Id;
        depart1.Hospital__c         = company1.Id;
        insert depart1;
        // 商談
        Opportunity opp1 = new Opportunity(Name='aiueo', StageName='contact', CloseDate=Date.today(),
                                           Hospital__c = company1.Id,
                                           Department_Class__c = dc1s[0].Id,
                                           AccountId = depart1.Id
                                           );
        insert opp1;
        // 失单
        Lost_cancel_report__c lcr1 = new Lost_cancel_report__c(
            Opportunity__c = opp1.Id,
            RecordTypeId = rectLost[0].Id
            );
        insert lcr1;
        // 20220720 ljh add start
        lcr1.Report_Status__c = '申请中';
        update lcr1;
        // 20220720 ljh add edn
        //test
        lcr1.Report_Status__c = '批准';
        update lcr1;
        Opportunity opptest = [SELECT Id, Lost_Cancel_Report__c FROM Opportunity WHERE Id =: opp1.Id];
        delete lcr1;
        // System.assertEquals(lcr1.Id, opptest.Lost_Cancel_Report__c);
    }
    // 20221206 ljh start
}