Guest User

Untitled

a guest
May 21st, 2018
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.98 KB | None | 0 0
  1. public class BACSPaymentManagerController {
  2. @AuraEnabled
  3. public static String generateBACSFile(List<Id> selectedPaymentIds, Datetime BACSPaymentDatetime){
  4. Integer day = BACSPaymentDatetime.day();
  5. String dayString;
  6. Integer month = BACSPaymentDatetime.month();
  7. String monthString;
  8. Integer year = BACSPaymentDatetime.year();
  9. String userID = UserInfo.getUserId();
  10. Date BACSPaymentDate = Date.newInstance(year, month, day);
  11.  
  12. if(day > 9)
  13. dayString = String.Valueof(day);
  14. else
  15. dayString = '0'+day;
  16.  
  17. if(month > 9)
  18. monthString = String.Valueof(month);
  19. else
  20. monthString = '0'+month;
  21.  
  22. String dateLine = 'H,' + year + monthString + dayString + ',' + userID + year + monthString + dayString;
  23. String terminationString = 'T';
  24. Integer hour = BACSPaymentDatetime.hour();
  25. String hourString;
  26. if(hour > 9)
  27. hourString = String.Valueof(hour);
  28. else
  29. hourString = '0'+hour;
  30.  
  31. Integer minute = BACSPaymentDatetime.minute();
  32. String minuteString;
  33. if(minute > 9)
  34. minuteString = String.Valueof(minute);
  35. else
  36. minuteString = '0'+minute;
  37. Integer second = BACSPaymentDatetime.second();
  38. String secondString;
  39. if(second > 9)
  40. secondString = String.Valueof(second);
  41. else
  42. secondString = '0'+second;
  43. String bacsDebitAccountReference = 'SF'+ year + monthString + dayString + hourString + minuteString + secondString;
  44.  
  45. Datetime BACSPaymentDatetimeNext4 = BACSPaymentDatetime+4;
  46. Integer dayNext4 = BACSPaymentDatetimeNext4.day();
  47. String dayStringNext4;
  48. Integer monthNext4 = BACSPaymentDatetimeNext4.month();
  49. String monthStringNext4;
  50. Integer yearNext4 = BACSPaymentDatetimeNext4.year();
  51.  
  52. if(dayNext4 > 9)
  53. dayStringNext4 = String.Valueof(dayNext4);
  54. else
  55. dayStringNext4 = '0'+dayNext4;
  56.  
  57. if(monthNext4 > 9)
  58. monthStringNext4 = String.Valueof(monthNext4);
  59. else
  60. monthStringNext4 = '0'+monthNext4;
  61.  
  62. bacsDetails__c bacsDetails = bacsDetails__c.getInstance();
  63. String debitLine = 'D,' + yearNext4 + monthStringNext4 + dayStringNext4 + ',' + bacsDebitAccountReference + ',' + bacsDetails.sortCode__c + '-' + bacsDetails.Account_Number_For_BAS_Debit__c;
  64.  
  65. Batch_Reference__c br = new Batch_Reference__c(Name=bacsDebitAccountReference);
  66. insert br;
  67.  
  68. Integer numberOfPayments = 0;
  69. Decimal totalAmount = 0;
  70.  
  71. List<Payment__c> selectedPayment = new List<Payment__c>();
  72. for(Payment__c pay : [SELECT Id, Name, Amount_Paid__c, Date_Paid__c, Date_Due__c FROM Payment__c WHERE Id IN: selectedPaymentIds]){
  73. pay.Batch_Reference__c = br.id;
  74. pay.Date_Paid__c = BACSPaymentDate;
  75. totalAmount += pay.Amount_Paid__c;
  76. numberOfPayments += 1;
  77. selectedPayment.add(pay);
  78. }
  79. br.Total_Amount__c = totalAmount;
  80. br.Number_of_Payments__c = numberOfPayments;
  81. update selectedPayment;
  82. update br;
  83.  
  84. return '/apex/BACSPaymentFileGenerator?dateLine='+dateLine+'&debitLine='+debitLine+'&id='+br.id;
  85. }
  86. }
  87.  
  88. @isTest
  89. public class BACSPaymentManagerControllerTest {
  90. @isTest(SeeAllData=true)
  91. static void generateBACSFile(){
  92. Datetime dt = Datetime.newInstance(2018, 5, 1, 8, 0, 0);
  93. Datetime nextdt = dt+4;
  94. Account acc = new Account(Name='Aikin Household');
  95. insert acc;
  96. system.assert(acc.id!=null);
  97. Contact con = new Contact(LastName='John Aikin',RSABI_category__c='AB',AccountId=acc.id);
  98. insert con;
  99. system.assert(con.id!=null);
  100. Batch_Reference__c br = new Batch_Reference__c(Name='SF20180501080000');
  101. insert br;
  102. Payment__c pay = new Payment__c(Contact__c=con.id,Date_Due__c=system.today(),Payment_Type__c='BACS',Confirm_Payment__c=false,Amount_Paid__c=100,Batch_Reference__c=br.id);
  103. insert pay;
  104. system.assert(pay.id!=null);
  105. List<Id> selectedPaymentId = new List<Id>();
  106. selectedPaymentId.add(pay.id);
  107.  
  108.  
  109. Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
  110. User u2 = new User(Alias = 'newUser', Email='newuser@testorg.com',
  111. EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
  112. LocaleSidKey='en_US', ProfileId = p.Id,
  113. TimeZoneSidKey='America/Los_Angeles', UserName='newuser@testorg.com');
  114. insert u2;
  115. bacsDetails__c bacsDetails = bacsDetails__c.getInstance();
  116.  
  117. String dateLine = 'H,20180501,'+u2.id+'20180501';
  118. String debitLine='D,20180505,SF20180501000000,'+bacsDetails.sortCode__c + '-' + bacsDetails.Account_Number_For_BAS_Debit__c;
  119.  
  120. test.startTest();
  121. system.runAs(u2){
  122. String returnString = BACSPaymentManagerController.generateBACSFile(selectedPaymentId,dt);
  123. system.assertEquals('/apex/BACSPaymentFileGenerator?dateLine='+dateLine+'&debitLine='+debitLine+'&id='+br.id, returnString );
  124.  
  125. }
  126. test.stopTest();
  127. }
  128. }
  129.  
  130. System.AssertException: Assertion Failed: Expected: /apex/BACSPaymentFileGenerator?dateLine=H,20180501,0056E0000036LiVQAU20180501&debitLine=D,20180505,SF20180501000000,804121-00792403&id=a1X6E000000c8NqUAI, Actual: /apex/BACSPaymentFileGenerator?dateLine=H,20180501,0056E0000036LiVQAU20180501&debitLine=D,20180505,SF20180501000000,804121-00792403&id=a1X6E000000c8NrUAI
  131.  
  132. Batch_Reference__c br = new Batch_Reference__c(Name=bacsDebitAccountReference);
  133. insert br;
  134.  
  135. for(Payment__c pay : [SELECT Id, Name, Amount_Paid__c, Date_Paid__c, Date_Due__c FROM Payment__c WHERE Id IN: selectedPaymentIds]){
  136. pay.Batch_Reference__c = br.id;
  137. pay.Date_Paid__c = BACSPaymentDate;
  138. totalAmount += pay.Amount_Paid__c;
  139. numberOfPayments += 1;
  140. selectedPayment.add(pay);
  141. }
Add Comment
Please, Sign In to add comment