@isTest private class NFM008WebServiceTest { static testMethod void resend_test() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM008TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM008TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List accountIds = new Id[] {company.Id, section.Id, depart.Id}; List accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c]; Product2 prd = new Product2(); prd.ProductCode_Ext__c = 'NFM008Prd1'; prd.ProductCode = 'NFM008Prd1'; prd.Name = 'NFM008Prd1'; prd.Manual_Entry__c = false; insert prd; Asset ast = new Asset(); ast.Name = 'NFM008Ast1'; ast.Product2Id = prd.Id; ast.SerialNumber = '2577010001675'; ast.Hospital__c = accList[0].Id; ast.Department_Class__c = accList[1].Id; ast.AccountId = accList[2].Id; insert ast; User loginUser = [Select Id, Alias, Province__c from User where Id =: UserInfo.getUserId()]; loginUser.Batch_User__c = true; update loginUser; NFM008WebService.InstallationInfo InstallationInfo = new NFM008WebService.InstallationInfo(); NFM008WebService.InstallationInformation InstallationInformation = new NFM008WebService.InstallationInformation(); NFM008WebService.InstallationInfoH InstallationInfoH = new NFM008WebService.InstallationInfoH(); InstallationInfo.InstallationInfoH = InstallationInfoH; NFM008WebService.InstallationInfoI InstallationInfoI = new NFM008WebService.InstallationInfoI(); InstallationInfo.InstallationInfoI = new NFM008WebService.InstallationInfoI[] { InstallationInfoI }; InstallationInformation.InstallationInfo = new NFM008WebService.InstallationInfo[] { InstallationInfo }; // Monitoringの設定 Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); InstallationInformation.Monitoring = new NFMUtil.Monitoring(); InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '21'; // update InstallationInfoH.PostingDate = '20120112'; InstallationInfoH.CompanyCode = accList[0].Management_Code_Auto__c; InstallationInfoH.DepartmentCode = accList[2].Management_Code_Auto__c; InstallationInfoI.MaterialNo = 'NFM008Prd1'; InstallationInfoI.SerialNo = '2577010001675'; InstallationInfoI.InstallationDateI = '20120118'; InstallationInfoI.SLMark = 'L'; InstallationInfoI.GuaranteePeriod = '20131021'; InstallationInfoI.Location = '病房'; InstallationInfoI.ReturnExchangeReplenishMark = '3'; InstallationInfoI.PurposeOfAdvice = '3'; System.Test.startTest(); NFM008WebService.NFM008(InstallationInformation); System.Test.stopTest(); String productSerialNo = InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo; List astList = [select Id, Product2.ProductCode, SerialNumber, Product_Serial_No__c, Product2Id, AccountId, Department_Class__c, Hospital__c, Posting_Date__c, InstallDate, SLMark__c, Guarantee_period_for_products__c, Installation_Site__c from Asset where Product_Serial_No__c = :productSerialNo and Information_From__c <> '失单']; System.assertEquals(1, astList.size()); if (astList.size() == 1) { //System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoH.PostingDate), astList[0].Posting_Date__c); //System.assertEquals(accList[2].Id, astList[0].AccountId); //System.assertEquals(accList[1].Id, astList[0].Department_Class__c); //System.assertEquals(accList[0].Id, astList[0].Hospital__c); //System.assertEquals(InstallationInfoI.MaterialNo, astList[0].Product2.ProductCode); //System.assertEquals(InstallationInfoI.SerialNo, astList[0].SerialNumber); //System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoI.InstallationDateI), astList[0].InstallDate); //System.assertEquals(InstallationInfoI.SLMark, astList[0].SLMark__c); //System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoI.GuaranteePeriod), astList[0].Guarantee_period_for_products__c); //System.assertEquals(InstallationInfoI.Location, astList[0].Installation_Site__c); } List rowbl = [Select Id, Log__c, ErrorLog__c from BatchIF_Log__c where RowDataFlg__c = true and Type__c = 'NFM008' order by CreatedDate desc]; System.assertEquals(1, rowbl.size()); rowbl[0].retry_cnt__c = 1; update rowbl; NFM008WebService.execute(rowbl[0].id); List bl = [Select Id, Is_Error__c, Type__c, Log__c, ErrorLog__c,retry_cnt__c from BatchIF_Log__c where Id = :rowbl[0].id]; //System.assertEquals(1, bl.size()); //System.assertEquals(0, bl[0].retry_cnt__c); } static testMethod void testNFM008_void() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM008TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM008TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List accountIds = new Id[] {company.Id, section.Id, depart.Id}; List accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c]; Product2 prd = new Product2(); prd.ProductCode_Ext__c = 'NFM008Prd1'; prd.ProductCode = 'NFM008Prd1'; prd.Name = 'NFM008Prd1'; prd.Manual_Entry__c = false; insert prd; // null NFM008WebService.NFM008(null); NFM008WebService.InstallationInfo InstallationInfo = new NFM008WebService.InstallationInfo(); NFM008WebService.InstallationInformation InstallationInformation = new NFM008WebService.InstallationInformation(); InstallationInformation.InstallationInfo = new NFM008WebService.InstallationInfo[] { InstallationInfo }; // Monitoringをセットしない NFM008WebService.NFM008(InstallationInformation); Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); InstallationInformation.Monitoring = new NFMUtil.Monitoring(); InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '01'; // InstallationInfoHをセットしない NFM008WebService.NFM008(InstallationInformation); NFM008WebService.InstallationInfoH InstallationInfoH = new NFM008WebService.InstallationInfoH(); InstallationInfo.InstallationInfoH = InstallationInfoH; // InstallationInfoIをセットしない InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '02'; NFM008WebService.NFM008(InstallationInformation); NFM008WebService.InstallationInfoI InstallationInfoI = new NFM008WebService.InstallationInfoI(); InstallationInfo.InstallationInfoI = new NFM008WebService.InstallationInfoI[] { InstallationInfoI }; // 病院と診療科の管理コードをセットしない InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '03'; NFM008WebService.NFM008(InstallationInformation); InstallationInfoH.CompanyCode = 'NFM008TestABCD'; InstallationInfoH.DepartmentCode = 'NFM008TestDCBA'; // 病院と診療科の管理コードが存在しない InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '04'; NFM008WebService.NFM008(InstallationInformation); InstallationInfoH.CompanyCode = accList[0].Management_Code_Auto__c; // 診療科の管理コードが存在しない InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '05'; NFM008WebService.NFM008(InstallationInformation); InstallationInfoH.CompanyCode = accList[0].Management_Code_Auto__c; InstallationInfoH.DepartmentCode = accList[2].Management_Code_Auto__c; // InstallationInfoIの必須項目をセットしない InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '06'; NFM008WebService.NFM008(InstallationInformation); InstallationInfoI.MaterialNo = 'NFM008Prd1'; // 必須項目をセットしない InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '08'; NFM008WebService.NFM008(InstallationInformation); InstallationInfoI.MaterialNo = 'NFM008TstPrd1234'; InstallationInfoI.SerialNo = '2577010001675'; // 商品コードが存在しない InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '07'; NFM008WebService.NFM008(InstallationInformation); Asset[] rslts = [select Id from Asset]; System.assertEquals(0, rslts.size()); } static testMethod void testNFM008_insert() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM008TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM008TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List accountIds = new Id[] {company.Id, section.Id, depart.Id}; List accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c]; Product2 prd = new Product2(); prd.ProductCode_Ext__c = 'NFM008Prd1'; prd.ProductCode = 'NFM008Prd1'; prd.Name = 'NFM008Prd1'; prd.Manual_Entry__c = false; insert prd; Asset ast = new Asset(); ast.Name = 'NFM008Ast1'; ast.Product2Id = prd.Id; ast.SerialNumber = '2577010001675'; ast.Hospital__c = accList[0].Id; ast.Department_Class__c = accList[1].Id; ast.AccountId = accList[2].Id; insert ast; Asset ast2 = new Asset(); ast2.Name = 'NFM008Ast1'; ast2.Product2Id = prd.Id; ast2.SerialNumber = '2577010001676'; ast2.Hospital__c = accList[0].Id; ast2.Department_Class__c = accList[1].Id; ast2.AccountId = accList[2].Id; insert ast2; NFM008WebService.InstallationInfo InstallationInfo = new NFM008WebService.InstallationInfo(); NFM008WebService.InstallationInformation InstallationInformation = new NFM008WebService.InstallationInformation(); NFM008WebService.InstallationInfoH InstallationInfoH = new NFM008WebService.InstallationInfoH(); InstallationInfo.InstallationInfoH = InstallationInfoH; NFM008WebService.InstallationInfoI InstallationInfoI1 = new NFM008WebService.InstallationInfoI(); NFM008WebService.InstallationInfoI InstallationInfoI2 = new NFM008WebService.InstallationInfoI(); InstallationInfo.InstallationInfoI = new NFM008WebService.InstallationInfoI[] { InstallationInfoI1, InstallationInfoI2}; InstallationInformation.InstallationInfo = new NFM008WebService.InstallationInfo[] { InstallationInfo }; // Monitoringの設定 Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); InstallationInformation.Monitoring = new NFMUtil.Monitoring(); InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '11'; // insert InstallationInfoH.PostingDate = '20110112'; InstallationInfoH.CompanyCode = '0' + accList[0].Management_Code_Auto__c; InstallationInfoH.DepartmentCode = '0' + accList[2].Management_Code_Auto__c; InstallationInfoH.PurposeOfAdvice = '2'; InstallationInfoI1.MaterialNo = 'NFM008Prd1'; InstallationInfoI1.SerialNo = '2577010001675'; InstallationInfoI1.InstallationDateI = '20110118'; InstallationInfoI1.SLMark = 'S'; InstallationInfoI1.GuaranteePeriod = '20121021'; InstallationInfoI1.Location = '门诊'; InstallationInfoI1.ReturnExchangeReplenishMark = '2'; InstallationInfoI1.PurposeOfAdvice = '2'; InstallationInfoI2.MaterialNo = 'NFM008Prd1'; InstallationInfoI2.SerialNo = '2577010001676'; InstallationInfoI2.InstallationDateI = '20110118'; InstallationInfoI2.SLMark = 'S'; InstallationInfoI2.GuaranteePeriod = '20121021'; InstallationInfoI2.Location = '门诊'; InstallationInfoI2.ReturnExchangeReplenishMark = '2'; InstallationInfoI2.PurposeOfAdvice = '2'; System.Test.startTest(); NFM008WebService.NFM008(InstallationInformation); System.Test.stopTest(); String productSerialNo = InstallationInfoI1.MaterialNo + ':' + InstallationInfoI1.SerialNo; List astList = [select Id, Product2.ProductCode, SerialNumber, Product_Serial_No__c, Product2Id, AccountId, Department_Class__c, Hospital__c, Posting_Date__c, InstallDate, SLMark__c, Guarantee_period_for_products__c, Installation_Site__c from Asset where Product_Serial_No__c = :productSerialNo and Information_From__c <> '失单']; System.assertEquals(1, astList.size()); //if (astList.size() == 1) { // System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoH.PostingDate), astList[0].Posting_Date__c); // System.assertEquals(accList[2].Id, astList[0].AccountId); // System.assertEquals(accList[1].Id, astList[0].Department_Class__c); // System.assertEquals(accList[0].Id, astList[0].Hospital__c); // System.assertEquals(InstallationInfoI1.MaterialNo, astList[0].Product2.ProductCode); // System.assertEquals(InstallationInfoI1.SerialNo, astList[0].SerialNumber); // System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoI1.InstallationDateI), astList[0].InstallDate); // System.assertEquals(InstallationInfoI1.SLMark, astList[0].SLMark__c); // System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoI1.GuaranteePeriod), astList[0].Guarantee_period_for_products__c); // System.assertEquals(InstallationInfoI1.Location, astList[0].Installation_Site__c); //} productSerialNo = InstallationInfoI2.MaterialNo + ':' + InstallationInfoI2.SerialNo; astList = [select Id, Product2.ProductCode, SerialNumber, Product_Serial_No__c, Product2Id, AccountId, Department_Class__c, Hospital__c, Posting_Date__c, InstallDate, SLMark__c, Guarantee_period_for_products__c, Installation_Site__c from Asset where Product_Serial_No__c = :productSerialNo and Information_From__c <> '失单']; System.assertEquals(1, astList.size()); } static testMethod void testNFM008_update() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM008TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM008TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List accountIds = new Id[] {company.Id, section.Id, depart.Id}; List accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c]; Product2 prd = new Product2(); prd.ProductCode_Ext__c = 'NFM008Prd1'; prd.ProductCode = 'NFM008Prd1'; prd.Name = 'NFM008Prd1'; prd.Manual_Entry__c = false; insert prd; Asset ast = new Asset(); ast.Name = 'NFM008Ast1'; ast.Product2Id = prd.Id; ast.SerialNumber = '2577010001675'; ast.Hospital__c = accList[0].Id; ast.Department_Class__c = accList[1].Id; ast.AccountId = accList[2].Id; insert ast; User loginUser = [Select Id, Alias, Province__c from User where Id =: UserInfo.getUserId()]; loginUser.Batch_User__c = true; update loginUser; NFM008WebService.InstallationInfo InstallationInfo = new NFM008WebService.InstallationInfo(); NFM008WebService.InstallationInformation InstallationInformation = new NFM008WebService.InstallationInformation(); NFM008WebService.InstallationInfoH InstallationInfoH = new NFM008WebService.InstallationInfoH(); InstallationInfo.InstallationInfoH = InstallationInfoH; NFM008WebService.InstallationInfoI InstallationInfoI = new NFM008WebService.InstallationInfoI(); InstallationInfo.InstallationInfoI = new NFM008WebService.InstallationInfoI[] { InstallationInfoI }; InstallationInformation.InstallationInfo = new NFM008WebService.InstallationInfo[] { InstallationInfo }; // Monitoringの設定 Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); InstallationInformation.Monitoring = new NFMUtil.Monitoring(); InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '21'; // update InstallationInfoH.PostingDate = '20120112'; InstallationInfoH.CompanyCode = accList[0].Management_Code_Auto__c; InstallationInfoH.DepartmentCode = accList[2].Management_Code_Auto__c; InstallationInfoI.MaterialNo = 'NFM008Prd1'; InstallationInfoI.SerialNo = '2577010001675'; InstallationInfoI.InstallationDateI = '20120118'; InstallationInfoI.SLMark = 'L'; InstallationInfoI.GuaranteePeriod = '20131021'; InstallationInfoI.Location = '病房'; InstallationInfoI.ReturnExchangeReplenishMark = '3'; InstallationInfoI.PurposeOfAdvice = '3'; System.Test.startTest(); NFM008WebService.NFM008(InstallationInformation); System.Test.stopTest(); String productSerialNo = InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo; List astList = [select Id, Product2.ProductCode, SerialNumber, Product_Serial_No__c, Product2Id, AccountId, Department_Class__c, Hospital__c, Posting_Date__c, InstallDate, SLMark__c, Guarantee_period_for_products__c, Installation_Site__c from Asset where Product_Serial_No__c = :productSerialNo and Information_From__c <> '失单']; System.assertEquals(1, astList.size()); if (astList.size() == 1) { //System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoH.PostingDate), astList[0].Posting_Date__c); //System.assertEquals(accList[2].Id, astList[0].AccountId); //System.assertEquals(accList[1].Id, astList[0].Department_Class__c); //System.assertEquals(accList[0].Id, astList[0].Hospital__c); //System.assertEquals(InstallationInfoI.MaterialNo, astList[0].Product2.ProductCode); //System.assertEquals(InstallationInfoI.SerialNo, astList[0].SerialNumber); //System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoI.InstallationDateI), astList[0].InstallDate); //System.assertEquals(InstallationInfoI.SLMark, astList[0].SLMark__c); //System.assertEquals(NFMUtil.parseStr2Date(InstallationInfoI.GuaranteePeriod), astList[0].Guarantee_period_for_products__c); //System.assertEquals(InstallationInfoI.Location, astList[0].Installation_Site__c); } } static testMethod void testNFM008_delete() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM008TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM008TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List accountIds = new Id[] {company.Id, section.Id, depart.Id}; List accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c]; Product2 prd = new Product2(); prd.ProductCode_Ext__c = 'NFM008Prd1'; prd.ProductCode = 'NFM008Prd1'; prd.Name = 'NFM008Prd1'; prd.Manual_Entry__c = false; insert prd; User loginUser = [Select Id, Alias, Province__c from User where Id =: UserInfo.getUserId()]; loginUser.Batch_User__c = true; update loginUser; NFM008WebService.InstallationInfo InstallationInfo = new NFM008WebService.InstallationInfo(); NFM008WebService.InstallationInformation InstallationInformation = new NFM008WebService.InstallationInformation(); NFM008WebService.InstallationInfoH InstallationInfoH = new NFM008WebService.InstallationInfoH(); InstallationInfo.InstallationInfoH = InstallationInfoH; NFM008WebService.InstallationInfoI InstallationInfoI = new NFM008WebService.InstallationInfoI(); InstallationInfo.InstallationInfoI = new NFM008WebService.InstallationInfoI[] { InstallationInfoI }; InstallationInformation.InstallationInfo = new NFM008WebService.InstallationInfo[] { InstallationInfo }; // Monitoringの設定 Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); InstallationInformation.Monitoring = new NFMUtil.Monitoring(); InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '31'; // InstallationInfoI.PurposeOfAdvice = 1 InstallationInfoH.PostingDate = '20120112'; InstallationInfoH.CompanyCode = accList[0].Management_Code_Auto__c; InstallationInfoH.DepartmentCode = accList[2].Management_Code_Auto__c; InstallationInfoH.PurposeOfAdvice = '3'; InstallationInfoI.MaterialNo = 'NFM008Prd1'; InstallationInfoI.SerialNo = '2577010001675'; InstallationInfoI.InstallationDateI = '20120118'; InstallationInfoI.SLMark = 'L'; InstallationInfoI.GuaranteePeriod = '20131021'; InstallationInfoI.Location = '病房'; InstallationInfoI.ReturnExchangeReplenishMark = '3'; InstallationInfoI.PurposeOfAdvice = '1'; //List astList = [select Id, Return_Flag__c from Asset where Product_Serial_No__c = :productSerialNo and Information_From__c <> '失单']; //System.assertEquals(1, astList.size()); //System.assertEquals(false, astList[0].Return_Flag__c); System.Test.startTest(); NFM008WebService.NFM008(InstallationInformation); System.Test.stopTest(); String productSerialNo = InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo; List astList = [select Id, Return_Flag__c from Asset where Product_Serial_No__c = :productSerialNo and Information_From__c <> '失单']; //System.assertEquals(1, astList.size()); //System.assertEquals(true, astList[0].Return_Flag__c); } static testMethod void testNFM008_return() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM008TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM008TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List accountIds = new Id[] {company.Id, section.Id, depart.Id}; List accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c]; Product2 prd = new Product2(); prd.ProductCode_Ext__c = 'NFM008Prd1'; prd.ProductCode = 'NFM008Prd1'; prd.Name = 'NFM008Prd1'; prd.Manual_Entry__c = false; insert prd; NFM008WebService.InstallationInfo InstallationInfo = new NFM008WebService.InstallationInfo(); NFM008WebService.InstallationInformation InstallationInformation = new NFM008WebService.InstallationInformation(); NFM008WebService.InstallationInfoH InstallationInfoH = new NFM008WebService.InstallationInfoH(); InstallationInfo.InstallationInfoH = InstallationInfoH; NFM008WebService.InstallationInfoI InstallationInfoI = new NFM008WebService.InstallationInfoI(); InstallationInfo.InstallationInfoI = new NFM008WebService.InstallationInfoI[] { InstallationInfoI }; InstallationInformation.InstallationInfo = new NFM008WebService.InstallationInfo[] { InstallationInfo }; // Monitoringの設定 Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); InstallationInformation.Monitoring = new NFMUtil.Monitoring(); InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '41'; // InstallationInfoI.ReturnExchangeReplenishMark = 1 にてdelete InstallationInfoH.PostingDate = '20120112'; InstallationInfoH.CompanyCode = accList[0].Management_Code_Auto__c; InstallationInfoH.DepartmentCode = accList[2].Management_Code_Auto__c; InstallationInfoH.PurposeOfAdvice = '3'; InstallationInfoI.MaterialNo = 'NFM008Prd1'; InstallationInfoI.SerialNo = '2577010001676'; InstallationInfoI.InstallationDateI = '20120118'; InstallationInfoI.SLMark = 'L'; InstallationInfoI.GuaranteePeriod = '20131021'; InstallationInfoI.Location = '病房'; InstallationInfoI.ReturnExchangeReplenishMark = '1'; InstallationInfoH.PurposeOfAdvice = '3'; String productSerialNo = InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo; //List astList = [select Id, Return_Flag__c from Asset where Product_Serial_No__c = :productSerialNo]; //System.assertEquals(1, astList.size()); //System.assertEquals(false, astList[0].Return_Flag__c); System.Test.startTest(); NFM008WebService.NFM008(InstallationInformation); System.Test.stopTest(); List astList = [select Id, Return_Flag__c from Asset where Product_Serial_No__c = :productSerialNo]; //System.assertEquals(1, astList.size()); //System.assertEquals(true, astList[0].Return_Flag__c); // 再度 InstallationInfoI.ReturnExchangeReplenishMark = 1 にてdelete InstallationInformation.Monitoring.MessageGroupNumber = nowStr + '42'; NFM008WebService.NFM008(InstallationInformation); astList = [select Id, Return_Flag__c from Asset where Product_Serial_No__c = :productSerialNo]; //System.assertEquals(1, astList.size()); //System.assertEquals(true, astList[0].Return_Flag__c); } }