@IsTest class LexNewAndEditConsumApplyPIPLTest { public static String rectCo = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Agency').getRecordTypeId(); public static String rectHp = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('HP').getRecordTypeId(); public static String rectBF = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Department_Class_BF').getRecordTypeId(); public static String rectDBF = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Department_BF').getRecordTypeId(); public static String consumApply = Schema.SObjectType.Consum_Apply__c.getRecordTypeInfosByDeveloperName().get('StandardRequest').getRecordTypeId(); public static String rectAg = Schema.SObjectType.Contact.getRecordTypeInfosByDeveloperName().get('Agency').getRecordTypeId(); public static User thisUser = [ SELECT Id from User WHERE Id = :UserInfo.getUserId()]; @testSetup static void testSetup() { System.runAs(thisUser){ Account testRectcoAccounts = new Account(Name = 'testRectcoAccount', RecordTypeId = rectHp); insert testRectcoAccounts; Account testRectHpAccounts = new Account(Name = 'testRectHpAccount', RecordTypeId = rectCo, Hospital__c = testRectcoAccounts.Id); insert testRectHpAccounts; Contact testContacts = new Contact(email='jplumber@salesforce.com', firstname='Joe', lastname='Plumber',RecordTypeId = rectAg, AWS_Data_Id__c = 'TestContact', accountId = testRectHpAccounts.id); insert testContacts; Consum_Apply__c ca = new Consum_Apply__c(); ca.Name = 'TestConsumApply'; ca.status__c = '已批准'; ca.RecordTypeId = consumApply; ca.DataMigration_Flag__c = true; ca.Person_In_Charge__c = thisUser.Id; ca.applyUser__c = thisUser.Id; ca.Product_category__c = 'ET'; ca.demo_purpose2__c = 'OPD试用'; ca.Request_shipping_day__c = Date.Today(); ca.direct_send__c ='经销商'; ca.direct_shippment_address__c = 'TestConsumApply'; ca.Loaner_received_staff__c = 'TestUser'; ca.Loaner_received_staff_phone__c = '123123123'; ca.Phone_number__c = '123123123'; insert ca; TestDataUtility.CreatePIPolicyConfiguration('Rental_Apply__c'); PI_Policy_Configuration__c config1 = new PI_Policy_Configuration__c(Sobject_Type__c = 'Consum_Apply__c'); insert config1; PI_Policy_Configuration__c config2 = new PI_Policy_Configuration__c(Sobject_Type__c = 'Consum_Apply__cV2'); insert config2; PI_Policy_Configuration__c config3 = new PI_Policy_Configuration__c(Sobject_Type__c = 'Contact'); insert config3; PI_Field_Policy_Detail__c pfpd1 = new PI_Field_Policy_Detail__c(AWS_Field_API__c = 'phone1', SF_Field_API_Name__c = 'Phone1',PI_Policy_Configuration__c = config1.Id, Enable_Encrypt__c=true); insert pfpd1; PI_Field_Policy_Detail__c pfpd2 = new PI_Field_Policy_Detail__c(AWS_Field_API__c = 'phone2', SF_Field_API_Name__c = 'Phone2',PI_Policy_Configuration__c = config2.Id, Enable_Encrypt__c=true); insert pfpd2; PI_Field_Policy_Detail__c pfpd3 = new PI_Field_Policy_Detail__c(AWS_Field_API__c = 'phone2', SF_Field_API_Name__c = 'Phone2',PI_Policy_Configuration__c = config3.Id, Enable_Encrypt__c=true); insert pfpd3; } } @isTest static void tesMethod1(){ System.runAs(thisUser){ Account acct = [SELECT Id FROM Account WHERE RecordTypeId =:rectCo LIMIT 1]; Contact cont = [SELECT Name FROM Contact WHERE RecordTypeId =:rectAg LIMIT 1]; Consum_Apply__c ca = [SELECT Id FROM Consum_Apply__c WHERE RecordTypeId =:consumApply LIMIT 1]; PI_Policy_Configuration__c prc1 = [SELECT Sobject_Type__c FROM PI_Policy_Configuration__c WHERE Sobject_Type__c ='Consum_Apply__c' LIMIT 1]; PI_Policy_Configuration__c prc2 = [SELECT Sobject_Type__c FROM PI_Policy_Configuration__c WHERE Sobject_Type__c ='Consum_Apply__cV2' LIMIT 1]; List p = [SELECT Id FROM Profile WHERE Name = '系统管理员']; if(p.size() == 0) { p = [SELECT Id FROM Profile WHERE Name = 'System Administrator']; } Id systemAdminProfileId = p[0].Id; String body='{"size":1,"totalSize":1,"done":true,"queryLocator":null,"entityTypeName":"ProfileLayout","records":[{"attributes":{"type":"ProfileLayout","url":"/services/data/v41.0/tooling/sobjects/ProfileLayout/01G1000000x1LuwEAE"},"Layout":{"attributes":{"type":"Layout","url":"/services/data/v41.0/tooling/sobjects/Layout/00h10000009wSkFAAU"},"Name":"耗材申请页面布局(窗口)","TableEnumOrId":"01I10000001AH3BEAW"},"ProfileId":"'+systemAdminProfileId+'","Profile":{"attributes":{"type":"Profile","url":"/services/data/v41.0/tooling/sobjects/Profile/'+systemAdminProfileId+'"},"Name":"系统管理员"},"RecordTypeId":"'+rectCo+'"}]}'; String objectType = prc1.Sobject_Type__c; String objectTypeV2 = prc2.Sobject_Type__c; Test.setMock(HttpCalloutMock.class, new BaseHttpMock(body,'1','200')); System.Test.startTest(); List layout = MetaDataUtility.GetRecordTypePageLayout(consumApply,objectType); PIHelper.PIIntegration piIntegration1 = PIHelper.getPIIntegrationInfo(objectType); PIHelper.PIIntegration piIntegration2 = PIHelper.getPIIntegrationInfo(objectTypeV2); Map AWSToSobjectNonEncryptedMap = new Map(); List AWSToSobjectNonEncryptedMapKeySet = new List(); for (PI_Field_Policy_Detail__c PIDetail : piIntegration1.PIDetails) { AWSToSobjectNonEncryptedMap.put(PIDetail.AWS_Field_API__c, PIDetail.SF_Field_API_Name__c); AWSToSobjectNonEncryptedMapKeySet.add(PIDetail.AWS_Field_API__c); } LexNewAndEditBasePIPLController.initData(ca.Id,consumApply,objectType); Map expected = new Map(); expected.put('phone1','Phone1'); System.assertEquals(expected,AWSToSobjectNonEncryptedMap); LexNewAndEditConsumApplyPIPLController.initData(ca.Id, consumApply,objectType); LexNewAndEditConsumApplyPIPLController.queryAccount('["Department_Class__c"]',acct.Id); LexNewAndEditConsumApplyPIPLController.searchContactInit(acct.Id,cont.Name); System.Test.stopTest(); } } public class BaseHttpMock implements HttpCalloutMock { String body =''; String status = ''; String statusCode = ''; public BaseHttpMock(String body,String status,String statusCode){ this.body = body; this.status = status; this.statusCode = statusCode; } public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type', 'application/json'); res.setBody(body); res.setStatus('OK'); res.setStatusCode(200); return res; } } }