GWY
2022-04-06 7560140a14a60e949e6130d98225297e84f0a198
force-app/main/default/classes/LogAutoSendBatchTest.cls
@@ -1,98 +1,262 @@
@isTest
public class LogAutoSendBatchTest {
private class LogAutoSendBatchTest {
    static Account company;
    static Account section1;        // 呼吸科
    static Account section2;        // 消化科
    static Account olympus;
    static Account olympus1;        // 呼吸科
    static Account olympus2;        // 消化科
    static Account depart1;
    static Account depart2;
    static void initHpData() {
        StaticParameter.EscapeNFM007Trigger = true;
        ControllerUtil.EscapeNFM001Trigger = true;
        RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        RecordType rectDpt1 = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 呼吸科'];
        RecordType rectDpt2 = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        // テストデータ
        company = new Account(RecordTypeId = rectCo.Id, Name = 'NFM110TestCompany');
        olympus = new Account(RecordTypeId = rectCo.Id, AgentCode_Ext__c = '9999999', Name = 'olympus');
        insert new Account[] {company, olympus};
        company = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id =:company.Id];
        section1 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId =:company.Id and RecordType.name = '戦略科室分類 呼吸科'];
        section2 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId =:company.Id and RecordType.name = '戦略科室分類 消化科'];
        olympus1 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId =:olympus.Id and RecordType.name = '戦略科室分類 呼吸科'];
        olympus2 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId =:olympus.Id and RecordType.name = '戦略科室分類 消化科'];
System.debug('section1.Department_Class_Label__c='+section1.Department_Class_Label__c);
System.debug('section2.Department_Class_Label__c='+section2.Department_Class_Label__c);
        depart1 = new Account(RecordTypeId = rectDpt1.Id, Name = '*', ParentId  = section1.Id, Department_Class__c = section1.Id, Hospital__c = company.Id,
                Department_Name__c = 'NFM110TestDepart1');
        depart2 = new Account(RecordTypeId = rectDpt2.Id, Name = '*', ParentId  = section2.Id, Department_Class__c = section2.Id, Hospital__c = company.Id,
                Department_Name__c = 'NFM110TestDepart2');
        Account ocm = new Account(RecordTypeId = rectDpt2.Id, Name = '*', ParentId  = section2.Id, Department_Class__c = section2.Id, Hospital__c = company.Id,
                AgentCode_Ext__c = '9999900', Department_Name__c = 'NFM110TestDepart3');
        Account olympus_return = new Account(RecordTypeId = rectDpt2.Id, Name = '*', ParentId  = olympus2.Id, Department_Class__c = olympus2.Id, Hospital__c = olympus.Id,
                AgentCode_Ext__c = '9999901', Department_Name__c = 'olympus_return');
        insert new Account[] {depart1, depart2, ocm,olympus_return};
        depart1 = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id =:depart1.Id];
        depart2 = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id =:depart2.Id];
    }
    @isTest
    static void test_insert() {
        initHpData();
        Product2 prd = new Product2(Name = 'NFM110Prd1', ProductCode = 'NFM110Prd1', ProductCode_Ext__c = 'NFM110Prd1', Manual_Entry__c = false);
        insert prd;
        Product2__c pro1 = new Product2__c(Name='NFM110Prd1',OT_CODE_Text__c='NFM110Prd1',Product2__c=prd.id);
        insert pro1;
        NFM110WebService.GeneralData generalData1 = new NFM110WebService.GeneralData();
        NFM110WebService.ProductsDelivery ProductsDelivery = new NFM110WebService.ProductsDelivery();
    static void test_LogAutoSendBatch_SBGITM() {
        Id pricebookId = ControllerUtil.getStandardPricebook().Id;
        SBGITMRest.GeData GeData = new SBGITMRest.GeData();
        SBGITMRest.GeDatas GeDatas = new SBGITMRest.GeDatas();
        GeDatas.GeData = new SBGITMRest.GeData[] { GeData };
        Datetime nowDT = Datetime.now();
        String nowStr = nowDT.format('yyyyMMddHHmm');
        ProductsDelivery.Monitoring = new NFMUtil.Monitoring();
        ProductsDelivery.Monitoring.MessageGroupNumber = nowStr + '01';
        GeDatas.Monitoring = new NFMUtil.Monitoring();
        GeDatas.Monitoring.MessageGroupNumber = nowStr + '01';
        GeData.EffectiveDateTo                            = '29121103';
        GeData.ProductCode                = 'SBGITMTst1';
        // SBGITMRest.SBGITM(GeDatas);
        //
        BatchIF_Log__c rowData = NFMUtil.saveRowData(GeDatas.Monitoring, 'SBGITM', GeDatas.GeData);
        SBGITMRest.main(rowData.Id);
        BatchIF_Log__c[] logs = [Select Id,
                                 Name,
                                 Log__c,
                                 ErrorLog__c,
                                 Log2__c,
                                 Log3__c,
                                 Log4__c,
                                 Log5__c,
                                 Log6__c,
                                 Log7__c,
                                 Log8__c,
                                 Log9__c,
                                 Log10__c,
                                 Log11__c,
                                 Log12__c,
                                 MessageGroupNumber__c,
                                 retry_cnt__c
                                 from BatchIF_Log__c
                                 where RowDataFlg__c = true
                                         and Type__c = 'SBGITM'
                                                 order by CreatedDate desc ];
        ProductsDelivery.GeneralData = new NFM110WebService.GeneralData[] { generalData1 };
        generalData1.DeliveryNote = 'DeliveryNote';
        NFM110WebService.DnInformation dnInfo1 = new NFM110WebService.DnInformation();
        generalData1.DnInformation = new NFM110WebService.DnInformation[] { dnInfo1 };
        generalData1.EndUserNo     = company.Management_Code_Auto__c;
        generalData1.DepartmentNo  = depart1.Management_Code_Auto__c;
        generalData1.InquiryNo = 'test0001' + ',';
        dnInfo1.SorLMark        = 'S';
        dnInfo1.OTCode          = prd.ProductCode_Ext__c;
        dnInfo1.SerialNoorLotNo = '2577010001675';
        logs[0].retry_cnt__c = 1;
        update logs;
        Id execBTId = Database.executeBatch(new LogAutoSendBatch(), 1);
    }
    @isTest
    static void test_LogAutoSendBatch_SBG010() {
        Id pricebookId = ControllerUtil.getStandardPricebook().Id;
        SBGITMRest.GeData GeData = new SBGITMRest.GeData();
        SBGITMRest.GeDatas GeDatas = new SBGITMRest.GeDatas();
        GeDatas.GeData = new SBGITMRest.GeData[] { GeData };
        Datetime nowDT = Datetime.now();
        String nowStr = nowDT.format('yyyyMMddHHmm');
        GeDatas.Monitoring = new NFMUtil.Monitoring();
        GeDatas.Monitoring.MessageGroupNumber = nowStr + '01';
        GeData.EffectiveDateTo                            = '29121103';
        GeData.ProductCode                = 'SBGITMTst1';
        // SBGITMRest.SBGITM(GeDatas);
        //
        BatchIF_Log__c rowData = NFMUtil.saveRowData(GeDatas.Monitoring, 'SBG010', GeDatas.GeData);
        SBG010WebService.execute(rowData.Id);
        BatchIF_Log__c[] logs = [Select Id,
                                 Name,
                                 Log__c,
                                 ErrorLog__c,
                                 Log2__c,
                                 Log3__c,
                                 Log4__c,
                                 Log5__c,
                                 Log6__c,
                                 Log7__c,
                                 Log8__c,
                                 Log9__c,
                                 Log10__c,
                                 Log11__c,
                                 Log12__c,
                                 MessageGroupNumber__c,
                                 retry_cnt__c
                                 from BatchIF_Log__c
                                 where RowDataFlg__c = true
                                         and Type__c = 'SBG010'
                                                 order by CreatedDate desc ];
        logs[0].retry_cnt__c = 1;
        update logs;
        Id execBTId = Database.executeBatch(new LogAutoSendBatch(), 1);
    }
    @isTest
    static void test_LogAutoSendBatch_SBG017() {
        Id pricebookId = ControllerUtil.getStandardPricebook().Id;
        SBGITMRest.GeData GeData = new SBGITMRest.GeData();
        SBGITMRest.GeDatas GeDatas = new SBGITMRest.GeDatas();
        GeDatas.GeData = new SBGITMRest.GeData[] { GeData };
        Datetime nowDT = Datetime.now();
        String nowStr = nowDT.format('yyyyMMddHHmm');
        GeDatas.Monitoring = new NFMUtil.Monitoring();
        GeDatas.Monitoring.MessageGroupNumber = nowStr + '01';
        GeData.EffectiveDateTo                            = '29121103';
        GeData.ProductCode                = 'SBGITMTst1';
        // SBGITMRest.SBGITM(GeDatas);
        //
        BatchIF_Log__c rowData = NFMUtil.saveRowData(GeDatas.Monitoring, 'SBG017', GeDatas.GeData);
        SBG017Rest.main(rowData.Id);
        BatchIF_Log__c[] logs = [Select Id,
                                 Name,
                                 Log__c,
                                 ErrorLog__c,
                                 Log2__c,
                                 Log3__c,
                                 Log4__c,
                                 Log5__c,
                                 Log6__c,
                                 Log7__c,
                                 Log8__c,
                                 Log9__c,
                                 Log10__c,
                                 Log11__c,
                                 Log12__c,
                                 MessageGroupNumber__c,
                                 retry_cnt__c
                                 from BatchIF_Log__c
                                 where RowDataFlg__c = true
                                         and Type__c = 'SBG017'
                                                 order by CreatedDate desc ];
        logs[0].retry_cnt__c = 1;
        update logs;
        Id execBTId = Database.executeBatch(new LogAutoSendBatch(), 1);
    }
    @isTest
    static void test_LogAutoSendBatch_SBG203() {
        Id pricebookId = ControllerUtil.getStandardPricebook().Id;
        SBGITMRest.GeData GeData = new SBGITMRest.GeData();
        SBGITMRest.GeDatas GeDatas = new SBGITMRest.GeDatas();
        GeDatas.GeData = new SBGITMRest.GeData[] { GeData };
        Datetime nowDT = Datetime.now();
        String nowStr = nowDT.format('yyyyMMddHHmm');
        GeDatas.Monitoring = new NFMUtil.Monitoring();
        GeDatas.Monitoring.MessageGroupNumber = nowStr + '01';
        GeData.EffectiveDateTo                            = '29121103';
        GeData.ProductCode                = 'SBGITMTst1';
        // SBGITMRest.SBGITM(GeDatas);
        //
        BatchIF_Log__c rowData = NFMUtil.saveRowData(GeDatas.Monitoring, 'SBG203', GeDatas.GeData);
        SBG203Rest.main(rowData.Id);
        BatchIF_Log__c[] logs = [Select Id,
                                 Name,
                                 Log__c,
                                 ErrorLog__c,
                                 Log2__c,
                                 Log3__c,
                                 Log4__c,
                                 Log5__c,
                                 Log6__c,
                                 Log7__c,
                                 Log8__c,
                                 Log9__c,
                                 Log10__c,
                                 Log11__c,
                                 Log12__c,
                                 MessageGroupNumber__c,
                                 retry_cnt__c
                                 from BatchIF_Log__c
                                 where RowDataFlg__c = true
                                         and Type__c = 'SBG203'
                                                 order by CreatedDate desc ];
        logs[0].retry_cnt__c = 1;
        update logs;
        Id execBTId = Database.executeBatch(new LogAutoSendBatch(), 1);
    }
    @isTest
    static void test_LogAutoSendBatch_SBG204() {
        Id pricebookId = ControllerUtil.getStandardPricebook().Id;
        SBGITMRest.GeData GeData = new SBGITMRest.GeData();
        SBGITMRest.GeDatas GeDatas = new SBGITMRest.GeDatas();
        GeDatas.GeData = new SBGITMRest.GeData[] { GeData };
        Datetime nowDT = Datetime.now();
        String nowStr = nowDT.format('yyyyMMddHHmm');
        GeDatas.Monitoring = new NFMUtil.Monitoring();
        GeDatas.Monitoring.MessageGroupNumber = nowStr + '01';
        GeData.EffectiveDateTo                            = '29121103';
        GeData.ProductCode                = 'SBGITMTst1';
        // SBGITMRest.SBGITM(GeDatas);
        //
        BatchIF_Log__c rowData = NFMUtil.saveRowData(GeDatas.Monitoring, 'SBG204', GeDatas.GeData);
        SBG204Rest.main(rowData.Id);
        BatchIF_Log__c[] logs = [Select Id,
                                 Name,
                                 Log__c,
                                 ErrorLog__c,
                                 Log2__c,
                                 Log3__c,
                                 Log4__c,
                                 Log5__c,
                                 Log6__c,
                                 Log7__c,
                                 Log8__c,
                                 Log9__c,
                                 Log10__c,
                                 Log11__c,
                                 Log12__c,
                                 MessageGroupNumber__c,
                                 retry_cnt__c
                                 from BatchIF_Log__c
                                 where RowDataFlg__c = true
                                         and Type__c = 'SBG204'
                                                 order by CreatedDate desc ];
        logs[0].retry_cnt__c = 1;
        update logs;
        Id execBTId = Database.executeBatch(new LogAutoSendBatch(), 1);
    }
    @isTest
    static void test_LogAutoSendBatch_SBG018() {
        SBG018Rest.GeData GeData = new SBG018Rest.GeData();
        SBG018Rest.GeDatas GeDatas = new SBG018Rest.GeDatas();
        GeDatas.GeData = new SBG018Rest.GeData[] { GeData };
        Datetime nowDT = Datetime.now();
        String nowStr = nowDT.format('yyyyMMddHHmm');
        GeDatas.Monitoring = new NFMUtil.Monitoring();
        GeDatas.Monitoring.MessageGroupNumber = nowStr + '01';
        SBG018Rest.GeDataDetails GeDataDetail01 = new  SBG018Rest.GeDataDetails();
        SBG018Rest.GeDataDetails GeDataDetail02 = new  SBG018Rest.GeDataDetails();
        GeData.GeDataDetails = new  SBG018Rest.GeDataDetails[] {GeDataDetail01, GeDataDetail02};
        GeData.Status = 'Z5';
        GeData.TransforDate = String.valueOf(Date.today());//'20210113';
        GeDataDetail01.ProductCode = 'testSBG018';
        GeDataDetail01.Plant = 'CCTV';
        GeDataDetail01.Department = 'LS';
        GeDataDetail01.FGSP = 'SP';
        GeDataDetail01.Qty = '11';
        GeDataDetail01.TradeType = 'Taxation';
        GeDataDetail02.ProductCode = 'testSBG018';
        // 用于触发异常 进入Catch
        GeDataDetail02.Plant = 'CC31';
        GeDataDetail02.Department = 'LS';
        GeDataDetail02.FGSP = 'FG';
        GeDataDetail02.Qty = '11';
        GeDataDetail02.TradeType = 'Taxation';
        System.Test.startTest();
        //NFM110WebService.NFM110(ProductsDelivery);
        BatchIF_Log__c rowData = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM110', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData.Log__c) == false)
        NFM110Rest.executefuture(rowData.Id);
        System.Test.stopTest();
        Asset[] rslts = [select Id, Return_Flag__c, AccountId, Department_Class__c, Hospital__c, Product2Id, SerialNumber, SLMark__c, IF_Information_From__c, InstallDate from Asset];
        List<BatchIF_Log__c> rowbl = [Select Id, Log__c, ErrorLog__c from BatchIF_Log__c where RowDataFlg__c = false and Type__c = 'NFM110' order by CreatedDate desc];
        //System.assertEquals('1', rowbl[0].ErrorLog__c);
        System.assertEquals(1, rslts.size());
        if(rslts.size() > 0){
            System.assertEquals(1, rslts.size());
            System.assertEquals(false, rslts[0].Return_Flag__c);
            System.assertEquals(depart1.Id, rslts[0].AccountId);
            System.assertEquals(section1.Id, rslts[0].Department_Class__c);
            System.assertEquals(company.Id, rslts[0].Hospital__c);
            System.assertEquals(prd.Id, rslts[0].Product2Id);
            System.assertEquals(dnInfo1.SerialNoorLotNo, rslts[0]. SerialNumber);
            System.assertEquals('Serial Number', rslts[0]. SLMark__c);
            System.assertEquals(true, rslts[0]. IF_Information_From__c);
            System.assertEquals(null, rslts[0]. InstallDate);
        }
        BatchIF_Log__c rowData = NFMUtil.saveRowData(GeDatas.Monitoring, 'SBG018', GeDatas.GeData);
        SBG018Rest.main(rowData.Id);
        BatchIF_Log__c[] logs =[Select Id,
                                    Name,
                                    Log__c,
@@ -114,29 +278,19 @@
                                    retry_cnt__c
                                from BatchIF_Log__c
                                where RowDataFlg__c = true
                                and Type__c = 'NFM110'
                                and Type__c = 'SBG018'
                                order by CreatedDate desc ];
        logs[0].retry_cnt__c=1;
        update logs;
        System.assertEquals(1, logs[0].retry_cnt__c);
        System.assertEquals('NFM110', logs[0].Type__c);
        Id execBTId = Database.executeBatch(new LogAutoSendBatch(), 5);
        BatchIF_Log__c[] logss =[Select Id, Name, Log__c, ErrorLog__c, Log2__c,retry_cnt__c from BatchIF_Log__c where  id = :logs[0].id];
        System.assertEquals(1, logss[0].retry_cnt__c);
        List<BatchIF_Log__c> ll = [SELECT Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c, Log4__c, Log5__c, Log6__c,
                        Log7__c, Log8__c, Log9__c, Log10__c, Log11__c, Log12__c, MessageGroupNumber__c,Type__c,
                        retry_cnt__c
                   FROM BatchIF_Log__c
                  WHERE RowDataFlg__c = true
                    AND Type__c = :logs[0].Type__c AND CreatedDate >= :logs[0].CreatedDate  AND MessageGroupNumber__c >= :logs[0].MessageGroupNumber__c ];
        System.assertEquals(1, ll.size());
        Database.executeBatch(new LogAutoSendBatch(logs[0].Type__c,logs[0].MessageGroupNumber__c,logs[0].CreatedDate), 1);
        BatchIF_Log__c[] logsss =[Select Id, Name, Log__c, ErrorLog__c, Log2__c,retry_cnt__c from BatchIF_Log__c where  id = :logs[0].id];
        System.assertEquals(1, logsss[0].retry_cnt__c);
    }
}