@isTest private class ApprovalHistoryControllerTest { private static User getUser() { String timenow = Datetime.now().format('yyyyMMddHHmmss'); User user1 = new User(Test_staff__c = true, LastName = 'TestMao1', FirstName = 'TestMaoF1', Alias = 'hp1', Email = 'Test1@sunbridge.com', Username = 'Test1' + timenow + '@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP',TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = System.Label.ProfileId_SystemAdmin, Dept__c = '医疗华北营业本部', Job_Category__c = '销售服务', Province__c = '北京'); //List p = [Select Id From Profile Where Name = '2S6_销售本部窗口&营业助理']; //System.assertEquals(p.size(), 1); System.runAs(new User(Id = Userinfo.getUserId())) { insert user1; } return user1; } static User setNewUser(String firstName, String lastName, String aName, String email) { User user = new User(Test_staff__c = true); user.LastName = ' ' + lastName; user.FirstName = firstName; user.Alias = aName; user.Email = email; user.Username = 'Olympus' + email; user.CommunityNickname = aName; user.IsActive = true; user.EmailEncodingKey = 'ISO-2022-JP'; user.TimeZoneSidKey = 'Asia/Tokyo'; user.LocaleSidKey = 'ja_JP'; user.LanguageLocaleKey = 'ja'; user.ProfileId = System.Label.ProfileId_SystemAdmin; user.Job_Category__c = '销售推广'; user.Province__c = '上海市'; user.Use_Start_Date__c = Date.today().addMonths(-6); insert user; return user; } @testSetup static void methodName() { User user = getUser(); Account newAccount = new Account(); newAccount.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; newAccount.Name = 'test hospital'; newAccount.Is_Active__c = '有効'; newAccount.OwnerId = user.Id; //WLIG-BS2CJW --执行测试类报异常MIXED_DML_OPERATION ---20200807---update By rentongxiao ---Start // insert hospital; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert newAccount; } } } @isTest static void getInitDataTest(){ User user = getUser(); System.runAs(user) { RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp']; Account acc1 = new Account(); acc1.RecordTypeId = rectCo.Id; acc1.Name = 'HP test2'; acc1.Is_Active__c = '草案中'; acc1.Is_upload_file__c = true; insert acc1; User toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); User user5 = setNewUser('ztest05', 'User005', 'Zhang005', 'test005@excemaple.com'); // 病院を作る 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.OwnerId = toUser.Id; //WLIG-BS2CJW --执行测试类报异常MIXED_DML_OPERATION ---20200807---update By rentongxiao ---Start // insert hospital; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert hospital; } } //WLIG-BS2CJW ---20200807---update By rentongxiao ---End //新建 客户变更申请 Account_Delay_Apply__c ada = new Account_Delay_Apply__c(); ada.Hospital__c = hospital.Id; ada.ChangeReason__c = '地址错误'; ada.Is_Active__c = '草案中'; ada.Is_upload_file__c = true; ada.OpenWindow__c = user5.Id; ada.InstitutionalType__c = '非医疗机构'; ada.CreatedById = toUser.Id; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert ada; } } String testlink = '医院新建审批_事业推进部'; Approval.ProcessSubmitRequest r = new Approval.ProcessSubmitRequest(); r.setObjectId(acc1.Id); Approval.process(r); Approval.ProcessSubmitRequest b = new Approval.ProcessSubmitRequest(); b.setObjectId(ada.Id); Approval.process(b); // String strid = r.getSubmitterId(); //'/apex/NewAccountExamine?AccId='+AccId+'&testlink='+testlink+'&' // PageReference page = new PageReference('/apex/?AccId='+acc1.Id+'&testlink='+testlink+'&'); // System.Test.setCurrentPage(page); ApprovalHistoryController.getInitData(acc1.id,'Account'); ApprovalHistoryController.getInitData(ada.id,'Account_Delay_Apply__c'); } // System.assertEquals(0,result.size()); } @isTest static void getInitDataTest2(){ User user = getUser(); System.runAs(user) { SolutionProjectRequirements__c solProject = new SolutionProjectRequirements__c(); solProject.Name = 'Test'; solProject.HospitalOwner__c = user.Id; solProject.Sales_Assistant__c = user.Id; solProject.GIR_Assistant__c = user.Id; solProject.Project_Type__c = '新建大楼'; solProject.Purpose_Proposal__c = '促进销售商谈'; insert solProject; Solution_Programme__c solProgramme1 = new Solution_Programme__c(); solProgramme1.Name = 'test'; solProgramme1.SolutionProjectRequirements__c = solProject.Id; solProgramme1.Business_Promotion__c = user.id; solProgramme1.Scheme_Type__c = '初次'; insert solProgramme1; User toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); User user5 = setNewUser('ztest05', 'User005', 'Zhang005', 'test005@excemaple.com'); //WLIG-BS2CJW ---20200807---update By rentongxiao ---End 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.OwnerId = toUser.Id; //WLIG-BS2CJW --执行测试类报异常MIXED_DML_OPERATION ---20200807---update By rentongxiao ---Start // insert hospital; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert hospital; } } //新建 客户变更申请 Account_Delay_Apply__c ada = new Account_Delay_Apply__c(); ada.Hospital__c = hospital.Id; ada.ChangeReason__c = '地址错误'; ada.Is_Active__c = '草案中'; ada.Is_upload_file__c = true; ada.OpenWindow__c = user5.Id; ada.InstitutionalType__c = '非医疗机构'; ada.CreatedById = toUser.Id; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert ada; } } String testlink = '医院新建审批_事业推进部'; Approval.ProcessSubmitRequest c = new Approval.ProcessSubmitRequest(); c.setObjectId(solProgramme1.Id); Approval.process(c); ApprovalHistoryController.getInitData(solProgramme1.id,'Solution_Programme__c'); } // System.assertEquals(0,result.size()); } @isTest static void searchUsersEmptyListTest(){ List result = ApprovalHistoryController.searchUsers(null); System.assertEquals(0,result.size()); } @isTest static void searchUsersNotEmptyListTest(){ List users = [SELECT Id, FirstName, LastName FROM User LIMIT 1]; Id [] fixedSearchResults= new Id[1]; fixedSearchResults[0] = users.get(0).Id; Test.setFixedSearchResults(fixedSearchResults); List result = ApprovalHistoryController.searchUsers(users.get(0).LastName); System.assertNotEquals(0,result.size()); } @isTest static void submitForApprovalNoNextApproverTest(){ List accounts = [SELECT Id FROM Account LIMIT 1]; try{ ApprovalHistoryController.submitForApproval(accounts.get(0).Id, 'string comments', ''); }catch(Exception e){ } } @isTest static void submitForApprovalWithNextApproverTest(){ List users = [SELECT Id, FirstName, LastName FROM User LIMIT 1]; List accounts = [SELECT Id FROM Account LIMIT 1]; try{ ApprovalHistoryController.submitForApproval(accounts.get(0).Id, 'string comments', users.get(0).Id); }catch(Exception e){ } } @isTest static void getApprovalHistoryTest(){ List accounts = [SELECT Id FROM Account LIMIT 1]; ApprovalHistoryController.getApprovalHistory(accounts.get(0).Id); } @isTest static void processStepTest(){ User user = getUser(); System.runAs(user) { RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp']; Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-01'; al.Level1_Sys_No__c = '999999'; insert al; Account acc1 = new Account(); acc1.RecordTypeId = rectCo.Id; acc1.Name = 'HP test2'; acc1.Is_Active__c = '草案中'; acc1.HospitalType__c = '企业集团'; acc1.Is_upload_file__c = true; acc1.State_Master__c = al.id; acc1.InstitutionalType__c = '非医疗机构'; insert acc1; // User toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); // User user5 = setNewUser('ztest05', 'User005', 'Zhang005', 'test005@excemaple.com'); // // 病院を作る // 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.OwnerId = toUser.Id; // // insert hospital; // if (Test.isRunningTest()) { // System.runAs(new User(Id = UserInfo.getUserId())){ // insert hospital; // } // } Approval.ProcessSubmitRequest r = new Approval.ProcessSubmitRequest(); r.setObjectId(acc1.Id); Approval.process(r); List users = [select Id, FirstName, LastName FROM User LIMIT 1]; // List workItems = new List(); // workItems.add(new ProcessInstanceWorkitem(Id = '04i3h000001L5fGAAS')); // insert workItems; // 创建一个Map以表示Account对象 Map accountMap = new Map(); accountMap.put('CustomizePageFlg__c', true); accountMap.put('InstitutionalType__c', null); accountMap.put('RejectionReason__c', '地址错误'); accountMap.put('HospitalType__c', null); Map accountMap1 = new Map(); accountMap1.put('CustomizePageFlg__c', true); accountMap1.put('InstitutionalType__c', '非医疗机构'); accountMap1.put('RejectionReason__c', '地址错误'); accountMap1.put('HospitalType__c', null); Map accountMap11 = new Map(); accountMap11.put('CustomizePageFlg__c', true); accountMap11.put('InstitutionalType__c', '医疗机构'); accountMap11.put('RejectionReason__c', '地址错误'); accountMap11.put('HospitalType__c', '企业集团'); Map accountMap111 = new Map(); accountMap111.put('CustomizePageFlg__c', true); accountMap111.put('InstitutionalType__c', '非医疗机构'); accountMap111.put('RejectionReason__c', null); accountMap111.put('HospitalType__c', '企业集团'); Map accountMap2 = new Map(); accountMap2.put('CustomizePageFlg__c', true); accountMap2.put('InstitutionalType__c', '医疗机构'); accountMap2.put('RejectionReason__c', null); accountMap2.put('HospitalType__c', '企业集团'); accountMap2.put('AssociatedHospital__c', acc1.id); Map accountMap22 = new Map(); accountMap22.put('CustomizePageFlg__c', true); accountMap22.put('InstitutionalType__c', '医疗机构'); accountMap22.put('RejectionReason__c', '重复'); accountMap22.put('HospitalType__c', '企业集团'); accountMap22.put('AssociatedHospital__c', null); // 将Map转换为JSON格式的字符串 String accountJSON = JSON.serialize(accountMap); String accountJSON1 = JSON.serialize(accountMap1); String accountJSON11 = JSON.serialize(accountMap11); String accountJSON111 = JSON.serialize(accountMap111); String accountJSON2 = JSON.serialize(accountMap2); String accountJSON22 = JSON.serialize(accountMap22); ApprovalHistoryController.processStep(acc1.id, 'comments', null, 'approve','Account','批准',accountJSON); ApprovalHistoryController.processStep(acc1.id, 'comments', null, 'approve','Account','批准',accountJSON1); ApprovalHistoryController.processStep(acc1.id, 'comments', null, 'approve','Account','批准',accountJSON11); ApprovalHistoryController.processStep(acc1.id, 'comments', null, 'approve','Account','批准',accountJSON111); ApprovalHistoryController.processStep(acc1.id, 'comments', null, 'approve','Account','拒绝',accountJSON2); ApprovalHistoryController.processStep(acc1.id, 'comments', null, 'approve','Account','拒绝',accountJSON22); } } @isTest static void processStepTest4(){ User user = getUser(); System.runAs(user) { RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp']; Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-01'; al.Level1_Sys_No__c = '999999'; insert al; Account acc1 = new Account(); acc1.RecordTypeId = rectCo.Id; acc1.Name = 'HP test2'; acc1.Is_Active__c = '草案中'; acc1.HospitalType__c = '企业集团'; acc1.Is_upload_file__c = true; acc1.State_Master__c = al.id; acc1.InstitutionalType__c = '非医疗机构'; acc1.CustomizePageFlg__c = true; insert acc1; // 提交审批请求 Approval.ProcessSubmitRequest submitReq = new Approval.ProcessSubmitRequest(); submitReq.setObjectId(acc1.Id); Approval.ProcessResult result = Approval.process(submitReq); // 验证审批是否成功提交 System.assert(result.isSuccess(), '审批提交失败'); // 查询审批工作项 List workItems = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :acc1.Id ]; // 执行批准操作 ProcessInstanceWorkitem workItem = workItems[0]; Approval.ProcessWorkitemRequest approveReq = new Approval.ProcessWorkitemRequest(); approveReq.setAction('Approve'); approveReq.setComments('批准审批流'); approveReq.setNextApproverIds(new Id[] { UserInfo.getUserId() }); approveReq.setWorkitemId(workItem.Id); Approval.ProcessResult approveResult = Approval.process(approveReq); // 查询审批工作项 List workItems1 = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :acc1.Id ]; Oly_TriggerHandler.bypass('UpdateContractAimAmountHandler'); // 执行批准操作 ProcessInstanceWorkitem workItem1 = workItems1[0]; Approval.ProcessWorkitemRequest approveReq1 = new Approval.ProcessWorkitemRequest(); approveReq1.setAction('Approve'); approveReq1.setComments('批准审批流'); approveReq1.setNextApproverIds(new Id[] { UserInfo.getUserId() }); approveReq1.setWorkitemId(workItem1.Id); Approval.ProcessResult approveResult1 = Approval.process(approveReq1); List users = [select Id, FirstName, LastName FROM User LIMIT 1]; // 创建一个Map以表示Account对象 Map accountMap111 = new Map(); accountMap111.put('InstitutionalType__c', '非医疗机构'); accountMap111.put('HospitalType__c', '高等院校'); Map accountMap2 = new Map(); accountMap2.put('InstitutionalType__c', '医疗机构'); accountMap2.put('RejectionReason__c', null); String accountJSON111 = JSON.serialize(accountMap111); String accountJSON2 = JSON.serialize(accountMap2); ApprovalHistoryController.processStep(acc1.id, 'comments', UserInfo.getUserId(), 'approve','Account','批准',accountJSON111); ApprovalHistoryController.processStep(acc1.id, 'comments', null, 'Rejected','Account','拒绝',accountJSON2); } } @isTest static void processStepTest6(){ User user = getUser(); System.runAs(user) { RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp']; Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-01'; al.Level1_Sys_No__c = '999999'; insert al; Account acc1 = new Account(); acc1.RecordTypeId = rectCo.Id; acc1.Name = 'HP test2'; acc1.Is_Active__c = '草案中'; acc1.HospitalType__c = '企业集团'; acc1.Is_upload_file__c = true; acc1.State_Master__c = al.id; acc1.InstitutionalType__c = '非医疗机构'; insert acc1; User toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); User user5 = setNewUser('ztest05', 'User005', 'Zhang005', 'test005@excemaple.com'); // 病院を作る 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.OwnerId = toUser.Id; //WLIG-BS2CJW --执行测试类报异常MIXED_DML_OPERATION ---20200807---update By rentongxiao ---Start // insert hospital; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert hospital; } } //WLIG-BS2CJW ---20200807---update By rentongxiao ---End //新建 客户变更申请 Account_Delay_Apply__c ada = new Account_Delay_Apply__c(); ada.Hospital__c = hospital.Id; ada.ChangeReason__c = '地址错误'; ada.Is_Active__c = '草案中'; ada.Is_upload_file__c = true; ada.OpenWindow__c = user5.Id; ada.InstitutionalType__c = '非医疗机构'; ada.HospitalType__c = '企业集团'; ada.CreatedById = toUser.Id; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert ada; } } List users = [select Id, FirstName, LastName FROM User LIMIT 1]; // 提交审批请求 Approval.ProcessSubmitRequest submitReq = new Approval.ProcessSubmitRequest(); submitReq.setObjectId(ada.Id); Approval.ProcessResult result = Approval.process(submitReq); // 验证审批是否成功提交 System.assert(result.isSuccess(), '审批提交失败'); // 查询审批工作项 List workItems = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :ada.Id ]; Oly_TriggerHandler.bypass('AccountDelayApplyHandler'); // 执行批准操作 ProcessInstanceWorkitem workItem = workItems[0]; Approval.ProcessWorkitemRequest approveReq = new Approval.ProcessWorkitemRequest(); approveReq.setAction('Approve'); approveReq.setComments('批准审批流'); approveReq.setNextApproverIds(new Id[] { UserInfo.getUserId() }); approveReq.setWorkitemId(workItem.Id); Approval.ProcessResult approveResult = Approval.process(approveReq); // 查询审批工作项 List workItems1 = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :ada.Id ]; Oly_TriggerHandler.bypass('AccountDelayApplyHandler'); // 执行批准操作 ProcessInstanceWorkitem workItem1 = workItems1[0]; Approval.ProcessWorkitemRequest approveReq1 = new Approval.ProcessWorkitemRequest(); approveReq1.setAction('Approve'); approveReq1.setComments('批准审批流'); approveReq1.setNextApproverIds(new Id[] { UserInfo.getUserId() }); approveReq1.setWorkitemId(workItem1.Id); Approval.ProcessResult approveResult1 = Approval.process(approveReq1); // 创建一个Map以表示Account对象 Map AccountDelay1 = new Map(); AccountDelay1.put('InstitutionalType__c', '非医疗机构'); AccountDelay1.put('HospitalType__c', '高等院校'); Map AccountDelay2 = new Map(); AccountDelay2.put('InstitutionalType__c', null); // 将Map转换为JSON格式的字符串 String AccountDelayJson1 = JSON.serialize(AccountDelay1); String AccountDelayJson2 = JSON.serialize(AccountDelay2); String adaId = ada.id; ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','批准',AccountDelayJson1); ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','拒绝',AccountDelayJson2); } } @isTest static void processStepTest7(){ User user = getUser(); System.runAs(user) { RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp']; Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-01'; al.Level1_Sys_No__c = '999999'; insert al; Account acc1 = new Account(); acc1.RecordTypeId = rectCo.Id; acc1.Name = 'HP test2'; acc1.Is_Active__c = '草案中'; acc1.HospitalType__c = '企业集团'; acc1.Is_upload_file__c = true; acc1.State_Master__c = al.id; acc1.InstitutionalType__c = '非医疗机构'; insert acc1; User toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); User user5 = setNewUser('ztest05', 'User005', 'Zhang005', 'test005@excemaple.com'); // 病院を作る 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.OwnerId = toUser.Id; //WLIG-BS2CJW --执行测试类报异常MIXED_DML_OPERATION ---20200807---update By rentongxiao ---Start // insert hospital; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert hospital; } } //WLIG-BS2CJW ---20200807---update By rentongxiao ---End //新建 客户变更申请 Account_Delay_Apply__c ada = new Account_Delay_Apply__c(); ada.Hospital__c = hospital.Id; ada.ChangeReason__c = '地址错误'; ada.Is_Active__c = '草案中'; ada.Is_upload_file__c = true; ada.OpenWindow__c = user5.Id; ada.InstitutionalType__c = '非医疗机构'; ada.HospitalType__c = '企业集团'; ada.CreatedById = toUser.Id; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert ada; } } List users = [select Id, FirstName, LastName FROM User LIMIT 1]; // 提交审批请求 Approval.ProcessSubmitRequest submitReq = new Approval.ProcessSubmitRequest(); submitReq.setObjectId(ada.Id); Approval.ProcessResult result = Approval.process(submitReq); // 验证审批是否成功提交 System.assert(result.isSuccess(), '审批提交失败'); // 查询审批工作项 List workItems = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :ada.Id ]; Oly_TriggerHandler.bypass('AccountDelayApplyHandler'); // 执行批准操作 ProcessInstanceWorkitem workItem = workItems[0]; Approval.ProcessWorkitemRequest approveReq = new Approval.ProcessWorkitemRequest(); approveReq.setAction('Approve'); approveReq.setComments('批准审批流'); approveReq.setNextApproverIds(new Id[] { UserInfo.getUserId() }); approveReq.setWorkitemId(workItem.Id); Approval.ProcessResult approveResult = Approval.process(approveReq); // 查询审批工作项 List workItems1 = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :ada.Id ]; Oly_TriggerHandler.bypass('AccountDelayApplyHandler'); // 执行批准操作 ProcessInstanceWorkitem workItem1 = workItems1[0]; Approval.ProcessWorkitemRequest approveReq1 = new Approval.ProcessWorkitemRequest(); approveReq1.setAction('Approve'); approveReq1.setComments('批准审批流'); approveReq1.setNextApproverIds(new Id[] { UserInfo.getUserId() }); approveReq1.setWorkitemId(workItem1.Id); Approval.ProcessResult approveResult1 = Approval.process(approveReq1); // 创建一个Map以表示Account对象 Map AccountDelay1 = new Map(); AccountDelay1.put('InstitutionalType__c', '非医疗机构'); AccountDelay1.put('HospitalType__c', '企业集团'); AccountDelay1.put('WhetherRiskPassing__c', '否'); // 将Map转换为JSON格式的字符串 String AccountDelayJson1 = JSON.serialize(AccountDelay1); String adaId = ada.id; ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','批准',AccountDelayJson1); } } @isTest static void processStepTest8(){ User user = getUser(); System.runAs(user) { RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp']; Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-01'; al.Level1_Sys_No__c = '999999'; insert al; Account acc1 = new Account(); acc1.RecordTypeId = rectCo.Id; acc1.Name = 'HP test2'; acc1.Is_Active__c = '草案中'; acc1.HospitalType__c = '企业集团'; acc1.Is_upload_file__c = true; acc1.State_Master__c = al.id; acc1.InstitutionalType__c = '非医疗机构'; insert acc1; User toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); User user5 = setNewUser('ztest05', 'User005', 'Zhang005', 'test005@excemaple.com'); // 病院を作る 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.OwnerId = toUser.Id; //WLIG-BS2CJW --执行测试类报异常MIXED_DML_OPERATION ---20200807---update By rentongxiao ---Start // insert hospital; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert hospital; } } //WLIG-BS2CJW ---20200807---update By rentongxiao ---End //新建 客户变更申请 Account_Delay_Apply__c ada = new Account_Delay_Apply__c(); ada.Hospital__c = hospital.Id; ada.ChangeReason__c = '地址错误'; ada.Is_Active__c = '草案中'; ada.Is_upload_file__c = true; ada.OpenWindow__c = user5.Id; ada.InstitutionalType__c = '非医疗机构'; ada.HospitalType__c = '企业集团'; ada.CreatedById = toUser.Id; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert ada; } } List users = [select Id, FirstName, LastName FROM User LIMIT 1]; // 提交审批请求 Approval.ProcessSubmitRequest submitReq = new Approval.ProcessSubmitRequest(); submitReq.setObjectId(ada.Id); Approval.ProcessResult result = Approval.process(submitReq); // 验证审批是否成功提交 System.assert(result.isSuccess(), '审批提交失败'); // 查询审批工作项 List workItems = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :ada.Id ]; Oly_TriggerHandler.bypass('AccountDelayApplyHandler'); // 执行批准操作 ProcessInstanceWorkitem workItem = workItems[0]; Approval.ProcessWorkitemRequest approveReq = new Approval.ProcessWorkitemRequest(); approveReq.setAction('Approve'); approveReq.setComments('批准审批流'); approveReq.setNextApproverIds(new Id[] { UserInfo.getUserId() }); approveReq.setWorkitemId(workItem.Id); Approval.ProcessResult approveResult = Approval.process(approveReq); // 查询审批工作项 List workItems1 = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :ada.Id ]; // 创建一个Map以表示Account对象 Map AccountDelay1 = new Map(); AccountDelay1.put('InstitutionalType__c', '非医疗机构'); AccountDelay1.put('HospitalType__c', '高等院校'); Map AccountDelay2 = new Map(); AccountDelay2.put('InstitutionalType__c', null); // 将Map转换为JSON格式的字符串 String AccountDelayJson1 = JSON.serialize(AccountDelay1); String AccountDelayJson2 = JSON.serialize(AccountDelay2); String adaId = ada.id; ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','批准',AccountDelayJson1); ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','拒绝',AccountDelayJson2); } } @isTest static void processStepTest3(){ User user = getUser(); System.runAs(user) { SolutionProjectRequirements__c solProject = new SolutionProjectRequirements__c(); solProject.Name = 'Test'; solProject.HospitalOwner__c = user.Id; solProject.Sales_Assistant__c = user.Id; solProject.GIR_Assistant__c = user.Id; solProject.Project_Type__c = '新建大楼'; solProject.Purpose_Proposal__c = '促进销售商谈'; insert solProject; Solution_Programme__c solProgramme1 = new Solution_Programme__c(); solProgramme1.Name = 'test'; solProgramme1.SolutionProjectRequirements__c = solProject.Id; solProgramme1.Business_Promotion__c = user.id; solProgramme1.Scheme_Type__c = '初次'; insert solProgramme1; Approval.ProcessSubmitRequest c = new Approval.ProcessSubmitRequest(); c.setObjectId(solProgramme1.Id); Approval.process(c); List users = [select Id, FirstName, LastName FROM User LIMIT 1]; Map solProgrammemap = new Map(); solProgrammemap.put('name', null); String solProgramme = JSON.serialize(solProgrammemap); Map solProgramme11 = new Map(); solProgramme11.put('Confirmation_Result__c', null); String solProgramme2 = JSON.serialize(solProgramme11); ApprovalHistoryController.processStep(solProgramme1.id, 'comments', null, 'approve','Solution_Programme__c','拒绝',solProgramme); ApprovalHistoryController.processStep(solProgramme1.id, 'comments', null, 'approve','Solution_Programme__c','批准',solProgramme2); } } @isTest static void processStepTest2(){ User user = getUser(); System.runAs(user) { RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp']; Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-01'; al.Level1_Sys_No__c = '999999'; insert al; Account acc1 = new Account(); acc1.RecordTypeId = rectCo.Id; acc1.Name = 'HP test2'; acc1.Is_Active__c = '草案中'; acc1.HospitalType__c = '企业集团'; acc1.Is_upload_file__c = true; acc1.State_Master__c = al.id; acc1.InstitutionalType__c = '非医疗机构'; insert acc1; User toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); User user5 = setNewUser('ztest05', 'User005', 'Zhang005', 'test005@excemaple.com'); // 病院を作る 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.OwnerId = toUser.Id; //WLIG-BS2CJW --执行测试类报异常MIXED_DML_OPERATION ---20200807---update By rentongxiao ---Start // insert hospital; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert hospital; } } //WLIG-BS2CJW ---20200807---update By rentongxiao ---End //新建 客户变更申请 Account_Delay_Apply__c ada = new Account_Delay_Apply__c(); ada.Hospital__c = hospital.Id; ada.ChangeReason__c = '地址错误'; ada.Is_Active__c = '草案中'; ada.Is_upload_file__c = true; ada.OpenWindow__c = user5.Id; ada.InstitutionalType__c = '非医疗机构'; ada.CreatedById = toUser.Id; if (Test.isRunningTest()) { System.runAs(new User(Id = UserInfo.getUserId())){ insert ada; } } Approval.ProcessSubmitRequest b = new Approval.ProcessSubmitRequest(); b.setObjectId(ada.Id); Approval.process(b); List users = [select Id, FirstName, LastName FROM User LIMIT 1]; // 创建一个Map以表示Account对象 Map AccountDelay = new Map(); AccountDelay.put('InstitutionalType__c', null); Map AccountDelay1 = new Map(); AccountDelay1.put('InstitutionalType__c', '非医疗机构'); AccountDelay1.put('HospitalType__c', null); Map AccountDelay11 = new Map(); AccountDelay11.put('InstitutionalType__c', '医疗机构'); Map AccountDelay2 = new Map(); AccountDelay2.put('InstitutionalType__c', null); Map AccountDelay22 = new Map(); AccountDelay22.put('InstitutionalType__c', '医疗机构'); Map AccountDelay222 = new Map(); AccountDelay222.put('InstitutionalType__c', '非医疗机构'); // 将Map转换为JSON格式的字符串 String AccountDelayJson = JSON.serialize(AccountDelay); String AccountDelayJson1 = JSON.serialize(AccountDelay1); String AccountDelayJson11 = JSON.serialize(AccountDelay11); String AccountDelayJson2 = JSON.serialize(AccountDelay2); String AccountDelayJson22 = JSON.serialize(AccountDelay22); String AccountDelayJson222 = JSON.serialize(AccountDelay222); String adaId = ada.id; ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','批准',AccountDelayJson); ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','批准',AccountDelayJson1); ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','批准',AccountDelayJson11); // ApprovalHistoryController.processStep(ada.id, 'comments', null, 'approve','Account_Delay_Apply__c','批准',AccountDelay111); ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','拒绝',AccountDelayJson2); ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','拒绝',AccountDelayJson22); ApprovalHistoryController.processStep(adaId, 'comments', null, 'approve','Account_Delay_Apply__c','拒绝',AccountDelayJson222); } } @isTest static void reassignStepTest(){ try{ List users = [SELECT Id, FirstName, LastName FROM User LIMIT 1]; List accounts = [SELECT Id FROM Account LIMIT 1]; ApprovalHistoryController.reassignStep(accounts.get(0).Id,users.get(0).Id ); }catch(Exception e){ } ApprovalHistoryController.ApprovalHistoryStep appstep = new ApprovalHistoryController.ApprovalHistoryStep('1', '1',Date.today(),'Submitted','1','1','1'); ApprovalHistoryController.ApprovalHistoryStep appstep1 = new ApprovalHistoryController.ApprovalHistoryStep('1', '1',Date.today(),'Started','1','1','1'); ApprovalHistoryController.ApprovalHistoryStep appstep2 = new ApprovalHistoryController.ApprovalHistoryStep('1', '1',Date.today(),'Removed','1','1','1'); ApprovalHistoryController.ApprovalHistoryStep appstep3 = new ApprovalHistoryController.ApprovalHistoryStep('1', '1',Date.today(),'Submitted','1','1','1','1','1'); ApprovalHistoryController.ApprovalHistoryStep appstep4 = new ApprovalHistoryController.ApprovalHistoryStep('1', '1',Date.today(),'Started','1','1','1','1','1'); ApprovalHistoryController.ApprovalHistoryStep appstep5 = new ApprovalHistoryController.ApprovalHistoryStep('1', '1',Date.today(),'Removed','1','1','1','1','1'); } }