Advertisement
Guest User

Untitled

a guest
Jul 4th, 2017
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.43 KB | None | 0 0
  1. @IsTest
  2. private class CaseEmailInBoundUtilitiesTest {
  3. public static testmethod void testExtractAddress() {
  4. system.debug('testExtractAddress ');
  5. String expected = 'b.g@g.com';
  6. String target = 'Bryan <' + expected + '>';
  7. // CaseEmailInBoundUtilities prutil = new CaseEmailInBoundUtilities();
  8. String results = CaseEmailInBoundUtilities.extractAddress(target);
  9. System.assertEquals(expected, results);
  10. target = 'Helen W ';
  11. expected = 'Helen.W@on.com';
  12.  
  13. results = CaseEmailInBoundUtilities.extractAddress(target);
  14.  
  15. }
  16. public static testmethod void testExtractRef() {
  17. Test.startTest();
  18. String emailSubject = 'Subject Case: 987 asdas asdasd ';
  19. CaseEmailInBoundUtilities prutil = new CaseEmailInBoundUtilities();
  20. String caseNumber = CaseEmailInBoundUtilities.extractRef(emailSubject);
  21.  
  22. system.assertEquals('987', caseNumber);
  23.  
  24. emailSubject = 'Subject cAse=987 asdas asdasd ';
  25. caseNumber = CaseEmailInBoundUtilities.extractRef(emailSubject);
  26. system.assertEquals('987', caseNumber);
  27.  
  28.  
  29. Case aCase = new Case();
  30. insert aCase;
  31. Case bCase = [Select Id, CaseNumber from Case where Id =: aCase.Id limit 1];
  32.  
  33. String caseId = bCase.Id;
  34. String left = caseId.substring(0, 4);
  35. String right = caseId.substring(caseId.length() - 8, caseId.length());
  36. right = right.substring(0, 5);
  37. system.debug(Logginglevel.ERROR, 'testExtractRef case id: "' + caseId + '"');
  38. system.debug(Logginglevel.ERROR, 'testExtractRef case n: "' + bCase.CaseNumber + '"');
  39.  
  40. emailSubject = 'For example in the ref [ ref:00D7JFzw.5007H3Rh8:ref ] ';
  41. emailSubject = 'For example in the ref [ ref:00D7JFzw.' + left + right + ':ref ] ';
  42. system.debug(Logginglevel.ERROR, 'testExtractRef email subject: "' + emailSubject + '"');
  43.  
  44. caseNumber = CaseEmailInBoundUtilities.extractRef(emailSubject);
  45. //system.assertEquals(bCase.CaseNumber, caseNumber);
  46. Test.stopTest();
  47.  
  48. //TRIM(" [ ref:" + LEFT( $Organization.Id, 4) + RIGHT($Organization.Id, 4) +"."+ LEFT( Id, 4)
  49. // + SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(Id, RIGHT( Id, 4), ""), LEFT( Id, 4), ""), "0", "")
  50. // + RIGHT( Id, 4) + ":ref ] ") LEFT( Id, 4)
  51. //SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(Id, R4, ""), L4, ""), "0", "") + R4
  52. }
  53. public static testmethod void testExtractMain() {
  54. CaseEmailInBoundUtilities prutil = new CaseEmailInBoundUtilities();
  55. String emailSubject = 'Some Subject Case';
  56. String fwSubject = 'FW: ' + emailSubject;
  57.  
  58. String mainSubject;
  59.  
  60. mainSubject = CaseEmailInBoundUtilities.extractMainSubject(fwSubject);
  61. system.debug(Logginglevel.ERROR, 'testExtractMain "' + mainSubject + '"');
  62. system.assertEquals(emailSubject, mainSubject);
  63.  
  64. String reSubject = 'Re: ' + emailSubject;
  65. mainSubject = CaseEmailInBoundUtilities.extractMainSubject(reSubject);
  66. system.debug(Logginglevel.ERROR, 'testExtractMain "' + mainSubject + '"');
  67. system.assertEquals(emailSubject, mainSubject);
  68. }
  69. public static testMethod void testHandleError() {
  70. CaseEmailInBoundUtilities emailProcess = new CaseEmailInBoundUtilities();
  71. // create a new email
  72. Messaging.InboundEmail email;
  73. email = new Messaging.InboundEmail();
  74. email.subject = 'Test subject';
  75. email.plainTextBody = 'Test email';
  76. email.fromName = 'FirstName LastName';
  77. email.headers = new List<Messaging.InboundEmail.Header>();
  78. email.toAddresses = new String[] {
  79. 'someaddress@email.com'
  80. };
  81. // emailProcess.inboundEmail = email;
  82. emailProcess.handleError(null,'unit testing handle error');
  83. }
  84. public static testMethod void testProcessInboundEmailGoodWithAttachment() {
  85. Test.startTest();
  86. // create a new email
  87. Messaging.InboundEmail email = new Messaging.InboundEmail();
  88. email.subject = 'Subject asdas asdasd ';
  89. email.plainTextBody = 'Test email';
  90. email.fromName = 'FirstName LastName';
  91. email.headers = new List<Messaging.InboundEmail.Header>();
  92. email.toAddresses = new String[] {
  93. 'someaddress@email.com'
  94. };
  95. email.ccAddresses = new String[] {
  96. 'one@email.com',
  97. 'two@email.com'
  98. };
  99.  
  100. String csv = 'this is just a test';
  101.  
  102. // add an attachment
  103. Messaging.InboundEmail.BinaryAttachment attachment = new Messaging.InboundEmail.BinaryAttachment();
  104. attachment.body = blob.valueOf(csv);
  105. attachment.fileName = 'data.csv';
  106. attachment.mimeTypeSubType = 'text/plain';
  107. attachment.headers = new List<Messaging.InboundEmail.Header>();
  108. email.binaryAttachments = new Messaging.inboundEmail.BinaryAttachment[] {
  109. attachment
  110. };
  111.  
  112. Messaging.InboundEmail.TextAttachment tattachment = new Messaging.InboundEmail.TextAttachment();
  113. tattachment.body = csv;
  114. tattachment.fileName = 'data.txt';
  115. tattachment.mimeTypeSubType = 'text/plain';
  116. tattachment.headers = new List<Messaging.InboundEmail.Header>();
  117. email.textAttachments = new Messaging.inboundEmail.TextAttachment[] {
  118. tattachment
  119. };
  120.  
  121. // call the email service class and test it with the data in the testMethod
  122. CaseEmailInBoundUtilities emailProcess = new CaseEmailInBoundUtilities();
  123. Messaging.InboundEmailResult result = emailProcess.processInboundEmail(email);
  124. System.assert(result.success == true);
  125. Test.stopTest();
  126. }
  127. public static testMethod void testProcessInboundEmailWithMatchingSubject() {
  128. Test.startTest();
  129. CaseEmailInBoundUtilities emailProcess = new CaseEmailInBoundUtilities();
  130. Messaging.InboundEmail email;
  131. Messaging.InboundEmailResult result;
  132. Case[] matchingCases;
  133. EmailMessage[] matchingEmailMessages;
  134. Case theCase;
  135. String mainSubject = 'Subject asdas asdasd';
  136.  
  137. // Test Part 1
  138. // create a new email
  139. email = new Messaging.InboundEmail();
  140. email.subject = mainSubject;
  141. email.plainTextBody = 'Test email';
  142. email.fromName = 'FirstName LastName';
  143. email.headers = new List<Messaging.InboundEmail.Header>();
  144. email.toAddresses = new String[] {
  145. 'someaddress@email.com'
  146. };
  147.  
  148. // call the email service class and test it with the data in the testMethod
  149. result = emailProcess.processInboundEmail(email);
  150. System.assert(result.success == true);
  151. matchingCases = [Select Id, CaseNumber, Subject, Description from Case where Subject =: mainSubject];
  152. System.assertEquals(1, matchingCases.size());
  153. theCase = matchingCases[0];
  154. matchingEmailMessages = [Select Id from EmailMessage where ParentId =: theCase.Id];
  155. System.assertEquals(1, matchingEmailMessages.size());
  156.  
  157. // TEST Part 2
  158. // create a new email
  159. email = new Messaging.InboundEmail();
  160. email.subject = mainSubject;
  161. email.plainTextBody = 'Test email';
  162. email.fromName = 'FirstName LastName';
  163. email.headers = new List<Messaging.InboundEmail.Header>();
  164. email.toAddresses = new String[] {
  165. 'someaddress@email.com'
  166. };
  167.  
  168. // call the email service class and test it with the data in the testMethod
  169. result = emailProcess.processInboundEmail(email);
  170. System.assert(result.success == true);
  171. matchingCases = [Select Id, CaseNumber, Subject, Description from Case where Subject =: mainSubject];
  172. // still only one Case because the system will append the second email to the case Case
  173. System.assertEquals(1, matchingCases.size());
  174. System.assertEquals(theCase.Id, matchingCases[0].Id);
  175. // Should be two emails on the case
  176. matchingEmailMessages = [Select Id from EmailMessage where ParentId =: theCase.Id];
  177. System.assertEquals(2, matchingEmailMessages.size());
  178.  
  179. // TEST Part 3
  180. // create a new email
  181. email = new Messaging.InboundEmail();
  182. email.subject = 'Different subject line but include Case: ' + theCase.CaseNumber;
  183. email.plainTextBody = 'Test email';
  184. email.fromName = 'FirstName LastName';
  185. email.headers = new List<Messaging.InboundEmail.Header>();
  186. email.toAddresses = new String[] {
  187. 'someaddress@email.com'
  188. };
  189.  
  190. // call the email service class and test it with the data in the testMethod
  191. result = emailProcess.processInboundEmail(email);
  192. System.assert(result.success == true);
  193. matchingCases = [Select Id, CaseNumber, Subject, Description from Case where Subject =: email.subject];
  194. // Should be no cases created with that subject
  195. System.assertEquals(0, matchingCases.size());
  196. // Should be three emails on the case
  197. matchingEmailMessages = [Select Id from EmailMessage where ParentId =: theCase.Id];
  198. System.assertEquals(3, matchingEmailMessages.size());
  199. Test.stopTest();
  200. }
  201. public static testMethod void testProcessInboundEmailWithContacts() {
  202. Test.startTest();
  203. CaseEmailInBoundUtilities emailProcess = new CaseEmailInBoundUtilities();
  204. Messaging.InboundEmail email;
  205. Messaging.InboundEmailResult result;
  206. Case[] matchingCases;
  207. EmailMessage[] matchingEmailMessages;
  208. Case theCase;
  209. Contact theContact = new Contact();
  210. theContact.FirstName = 'FirstName';
  211. theContact.LastName = 'LastName';
  212. theContact.Email = 'someaddress@email.com';
  213.  
  214. String mainSubject = 'Subject asdas asdasd';
  215.  
  216. // Test Part 1
  217. // create a new email
  218. email = new Messaging.InboundEmail();
  219. email.subject = mainSubject;
  220. email.plainTextBody = 'Test email';
  221. email.fromName = 'FirstName LastName';
  222. email.headers = new List<Messaging.InboundEmail.Header>();
  223. email.toAddresses = new String[] {
  224. theContact.Email
  225. };
  226.  
  227. // call the email service class and test it with the data in the testMethod
  228. result = emailProcess.processInboundEmail(email);
  229. System.assert(result.success == true);
  230. System.assertEquals(1, matchingCases.size());
  231. theCase = matchingCases[0];
  232. matchingEmailMessages = [Select Id from EmailMessage where ParentId =: theCase.Id];
  233. System.assertEquals(1, matchingEmailMessages.size());
  234. }
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement