19626
2023-07-12 fbd4bea7bd57b4d4a33cb9ed0ebc15d9bf6551c0
force-app/main/default/classes/ReportControllerTest.cls
@@ -1,122 +1,147 @@
@isTest
private  class ReportControllerTest {
    @TestSetup
    static void setData(){
        List<String> strList= new List<String>();
        strList.add('Agency_Contact__c');
        strList.add('Contact');
        TestDataUtility.CreatePIPolicyConfigurations(strList);
        Consum_Apply__c ca = new Consum_Apply__c();
        ca.DataMigration_Flag__c = true;
        insert ca;
        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 = [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;
        Contact contact2 = new Contact();
        contact2.AccountId = dep.Id;
        contact2.FirstName = '責任者';
        contact2.LastName = 'test1经销商';
        insert contact2;
        // 产品
        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;
        //备品借出申请
        Rental_Apply__c raObj = new Rental_Apply__c();
        raObj.Name = 'testra';
        raObj.Product_category__c = 'GI';
        raObj.Demo_purpose1__c = '产品试用';
        raObj.demo_purpose2__c = FixtureUtil.raDemo_purpose2MAP.get('shiyongwuxunjia');
        raObj.direct_send__c = '医疗机构';
        raObj.Loaner_received_staff__c = '王五';
        raObj.Loaner_received_staff_phone__c = '110';
        raObj.direct_shippment_address__c = '北京市';
        raObj.Hospital__c = hospital.Id;
        raObj.Strategic_dept__c = strategicDep[0].Id;
        raObj.Account__c = dep.Id;
        raObj.Request_shipping_day__c = Date.toDay();  // 希望到货日
        raObj.Hope_Lonaer_date_Num__c = 1;  // 希望借用天数
        // 预定归还日自动生成 预定归还日=(希望到货日+希望借用天数)-1
        // raObj.Request_return_day__c = Date.toDay();  // 预定归还日
        // B.OLY_OCM-669 入力规则: 希望借用天数不能为空
        raObj.Phone_number__c = '1234567890';
        raObj.Loaner_medical_Staff__c = contact2.Id;
        insert raObj;
        Report__c rep = new Report__c();
        rep.VOC_Informer_Contact__c = '139';
        rep.Comment__c = '测试';
        rep.Manual_Name__c = '测试医院/科室/经销商';
        insert rep;
    }
    static testMethod void methodName1(){
        Report__c rep = [select Id from Report__c limit 1];
        Rental_Apply__c re = [select Id from Rental_Apply__c limit 1];
        Consum_Apply__c ca = [select Id from Consum_Apply__c limit 1];
        Test.startTest();
            Report__c rac = new Report__c();
            rac.Id = 'a0B0l00000FD8o6EAD';
            rac.Status__c = '申請中';
            rac.Submit_time__c = Datetime.now();
            rac.Submit_report_day__c = Date.today();
            rac.Date__c = Date.today();
            update rac;
            Report__c res = [select Status__c,Submit_time__c,Submit_report_day__c from Report__c where Id = 'a0B0l00000FD8o6EAD'];
            System.debug(res);
        Test.stopTest();
    }
    static testMethod void methodName3(){
        Test.startTest();
        String recordId = 'a0B0l00000FDCPpEAP';
        String isVOC = 'VOC';
        String personId = '00510000002Z2o3AAC';
        Report__c r = [select Status__c,Submit_time__c from Report__c where Id = 'a0B0l00000FDCPpEAP' limit 1];
        Test.stopTest();
    }
    static testMethod void methodName2(){
        Test.startTest();
        String recordId = 'a0B0l00000FDCPpEAP';
        String isVOC = 'VOC';
        String personId = '00510000002Z2o3AAC';
        Report__c rac = new Report__c();
        rac.Id = recordId;
        List<Report__c> r = [select Id,OwnerId from Report__c where Id = :recordId limit 1];
        System.debug(r);
        if (isVOC == 'VOC') {
            // VOC対応者の経理部長総監を設定
            User[] records = [SELECT Id, Job_Category__c, JingliApprovalManager__c, SalesManager__c, BuchangApprovalManager__c, BuchangApprovalManagerSales__c, ZongjianApprovalManager__c FROM User WHERE Id = :personId];
            if (records[0].job_Category__c == '销售服务') {
                rac.VOC_jingli__c = records[0].JingliApprovalManager__c == null ? '' : records[0].JingliApprovalManager__c;
                rac.VOC_buzhang__c = records[0].BuchangApprovalManager__c == null ? '' : records[0].BuchangApprovalManager__c;
            } else {
                rac.VOC_jingli__c = records[0].SalesManager__c == null ? '' : records[0].SalesManager__c;
                rac.VOC_buzhang__c = records[0].BuchangApprovalManagerSales__c == null ? '' : records[0].BuchangApprovalManagerSales__c;
            }
            rac.VOC_zongjian__c = records[0].ZongjianApprovalManager__c == null ? '' : records[0].ZongjianApprovalManager__c;
            rac.Status__c = '判定完毕';
            rac.VOC_Finish__c = false;
            Date serverTimestamp = Date.today();
            rac.VOC_share_date__c = serverTimestamp;
            // share
            List<String> userAccess = new List<String>();
            userAccess.add(rac.Responsible_Person__r.Id + '_Edit');
            userAccess.add(rac.VOC_jingli__r.Id + '_Read');
            userAccess.add(rac.VOC_buzhang__r.Id + '_Read');
            userAccess.add(rac.VOC_zongjian__r.Id + '_Read');
            String rtn = ControllerUtil.setSObjectShare('Report__Share','VOCShare__c',recordId,userAccess,r[0].OwnerId);
            if (rtn != 'OK') {
                return;
            }
            update rac;
            } else {
                rac.Status__c = '完毕';
                rac.VOC_Finish__c = true;
                update rac;
            }
        Test.stopTest();
    }
    static testMethod void methodName4(){
        Test.startTest();
        String recordId = 'a0B0l00000FDbTOEA1';
        Report__c rac  = new Report__c();
        rac.Id = recordId;
        rac.Status__c = '回答完毕';
        update rac;
        Test.stopTest();
    }
    static testMethod void methodName5(){
        Test.startTest();
        String recordId = 'a0B0l00000FDbTOEA1';
        Report__c rac = new Report__c();
        String Satisfy = '是';
        String Satisfy1 = '';
        rac.Id = recordId;
        if (Satisfy == '是') {
            rac.Status__c = '结果确认完毕';
            } else if (Satisfy == '否') {
            // 対応結果(一回目)に値なければ、一回目の「否」と見なす
            if (Satisfy1 != '否') {
            Report__c[] records = [SELECT Id, VOC_Satisfy__c, VOC_Unsatisfy_Reason__c, VOC_follow_up_result__c, VOC_solution_category__c FROM Report__c WHERE Id = :recordId];
            rac.VOC_Satisfy__c = null;
            rac.VOC_Unsatisfy_Reason__c = null;
            rac.VOC_follow_up_result__c = null;
            rac.VOC_solution_category__c = null;
            rac.VOC_Satisfy1__c= records[0].VOC_Satisfy__c;
            rac.VOC_Unsatisfy_Reason1__c = records[0].VOC_Unsatisfy_Reason__c;
            rac.VOC_follow_up_result1__c = records[0].VOC_follow_up_result__c;
            rac.VOC_solution_category1__c = records[0].VOC_solution_category__c;
            rac.Status__c = '草案中';
            }
            // 対応結果(一回目)に値あれば、二回目の「否」と見なす
            else {
            rac.Status__c = '结果确认完毕';
            }
            }
        update rac;
        ReportController.initForASACEditorButton(rep.Id);
        ReportController.initForASRCEditorButton(rep.Id);
        ReportController.initForCancelButton(rep.Id);
        ReportController.initForCompleteButton(rep.Id);
        ReportController.initForNewOnLineSurveyButton(rep.Id);
        ReportController.initForOCSMNoToReportButton(rep.Id);
        ReportController.initForOCSMToReportButton(rep.Id);
        ReportController.initForOPDReportButton(re.Id);
        ReportController.initForOPDReportConsumButton(ca.Id);
        ReportController.initForOPDtoSISButton(rep.Id);
        ReportController.initForSIStoOPDButton(rep.Id);
        ReportController.initForSubmitCompetitorReportButton(rep.Id);
        ReportController.initForVOCAnswerButton(rep.Id);
        ReportController.initForVOCCheckButton(rep.Id);
        ReportController.initForVOCConfirmButton(rep.Id);
        ReportController.initForVOCFinishButton(rep.Id);
        ReportController.initForVOCSubmitButton(rep.Id);
        ReportController.updateForCancelButton(rep.Id);
        ReportController.updateForCancelButton('');
        ReportController.updateForCancelSubmitReportButton(rep.Id);
        ReportController.updateForCancelSubmitReportButton('');
        ReportController.updateForCompleteButton(rep.Id);
        ReportController.updateForCompleteButton('');
        ReportController.updateForDispatchOCSMQARAButton(rep.Id);
        ReportController.updateForDispatchOCSMQARAButton('');
        ReportController.updateForOCSMNoToReportButton(rep.Id);
        ReportController.updateForOCSMNoToReportButton('');
        ReportController.updateForOCSMToReportButton(rep.Id);
        ReportController.updateForOCSMToReportButton('');
        ReportController.updateForOPDtoSISButton(rep.Id);
        ReportController.updateForOPDtoSISButton('');
        ReportController.updateForSIStoOPDButton(rep.Id);
        ReportController.updateForSIStoOPDButton('');
        ReportController.updateForSubmitButton(rep.Id);
        ReportController.updateForSubmitButton('');
        ReportController.updateForSubmitCompetitorReportButton(rep.Id);
        ReportController.updateForSubmitCompetitorReportButton('');
        ReportController.updateForVOCAnswerButton(rep.Id);
        ReportController.updateForVOCAnswerButton('');
        ReportController.updateForVOCCheckButton(rep.Id,'VOC',UserInfo.getUserId());
        ReportController.updateForVOCConfirmButton(rep.Id,'否', '是');
        ReportController.updateForVOCFinishButton(rep.Id);
        ReportController.updateForVOCFinishButton('');
        ReportController.updateForVOCSubmitButton(rep.Id, UserInfo.getUserId());
        Test.stopTest();
    }