19626
2023-10-07 988f9735377909b6310301e582c15804e004783f
force-app/main/default/classes/ReportControllerTest.cls
@@ -1,123 +1,188 @@
@isTest
private  class ReportControllerTest {
    @TestSetup
    static void makeData(){
        Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
        // ユーザー作成
        User hpOwner = new User(Dept__c='医疗华北营业本部',Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id);
        insert hpOwner;
        // 取引先作成
        List<RecordType> rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectHp.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }
        List<RecordType> rectOPD = [select Id,name from RecordType where IsActive = true and SobjectType = 'Report__c' and Name = 'VOC'];
        if (rectOPD.size() == 0) {
            return;
        }
        Account hp1 = new Account(RecordTypeId = rectHp[0].Id, Name = 'TestHp1', OwnerId = hpOwner.Id);
        insert hp1;
    static testMethod void methodName1(){
        List<Account> dc1 = [Select Id, Name, Department_Class_Label__c from Account where Parent.Id = :hp1.Id and Department_Class_Label__c = '消化科'];
        Account depart1 = new Account();
        depart1.RecordTypeId = rectDpt[0].Id;
        depart1.Name         = '*';
        depart1.Department_Name__c  = '診療科1';
        depart1.ParentId            = dc1[0].Id;
        depart1.Department_Class__c = dc1[0].Id;
        depart1.Hospital__c         = hp1.Id;
        insert depart1;
        //AccountShare dcTS1 = new AccountShare(UserOrGroupId=hpOwner.Id,  AccountId=hp1.Id,AccountAccessLevel='Read', OpportunityAccessLevel = 'Read');
        //insert dcTS1;
        Daily_Report__c dr1 = new Daily_Report__c();
        dr1.Reporter__c = UserInfo.getUserId();
        dr1.Reported_Date__c = date.today();
        dr1.Status__c = '申請中';
        
        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();
        insert dr1;
        
        Report__c rep1 = new Report__c();
        rep1.CurrencyIsoCode         = 'CNY';
        rep1.RecordTypeId            = rectOPD[0].Id;
        rep1.Status__c               = '';
        rep1.Daily_Report__c         = dr1.Id;
        rep1.Purpose1__c             = 'OPD';
        rep1.Purpose2__c             = '引合追及活動';
        rep1.Reason__c               = '実施背景';
        rep1.Appeal_Point__c         = '実施目的・訴求点';
        rep1.Strategic_Department_Class__c = '1.消化科';
        rep1.Technical_Category1__c  = '消化道检查';
        rep1.Technical_Category2__c  = '普通胃镜检查';
        rep1.Patient_Status__c       = '患者状況';
        rep1.Operation_Process__c    = '手術プロセス';
        rep1.Operation_Task__c       = '手術上の課題';
        rep1.Product_Evaluation_Advantage__c = '製品評価利点';
        rep1.Product_Evaluation_Faults__c = '製品評価欠点';
        rep1.OPD_Summarize__c        = 'OPD実施総括';
        rep1.Activity_Plan__c        = '今後の活動計画';
        rep1.Opportunity_Situation__c = '引合無';
        rep1.OPD_ProductCategory1__c ='3D System';
        rep1.OPD_ProductCategory2__c ='OR Imaging Products';
        rep1.Hospital_Reference__c   = hp1.Id;
        rep1.Department_Class_Ref__c = dc1[0].Id;
        rep1.Hospital_Department__c  = depart1.Id;
        rep1.Status__c = '草案中';
        rep1.Date__c                 = Date.today().addDays(-1);
        insert rep1;
        // 病院を作る
        Account hospital = new Account();
        hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
        hospital.Name = 'test hospital';
        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;
        Consum_Apply__c ca = new Consum_Apply__c();
        ca.DataMigration_Flag__c = true;
        insert ca;
        Rental_Apply__c ra = new Rental_Apply__c();
        ra.Rental_Start_Date__c = Date.today().addDays(1);
        ra.Request_return_day__c=Date.today().addDays(5);
        ra.DataMigration_Flag__c = true;
        //ra.demo_purpose2__c = '其他';
        //ra.Person_In_Charge__c = hpOwner.Id;
        //System.runAs(hpOwner) {
            insert ra;
    }
    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 test1() {
        Report__c rep1 = [select Id,createdById from Report__c limit 1];
        Consum_Apply__c ca = [select Id from Consum_Apply__c limit 1];
        Rental_Apply__c ra = [select Id from Rental_Apply__c limit 1];
        Id reportId = rep1.Id;
        String createdById = rep1.createdById;
        System.Test.startTest();
        ReportController.initForOPDReportConsumButton(ca.Id);
        ReportController.initForOPDReportButton(ra.Id);
        ReportController.initForVOCFinishButton(reportId);
        ReportController.initForVOCCheckButton(reportId);
        ReportController.initForVOCSubmitButton(reportId);
        ReportController.initForVOCAnswerButton(reportId);
        ReportController.initForVOCConfirmButton(reportId);
        ReportController.initForCancelButton(reportId);
        ReportController.initForOCSMNoToReportButton(reportId);
        ReportController.initForSIStoOPDButton(reportId);
        ReportController.initForOCSMToReportButton(reportId);
        ReportController.initForCompleteButton(reportId);
        ReportController.initForASRCEditorButton(reportId);
        ReportController.initForASACEditorButton(reportId);
        ReportController.initForOPDtoSISButton(reportId);
        ReportController.initForSubmitCompetitorReportButton(reportId);
        ReportController.initForNewOnLineSurveyButton(reportId);
        ReportController.updateForSubmitButton(reportId);
        ReportController.updateForOPDtoSISButton(reportId);
        ReportController.updateForCancelSubmitReportButton(reportId);
        ReportController.updateForCompleteButton(reportId);
        ReportController.updateForOCSMToReportButton(reportId);
        ReportController.updateForSIStoOPDButton(reportId);
        ReportController.updateForDispatchOCSMQARAButton(reportId);
        ReportController.updateForOCSMNoToReportButton(reportId);
        ReportController.updateForCancelButton(reportId);
        ReportController.updateForVOCConfirmButton(reportId,'否','是');
        ReportController.updateForVOCAnswerButton(reportId);
        ReportController.updateForSubmitCompetitorReportButton(reportId);
        ReportController.updateForVOCSubmitButton(reportId,createdById);
        ReportController.updateForVOCCheckButton(reportId,'VOC',UserInfo.getUserId());
        ReportController.updateForVOCFinishButton(reportId);
        System.Test.stopTest();
    }
    static testMethod void test2() {
        System.Test.startTest();
        ReportController.initForOPDReportConsumButton('');
        ReportController.initForOPDReportButton('');
        ReportController.initForVOCFinishButton('');
        ReportController.initForVOCCheckButton('');
        ReportController.initForVOCSubmitButton('');
        ReportController.initForVOCAnswerButton('');
        ReportController.initForVOCConfirmButton('');
        ReportController.initForCancelButton('');
        ReportController.initForOCSMNoToReportButton('');
        ReportController.initForSIStoOPDButton('');
        ReportController.initForOCSMToReportButton('');
        ReportController.initForCompleteButton('');
        ReportController.initForASRCEditorButton('');
        ReportController.initForASACEditorButton('');
        ReportController.initForOPDtoSISButton('');
    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();
        ReportController.initForSubmitCompetitorReportButton('');
        ReportController.initForNewOnLineSurveyButton('');
        ReportController.updateForSubmitButton('');
        ReportController.updateForOPDtoSISButton('');
        ReportController.updateForCancelSubmitReportButton('');
        ReportController.updateForCompleteButton('');
        ReportController.updateForOCSMToReportButton('');
        ReportController.updateForSIStoOPDButton('');
        ReportController.updateForDispatchOCSMQARAButton('');
        ReportController.updateForOCSMNoToReportButton('');
        ReportController.updateForCancelButton('');
        ReportController.updateForVOCConfirmButton('','否','是');
        ReportController.updateForVOCAnswerButton('');
        ReportController.updateForSubmitCompetitorReportButton('');
        ReportController.updateForVOCSubmitButton('','');
        ReportController.updateForVOCCheckButton('','VOC',UserInfo.getUserId());
        ReportController.updateForVOCFinishButton('');
        System.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;
        Test.stopTest();
    }
    
}