@isTest private class ApprovalHistoryUtilTest { 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 toUser = setNewUser('shenqing', 'shenpi', 'spsqTest', 'shenpi@excemaple.com'); 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 = 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 newAccount; } } } @isTest static void isCurrentUserIdTest_SystemAdmin(){ // List users = [select Id, FirstName, LastName FROM User WHERE Name = '黄 千龙' LIMIT 1]; List accounts = [SELECT Id FROM Account LIMIT 1]; // System.runAs(users.get(0)){ boolean isAdmin = ApprovalHistoryUtil.isCurrentUserSystemAdmin(accounts.get(0).Id); // System.assertEquals(true, isAdmin, 'The user was supposed to be found admin'); // } } @isTest static void isCurrentUserIdTest_NOT_SystemAdmin(){ List users = [select Id, FirstName, LastName FROM User WHERE Profile.Name != 'System Administrator' LIMIT 1]; List accounts = [SELECT Id FROM Account LIMIT 1]; System.runAs(users.get(0)){ boolean isAdmin = ApprovalHistoryUtil.isCurrentUserSystemAdmin(accounts.get(0).Id); System.assertEquals(false, isAdmin, 'The user was not supposed to be found admin'); } } @isTest static void processStepTest_EmptyWorkItems(){ List users = [select Id, FirstName, LastName FROM User WHERE Profile.Name != 'System Administrator' LIMIT 1]; List accounts = [SELECT Id FROM Account LIMIT 1]; List workItems = new List(); String retVal = ApprovalHistoryUtil.processStep( workItems, 'comments',users.get(0).Id, accounts.get(0).Id); } @isTest static void processStepTest_NotEmptyWorkItems(){ List users = [select Id, FirstName, LastName FROM User WHERE Profile.Name != 'System Administrator' LIMIT 1]; List accounts = [SELECT Id FROM Account LIMIT 1]; List workItems = new List(); workItems.add(new ProcessInstanceWorkitem(Id = '04i3h000001L5fGAAS')); try{ String retVal = ApprovalHistoryUtil.processStep( workItems, 'comments',users.get(0).Id, accounts.get(0).Id); }catch(Exception e){ } } @isTest static void reassignStepTest(){ List users = [SELECT Id, FirstName, LastName FROM User LIMIT 1]; List workItems = new List(); workItems.add(new ProcessInstanceWorkitem(Id = '04i3h000001L5fGAAS')); try{ ApprovalHistoryUtil.reassignStep(workItems, users.get(0).Id); }catch(Exception e){ } } @isTest static void populateApprovalHistoryTest(){ 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; Account acc2= new Account(); acc2.RecordTypeId = rectCo.Id; acc2.Name = 'HP test22'; acc2.Is_Active__c = '有效'; acc2.Is_upload_file__c = true; acc2.HospitalType__c = '企业集团'; acc2.State_Master__c = al.id; acc2.InstitutionalType__c = '非医疗机构'; insert acc2; Approval.ProcessSubmitRequest r = new Approval.ProcessSubmitRequest(); r.setObjectId(acc1.Id); Approval.process(r); List processInstances = [SELECT Id,SubmittedById, ProcessDefinition.Name , (SELECT ID, ProcessNodeId, StepStatus,Comments,TargetObjectId,ActorId,CreatedById,IsDeleted,IsPending ,OriginalActorId,ProcessInstanceId,RemindersSent,CreatedDate, Actor.Name, OriginalActor.Name , ProcessNode.Name FROM StepsAndWorkitems order by IsPending DESC, CreatedDate DESC ) FROM ProcessInstance where TargetObjectId =:acc1.Id order by CreatedDate DESC]; ApprovalHistoryController.ApprovalHistory retVal = ApprovalHistoryUtil.populateApprovalHistorySteps(processInstances, acc1.Id); } @isTest static void populateApprovalHistoryRecord(){ List users = [SELECT Id, FirstName, LastName FROM User LIMIT 1]; List approvalSteps = new List(); approvalSteps.add(new ApprovalHistoryController.ApprovalHistoryStep( 'stepName','stepId', DateTime.now(),'stepStatus', 'assignedTo', 'assignedToId', 'Comments')); ApprovalHistoryController.ApprovalHistory approvalHistoryToReturn = new ApprovalHistoryController.ApprovalHistory( approvalSteps, false, true, true); ProcessInstanceHistory step = new ProcessInstanceHistory(); ApprovalHistoryUtil.populateApprovalHistoryRecord(approvalHistoryToReturn, step, true, users.get(0).Id ); System.assertEquals(true, approvalHistoryToReturn.showRecall, 'The recall attribute is supposed to be true'); System.assertEquals(true, approvalHistoryToReturn.isCurrentUserApprover, 'The isCurrentUserApprover attribute is supposed to be true'); System.assertEquals(false, approvalHistoryToReturn.showSubmitForApproval, 'The showSubmitForApproval attribute is supposed to be false'); } }