Facebook
From NG, 2 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 179
  1. @IsTest
  2. public class CaseStatusChangeTriggerHandlerTest {
  3.  
  4.     @testSetup static void setupTestdata() {
  5.        
  6.         Case newCase = new Case();
  7.         newCase.Subject = 'Unittest';
  8.         newCase.Status = 'New';
  9.         insert newCase;
  10.        
  11.         Case testCase = [select Subject, Status from Case where Subject = 'Unittest'];
  12.         System.assertEquals(testCase.Subject, 'Unittest');
  13.     }
  14.    
  15.    
  16.    
  17.     @IsTest static void testOnAfterInsert(){
  18.  
  19.         Case[] testCase = [select Subject, CaseNumber, Status, Owner.Name from Case where Subject = 'Unittest'];
  20.        
  21.         CaseStatusChangeTriggerHandler.OnAfterInsert(testCase);
  22.        
  23.         Case_Status_Change__c[] caseStatusChange = [select Name from Case_Status_Change__c where Case__r.Id =:testCase[0].Id];
  24.        
  25.         System.assertEquals(caseStatusChange[0].Name, testCase[0].CaseNumber + ' status: New');
  26.    
  27.     }
  28.    
  29.    
  30.     @IsTest static void testOnAfterUpdate(){
  31.  
  32.         Map<Id, Case> oldObjectMap = new Map<Id, Case>();
  33.          
  34.         Case[] testCase = [select Subject, CaseNumber, Status, Owner.Name from Case where Subject = 'Unittest'];
  35.        
  36.         Case_Status_Change__c  statusChange = new  Case_Status_Change__c();
  37.         statusChange.Name = testCase[0].CaseNumber + ' status: New';
  38.         statusChange.Case__c = testCase[0].Id;
  39.         statusChange.Status_Name__c = testCase[0].Status;
  40.         statusChange.Set_Time__c = Datetime.now();
  41.         insert statusChange;
  42.        
  43.         testCase[0].Status = 'Escalated';
  44.  
  45.         Case oldCase = new Case();
  46.         oldCase.Subject ='Unittest';
  47.         oldCase.Status = 'New';
  48.         oldCase.Id=testCase[0].Id;
  49.         oldObjectMap.put(testCase[0].Id, oldCase);
  50.  
  51.        
  52.         CaseStatusChangeTriggerHandler.OnAfterUpdate(testCase, oldObjectMap);
  53.        
  54.         Case_Status_Change__c[] caseStatusChange = [select Name from Case_Status_Change__c where Case__r.Id=:testCase[0].Id and Change_Time__c = null];
  55.        
  56.        
  57.         System.assertEquals(caseStatusChange[0].Name, testCase[0].CaseNumber + ' from New to Escalated');
  58.    
  59.     }
  60.      
  61.     /**
  62.      *Tests if the user does not have access to Case and Case_Status_Change__c objects
  63.      */
  64.     @IsTest static void testAccessible1(){
  65.        
  66.         User u = getUser('NotAccessible1');
  67.  
  68.         System.runAs(u) {
  69.             try {
  70.                 testOnAfterInsert();
  71.                 System.assert(false, 'fail the test if no exception thrown ');
  72.             }
  73.             catch (QueryException e) {
  74.                  System.assertEquals(e.getMessage(), 'Insufficient access to Case or User objects');        
  75.             }  
  76.         }
  77.  
  78.     }
  79.    
  80.     @IsTest static void testAccessible2(){
  81.        
  82.         User u = getUser('NotAccessible2');
  83.        
  84.         System.runAs(u) {
  85.             try {
  86.                 testOnAfterUpdate();
  87.                 System.assert(false, 'fail the test if no exception thrown ');
  88.             }
  89.             catch (QueryException e) {
  90.                  System.assertEquals(e.getMessage(), 'Insufficient access to Case Status Change or business hours objects');        
  91.             }  
  92.         }
  93.     }
  94.    
  95.     @IsTest static void testCreatable(){
  96.        
  97.         User u = getUser('NotCreatable');
  98.        
  99.         System.runAs(u) {
  100.             try {
  101.                 testOnAfterInsert();
  102.                 System.assert(false, 'fail the test if no exception thrown ');
  103.             }
  104.             catch (DmlException e) {
  105.                  System.assertEquals(e.getMessage(), 'Insufficient permissions to create Case Status Change');        
  106.             }    
  107.         }
  108.        
  109.         System.runAs(u) {
  110.             try {
  111.                 testOnAfterUpdate();
  112.                 System.assert(false, 'fail the test if no exception thrown ');
  113.             }
  114.             catch (DmlException e) {
  115.                  System.assertEquals(e.getMessage(), 'Insufficient permissions to create Case Status Change');        
  116.             }    
  117.         }    
  118.     }
  119.    
  120.     @IsTest static void testUpdatable(){
  121.        
  122.         User u = getUser('NotUpdatable');
  123.        
  124.         System.runAs(u) {
  125.             try {
  126.                 testOnAfterUpdate();
  127.                 System.assert(false, 'fail the test if no exception thrown ');
  128.             }
  129.             catch (DmlException e) {
  130.                  System.assertEquals(e.getMessage(), 'Insufficient permissions to update Case Status Change');        
  131.             }
  132.            
  133.         }      
  134.     }
  135.    
  136.    
  137.     public static User getUser(String profileName) {
  138.        
  139.         Profile p = [SELECT Id FROM Profile WHERE Name=:profileName limit 1];
  140.        
  141.         String testemail = '[email protected]';
  142.         User pu = new User(profileId = p.Id, username = testemail, email = testemail,
  143.                            emailencodingkey = 'UTF-8', localesidkey = 'en_US',
  144.                            languagelocalekey = 'en_US', timezonesidkey = 'America/Los_Angeles',
  145.                            alias='cspu', lastname='lastname');
  146.        
  147.         return pu;
  148.        
  149.        
  150.     }
  151.    
  152. }