Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.08 KB | None | 0 0
  1. @isTest
  2. public class PPAndLoanApprovalProcessTest_NEW {
  3. /**
  4. * @name setup
  5. * @parm
  6. * @desc test set up method
  7. * @version 1.0
  8. * @author : Ashish Adhikari
  9. **/
  10. @testsetup
  11. private static void setUp() {
  12. Test.startTest();
  13. LogSeverityLevelValue__c logLevelSettings = TestDataFactorySFN.createLoggingLevel();
  14. Database.upsert(logLevelSettings);
  15. //Switch on the triggers
  16. List<Trigger_Bypass__c> tSwitch = TestDataFactorySFN.createTriggerSwitch();
  17. Database.insert(tSwitch);
  18. List<Account> listAccBus = new List<Account>();
  19. List<Account> listAccInd = new List<Account>();
  20. Profile p= [SELECT Id From Profile WHERE Name='nCino - Relationship Manager (SME)' OR Name='nCino - Relationship Manager (VSDE)' LIMIT 1];
  21. User smevsde = [SELECT Id FROM user WHERE profileid = : p.Id and IsActive = true LIMIT 1];
  22. system.debug('setup smevsde-->' + smevsde.Id);
  23.  
  24. //insert Product structure matrix
  25. Product_StructureMatrix__c prdstm = new Product_StructureMatrix__c();
  26. prdstm.Name='0570308031';
  27. prdstm.Product__c='Commercial (VR)';
  28. prdstm.Product_Type__c='SME - Term loan';
  29. prdstm.Product_Type_ID__c='0570308031';
  30. prdstm.Segment__c='SME';
  31. insert prdstm;
  32. Product_StructureMatrix__c prdstm2 = new Product_StructureMatrix__c();
  33. prdstm2.Name='0570601031';
  34. prdstm2.Product__c='Commercial';
  35. prdstm2.Product_Type__c='SME - Line of credit';
  36. prdstm2.Product_Type_ID__c='0570601031';
  37. prdstm2.Segment__c='SME';
  38. insert prdstm2;
  39.  
  40.  
  41. system.runAs(smevsde){
  42.  
  43. //Create Business Accounts
  44. listAccBus = SystemTestDataFactory.createTestAccounts(1);
  45.  
  46. //Create Opportunity from Business Account
  47. /**Method Definition : SystemTestDataFactory.oppcreate(Account Id,Name,Stage,Loss Reason,Product Line, Product Type,
  48. Product, Amount, Source, Type)
  49. **/
  50. Integer NoOfOpps = 0;
  51. List<Opportunity> oppList = new List<Opportunity>();
  52. oppList.add(SystemTestDataFactory.oppcreate(listAccBus[0].Id, 'TestOpportunity', 'Proposed',
  53. 'NBC – Risk','SME','SME - Term loan','Commercial (VR)',500.00,'Prospecting','Increase'));
  54.  
  55. oppList.add(SystemTestDataFactory.oppcreate(listAccBus[0].Id, 'TestOpportunity', 'Proposed',
  56. 'NBC – Risk','SME','SME - Line of credit','Commercial',500.00,'Prospecting','Increase'));
  57. NoOfOpps=oppList.size();
  58. if(!oppList.isEmpty()){
  59. Database.insert(oppList);
  60. }
  61. //Create Disbusrement Forecast
  62. List<Disbursement_Forecast__c> disbForecast = TestDataFactorySFN.createDisbursementForecast(1,oppList.get(0).Id);
  63. List<Disbursement_Forecast__c> disbForecast2 = TestDataFactorySFN.createDisbursementForecast(1,oppList.get(1).Id);
  64.  
  65. //Create Product Package
  66. List<LLC_BI__Product_Package__c> prodpackaglist = SystemTestDataFactory.createProdPkg(1);
  67. Database.insert(prodpackaglist);
  68.  
  69. //Create Loan linked and link it to PP
  70. StaticTriggerValues.isLoanUpdateFromUI = false;
  71. List<LLC_BI__Loan__c> loanList = new List<LLC_BI__Loan__c>();
  72. loanList = SystemTestDataFactory.createLoans(noOfOpps,prodpackaglist.get(0).Id,oppList,listAccBus.get(0).Id);
  73.  
  74. //Update the opportunities with created loans
  75. for(integer i=0;i<noOfOpps;i++){
  76. oppList.get(i).LLC_BI__Loan__c = loanList.get(i).Id;
  77. }
  78. if(!oppList.isEmpty()){
  79. Database.update(oppList);
  80. }
  81. }
  82.  
  83.  
  84. }
  85.  
  86.  
  87.  
  88. /**
  89. *Method Name: testManualApprovalProcessManuallyApproved
  90. *Description: This method will test approval process manually approved scenario.
  91. **/
  92. @isTest
  93. private static void testManualApprovalProcessManuallyApproved(){
  94. //Given
  95. Profile p= [SELECT Id From Profile WHERE Name='nCino - Relationship Manager (SME)' OR Name='nCino - Relationship Manager (VSDE)' LIMIT 1];
  96. Profile p1= [SELECT Id From Profile WHERE Name='nCino Credit Officer'];
  97. User smevsde = [SELECT Id FROM user WHERE profileid = : p.Id and IsActive = true LIMIT 1];
  98. system.debug('method smevsde-->' + smevsde.Id);
  99. User credoff = [SELECT Id FROM user WHERE profileid = : p1.Id and IsActive = true LIMIT 1];
  100. Id crdOffQId = [SELECT Id from Group where Name =: System.Label.SFN_Credit_Team_Queue and Type
  101. =: System.Label.SFN_Queue limit 1][0].Id;
  102.  
  103. LLC_BI__Product_Package__c pplist = [SELECT Id,LLC_BI__Status__c, OwnerId, Assigned_to_Me__c FROM
  104. LLC_BI__Product_Package__c LIMIT 1];
  105. pplist.LLC_BI__Status__c = 'Open';
  106. pplist.LLC_BI__Reviewable_Loan_Facilities_Count__c = 1;
  107. ProductPackages.isFirstTime = true;
  108. StaticTriggerValues.ppAfterUpdate = true;
  109. Database.update(pplist);
  110.  
  111. List<LLC_BI__Loan__c> loansList = [SELECT Id, LLC_BI__Stage__c, LLC_BI__Status__c,LLC_BI__Is_Review_Ready__c, OwnerId, LLC_BI__Product_Package__c
  112. FROM LLC_BI__Loan__c WHERE LLC_BI__Product_Package__c =: pplist.Id ];
  113. for(Integer i=0;i<loansList.size();i++){
  114. loansList.get(i).LLC_BI__Stage__c = 'Underwriting';
  115. }
  116. //Loans.isCalledFirstTime = true;
  117. Database.update(loansList);
  118.  
  119.  
  120.  
  121. Test.startTest();
  122. //Create an approval request
  123. //When
  124. System.runAs(smevsde){
  125. Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
  126. req1.setComments('Submitting request for approval.');
  127. req1.setObjectId(pplist.Id);
  128. StaticTriggerValues.ppAfterUpdate = true;
  129. Approval.ProcessResult result = Approval.process(req1);
  130. System.assert(result.isSuccess());
  131. List<Id> newWorkItemIds = result.getNewWorkItemIds();
  132. List<Id> newWorkItemIds2 = new List<Id>();
  133. List<Id> newWorkItemIds3 = new List<Id>();
  134. Approval.ProcessSubmitRequest req2 = new Approval.ProcessSubmitRequest();
  135. Approval.ProcessSubmitRequest req21 = new Approval.ProcessSubmitRequest();
  136. for(Integer i=0;i<1;i++){
  137. req2.setComments('Submitting request for approval.');
  138. req2.setObjectId(loansList[i].Id);
  139. Loans.isCalledFirstTime = true;
  140. Approval.ProcessResult result2 = Approval.process(req2);
  141. System.assert(result2.isSuccess());
  142. newWorkItemIds2 = result2.getNewWorkitemIds();
  143. req21.setComments('Submitting request for approval.');
  144. req21.setObjectId(loansList[i+1].Id);
  145. Loans.isCalledFirstTime = true;
  146. Approval.ProcessResult result21 = Approval.process(req21);
  147. System.assert(result21.isSuccess());
  148. newWorkItemIds3 = result21.getNewWorkitemIds();
  149. }
  150. system.debug('newWorkItemIds2-->' + newWorkItemIds2);
  151. system.debug('newWorkItemIds3-->' + newWorkItemIds3);
  152. System.debug('Loans stage after approval submit-->' + loansList.get(0).LLC_BI__Stage__c);
  153. //System.debug('Loans stage after approval submit-->' + loansList.get(1).LLC_BI__Stage__c);
  154. ProductPackages.isFirstTime = true;
  155. system.debug('newWorkItemIds-->' + newWorkItemIds);
  156. System.runAs(credoff){
  157. system.debug('credoff user Id' + credoff.Id);
  158. pplist.Assigned_to_Me__c = credoff.Id;
  159. ppList.OwnerId = credoff.Id;
  160. Database.update(pplist);
  161. system.debug('Assigned owner PP--' + pplist.OwnerId);
  162. system.debug('Assigned owner Loan--' + loansList.get(0).OwnerId);
  163. system.debug('Assigned owner Loan--' + loansList.get(1).OwnerId);
  164. Approval.ProcessWorkItemRequest req3 = new Approval.ProcessWorkItemRequest();
  165. req3.setComments('Approving request.');
  166. req3.setAction('Approve');
  167. req3.setWorkItemId(newWorkItemIds.get(0));
  168. system.debug('req3.setWorkItemId-->' + newWorkItemIds.get(0));
  169. StaticTriggerValues.ppAfterUpdate = true;
  170. Approval.ProcessResult result3 = Approval.process(req3);
  171. System.assert(result3.isSuccess(), 'Result Status 3:'+result3.isSuccess());
  172. system.debug('Result Status 3: ' + result3);
  173. system.debug('newWorkItemIds2 size--' + newWorkItemIds2.size());
  174. for(Integer i=0;i<newWorkItemIds2.size();i++){
  175. Approval.ProcessWorkItemRequest req4 = new Approval.ProcessWorkItemRequest();
  176. req4.setComments('Approving request.');
  177. req4.setAction('Approve');
  178. req4.setWorkItemId(newWorkItemIds2.get(i));
  179. system.debug('req4.setWorkItemId-->' + newWorkItemIds2.get(i));
  180. //Loans.isCalledFirstTime = true;
  181. Approval.ProcessResult result4 = Approval.process(req4);
  182. system.debug('result4-->' + result4);
  183. System.assert(result4.isSuccess(), 'Result Status 4:'+result4.isSuccess());
  184. }
  185. for(Integer i=0;i<newWorkItemIds3.size();i++){
  186. Approval.ProcessWorkItemRequest req5 = new Approval.ProcessWorkItemRequest();
  187. req5.setComments('Approving request.');
  188. req5.setAction('Approve');
  189. req5.setWorkItemId(newWorkItemIds3.get(i));
  190. system.debug('req5.setWorkItemId-->' + newWorkItemIds3.get(i));
  191. //Loans.isCalledFirstTime = true;
  192. Approval.ProcessResult result5 = Approval.process(req5);
  193. system.debug('result4-->' + result5);
  194. System.assert(result5.isSuccess(), 'Result Status 5:'+result5.isSuccess());
  195. }
  196. }
  197. }
  198.  
  199. //Then
  200. test.stopTest();
  201. LLC_BI__Product_Package__c ppNewList = [SELECT Id, LLc_BI__Status__c, OwnerId FROM LLC_BI__Product_Package__c
  202. LIMIT 1];
  203. system.assertEquals('Manually Approved', ppNewList.LLC_BI__Status__c);
  204. system.assertEquals(smevsde.Id, ppNewList.OwnerId);
  205.  
  206. List<LLC_BI__Loan__c> loanListNew = [SELECT Id, LLC_BI__Stage__c, OwnerId, LLC_BI__Product_Package__c
  207. FROM LLC_BI__Loan__c WHERE LLC_BI__Product_Package__c =: ppNewList.Id LIMIT 100];
  208. for(Integer i=0;i<loanListNew.size();i++){
  209. system.assertEquals('Pre-Closing', loanListNew.get(i).LLC_BI__Stage__c);
  210. system.assertEquals(smevsde.Id, loanListNew.get(i).OwnerId);
  211. }
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement