/* * Author: Guo, Aline Yaying * Created Date: 03/22/2022 * Purpose: Test Class * History: * 03/22/2022 - Guo, Aline Yaying - Initial Code. * * */ @isTest private class NewAndEditLeadControllerTest { @TestSetup static void makeData() { List strList = new List(); strList.add('Lead'); strList.add('Contact'); strList.add('Inquiry_form__c'); strList.add('LeadV2'); TestDataUtility.CreatePIPolicyConfigurations(strList); } static testMethod void testMethod1() { Test.setMock(HttpCalloutMock.class, new TestDataUtility.CreateMetaDataUtilityHttpMock()); Test.startTest(); List rectCo = [ SELECT Id FROM RecordType WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院' ]; if (rectCo.size() == 0) { return; } List rectAcc = [ SELECT Id FROM RecordType WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '戦略科室分類 呼吸科' ]; if (rectAcc.size() == 0) { return; } Account accountItem1 = new Account(Name = 'testaccount001', Dealer_discount__c = 10, RecordTypeId = rectCo[0].Id); insert accountItem1; Account accountItem3 = new Account( Name = 'testaccount001', Dealer_discount__c = 10, RecordTypeId = rectAcc[0].Id, ParentId = accountItem1.Id ); insert accountItem3; Account accountItem2 = new Account( Name = 'testaccount002', Dealer_discount__c = 10, RecordTypeId = rectCo[0].Id, Hospital__c = accountItem1.Id, Department_Class__c = accountItem3.Id ); insert accountItem2; Contact contact2 = new Contact(); contact2.AccountId = accountItem2.Id; contact2.FirstName = '責任者'; contact2.LastName = 'test1经销商'; contact2.AWS_Data_Id__c = 'Test123'; insert contact2; Lead leadTest = new Lead(); leadTest.LastName = 'test'; leadTest.Company = 'test'; leadTest.hospital__c = accountItem2.Hospital__c; leadTest.Contact_Name__c = contact2.Id; insert leadTest; Inquiry_form__c inquiryform = new Inquiry_form__c(); inquiryform.Name = '2023062001'; inquiryform.Request1__c = '需要报价'; inquiryform.Product1__c = '超声'; inquiryform.Hospital__c = accountItem2.Hospital__c; inquiryform.Contact_Name__c = contact2.Id; inquiryform.Opportunity_Division__c = '询价'; insert inquiryform; String contactDataId = contact2.AWS_Data_Id__c; Boolean isClone = true; Boolean isNew = true; Map AWSToSobjectEncryptedMap = new Map(); String AWSToSobjectEncryptedMapJson = JSON.serialize(AWSToSobjectEncryptedMap); PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo('Lead'); for (PI_Field_Policy_Detail__c PIDetail : piIntegration.PIDetails) { AWSToSobjectEncryptedMap.put(PIDetail.AWS_Field_API__c, PIDetail.SF_Field_API_Name__c); } Map mso = ApexPages.currentPage().getParameters(); mso.put('newclone', 'newclone'); mso.put('CF00N1000000962np_lkid', inquiryform.Id); mso.put('CF00N10000006ps6f_lkid', contact2.Id); mso.put('CF00N10000002CvC5_lkid', accountItem2.Hospital__c); mso.put('CF00N10000002CvC5', 'Company'); mso.put('LeadSource', 'LeadSource'); String InquiryFormId = mso.get('CF00N1000000962np_lkid'); String contactId = mso.get('CF00N10000006ps6f_lkid'); Boolean isNewMode = false; String recordId = leadTest.Id; String rid = ''; ApexPages.StandardController con = new ApexPages.StandardController(leadTest); NewAndEditLeadController lead = new NewAndEditLeadController(con); Inquiry_form__c ifc = lead.ifc; String token = lead.awsToken; String AWSDataId = lead.AWSDataId; String AWSDataIdInquiryForm = lead.AWSDataIdInquiryForm; contactId = lead.contactId; //For Lookup field String contactsInfo = lead.contactsInfo; //key sfid;value awsid Map sfIdToAWSIdMap = new Map(); SObject obj = con.getRecord(); obj.put('Hospital_Name__c', mso.get('CF00N10000002CvC5_lkid')); String hospitalId = mso.get('CF00N10000002CvC5_lkid'); if (obj.Id != null) { Lead leadData = [ SELECT Id, RecordTypeId, AWS_Data_Id__c, Contact_Name__r.Id, Contact_Name__r.AWS_Data_Id__c FROM Lead WHERE id = :obj.Id ]; String rtTypeId = leadData.RecordTypeId; AWSDataId = leadData.AWS_Data_Id__c; if (leadData.Contact_Name__r.Id != null) { sfIdToAWSIdMap.put(String.valueof(leadData.Contact_Name__r.Id).subString(0, 15), leadData.Contact_Name__r.AWS_Data_Id__c); } contactsInfo = JSON.serialize(sfIdToAWSIdMap); } String leadJson = '{"RecordTypeId":"01210000000QiRaAAK","Lead_No__c":"IN-JS-2022040127183","Status":"未跟进","Hospital_Name__c":"0011000000VAPEt","Department_Class__c":"0011000000V9bh5","Salutation":"","LastName":"***","Contact_Name__c":"0031m00000DHrkV","Cancel_Reason__c":"","Phone":"","Opp_Name_Search__c":"000000000000000","Email":"","Opp_Name__c":"Test","owner_not_automatically_update__c":false,"Purchase_Plan__c":"有(无预算)","Lead_Inquiry_form__c":"000000000000000","Opportunity_Division__c":"询价","LeadSource":"电话","Campaign__c":"000000000000000","urgent__c":false,"SI_PromoteInquiry__c":false,"Request__c":"","Request_Detail__c":"","Opportunity_stage__c":"预算没有批准","Close_Forecasted_Date__c":"2022/04/01","Purchase_Reason__c":"更新","Sales_Method__c":"单一来源采购","Fund_Basis__c":"銀行資金","Purchase_Type__c":"一般引合","Company":"江苏省人民医院 呼吸科 呼吸科","Name_Encrypted__c":"48a2693f6bf73d16e0abd48caf7fb756","Phone_Encrypted__c":"","Email_Encrypted__c":"","AWS_Data_Id__c":"959584917346320385"}'; NewAndEditLeadController.saveLead(leadJson, 'avgwshDFcxAS', false); NewAndEditLeadController.saveLead(leadJson, 'avgwshDFcxAS', true); NewAndEditLeadController.saveLead(leadJson, 'avgwshDFcxAS', isNew); Test.stopTest(); } static testMethod void testMethod2() { Test.setMock(HttpCalloutMock.class, new TestDataUtility.CreateMetaDataUtilityHttpMock()); Test.startTest(); List rectCo = [ SELECT Id FROM RecordType WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院' ]; if (rectCo.size() == 0) { return; } List rectAcc = [ SELECT Id FROM RecordType WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '戦略科室分類 呼吸科' ]; if (rectAcc.size() == 0) { return; } Account accountItem1 = new Account(Name = 'testaccount001', Dealer_discount__c = 10, RecordTypeId = rectCo[0].Id); insert accountItem1; Account accountItem3 = new Account( Name = 'testaccount001', Dealer_discount__c = 10, RecordTypeId = rectAcc[0].Id, ParentId = accountItem1.Id ); insert accountItem3; Account accountItem2 = new Account( Name = 'testaccount002', Dealer_discount__c = 10, RecordTypeId = rectCo[0].Id, Hospital__c = accountItem1.Id, Department_Class__c = accountItem3.Id ); insert accountItem2; Contact contact2 = new Contact(); contact2.AccountId = accountItem2.Id; contact2.FirstName = '責任者'; contact2.LastName = 'test1经销商'; contact2.AWS_Data_Id__c = 'Test123'; insert contact2; Lead leadTest = new Lead(); leadTest.LastName = 'test'; leadTest.Company = 'test'; leadTest.hospital__c = accountItem2.Hospital__c; leadTest.Contact_Name__c = contact2.Id; insert leadTest; Inquiry_form__c inquiryform = new Inquiry_form__c(); inquiryform.Name = '2023062001'; inquiryform.Request1__c = '需要报价'; inquiryform.Product1__c = '超声'; inquiryform.Hospital__c = accountItem2.Hospital__c; inquiryform.Contact_Name__c = contact2.Id; inquiryform.Opportunity_Division__c = '询价'; insert inquiryform; String contactDataId = contact2.AWS_Data_Id__c; Boolean isClone = true; Boolean isNew = true; Map AWSToSobjectEncryptedMap = new Map(); String AWSToSobjectEncryptedMapJson = JSON.serialize(AWSToSobjectEncryptedMap); PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo('Lead'); for (PI_Field_Policy_Detail__c PIDetail : piIntegration.PIDetails) { AWSToSobjectEncryptedMap.put(PIDetail.AWS_Field_API__c, PIDetail.SF_Field_API_Name__c); } Map mso = ApexPages.currentPage().getParameters(); mso.put('newclone', 'newclone'); mso.put('CF00N1000000962np_lkid', null); mso.put('CF00N10000006ps6f_lkid', contact2.Id); mso.put('CF00N10000002CvC5_lkid', accountItem2.Hospital__c); mso.put('CF00N10000002CvC5', 'Company'); mso.put('LeadSource', 'LeadSource'); String InquiryFormId = mso.get('CF00N1000000962np_lkid'); String contactId = mso.get('CF00N10000006ps6f_lkid'); Boolean isNewMode = false; String recordId = leadTest.Id; String rid = ''; ApexPages.StandardController con = new ApexPages.StandardController(leadTest); NewAndEditLeadController lead = new NewAndEditLeadController(con); Inquiry_form__c ifc = lead.ifc; String token = lead.awsToken; String AWSDataId = lead.AWSDataId; String AWSDataIdInquiryForm = lead.AWSDataIdInquiryForm; String contactsInfo = lead.contactsInfo; //key sfid;value awsid Map sfIdToAWSIdMap = new Map(); SObject obj = con.getRecord(); obj.put('Hospital_Name__c', mso.get('CF00N10000002CvC5_lkid')); String hospitalId = mso.get('CF00N10000002CvC5_lkid'); String leadJson = '{"RecordTypeId":"01210000000QiRaAAK","Lead_No__c":"IN-JS-2022040127183","Status":"未跟进","Hospital_Name__c":"0011000000VAPEt","Department_Class__c":"0011000000V9bh5","Salutation":"","LastName":"***","Contact_Name__c":"0031m00000DHrkV","Cancel_Reason__c":"","Phone":"","Opp_Name_Search__c":"000000000000000","Email":"","Opp_Name__c":"Test","owner_not_automatically_update__c":false,"Purchase_Plan__c":"有(无预算)","Lead_Inquiry_form__c":"000000000000000","Opportunity_Division__c":"询价","LeadSource":"电话","Campaign__c":"000000000000000","urgent__c":false,"SI_PromoteInquiry__c":false,"Request__c":"","Request_Detail__c":"","Opportunity_stage__c":"预算没有批准","Close_Forecasted_Date__c":"2022/04/01","Purchase_Reason__c":"更新","Sales_Method__c":"单一来源采购","Fund_Basis__c":"銀行資金","Purchase_Type__c":"一般引合","Company":"江苏省人民医院 呼吸科 呼吸科","Name_Encrypted__c":"48a2693f6bf73d16e0abd48caf7fb756","Phone_Encrypted__c":"","Email_Encrypted__c":"","AWS_Data_Id__c":"959584917346320385"}'; NewAndEditLeadController.saveLead(leadJson, 'avgwshDFcxAS', false); NewAndEditLeadController.saveLead(leadJson, 'avgwshDFcxAS', true); NewAndEditLeadController.saveLead(leadJson, 'avgwshDFcxAS', isNew); Test.stopTest(); } static testMethod void testMethod3() { Lead leadTest = new Lead(); String url = ApexPages.currentPage().getParameters().put('CF00N10000006ps6f_lkid', '000000000000000'); url = ApexPages.currentPage().getParameters().put('RecordType', '01210000000QiRf'); Test.startTest(); try { NewAndEditLeadController.ControllerUtil(); ApexPages.StandardController con = new ApexPages.StandardController(leadTest); NewAndEditLeadController lc = new NewAndEditLeadController(con); String jsonString = '["Department_Class__c"]'; system.debug('jsonString:' + JSON.deserializeUntyped(jsonString)); String token = lc.awsToken; String AWSDataId = lc.AWSDataId; String AWSDataIdInquiryForm = lc.AWSDataIdInquiryForm; String contactId = lc.contactId; //For Lookup field String contactsInfo = lc.contactsInfo; //key sfid;value awsid Inquiry_form__c ifc = lc.ifc; NewAndEditLeadController.queryAccount(jsonString, '000000000000000'); } catch (Exception e) { system.debug('Exception from query account:' + e.getMessage()); } Test.stopTest(); } }