Full Trigger for Test is below. I am getting 80% coverage with my test class.
trigger PreventIncidentDelete on Incident__c (before delete) {
String profileName=[SELECT id,Name FROM Profile WHERE Id =:UserInfo.getProfileId()].Name ;
if(System.Trigger.IsDelete) {
for (Incident__c Incd : trigger.old) {
if (profileName != 'System Administrator' ) {
Incd.addError('Insufficient privilege, please do not delete this record.');
}
}
}
}
Below is my test class.
@isTest
public class testPreventIncidentDeletion {
static testmethod void testPreventIncDel(){
Incident__c incd = new Incident__c();
incd.FKClient__c = '005F0000003abcdeAA';
incd.FKAccount__c = '001F000001OabcdeAR';
incd.Office_Location__c = 'New York';
incd.Client_Project__c = 'IT - Applications';
incd.FKCategory__c = 'a1DF000000abcdeAK';
incd.incidentDescription__c = 'Testing prevent Incident records deletion.';
insert incd;
Profile p = [SELECT Id from Profile WHERE Name ='ServiceDesk Staff'];
User u1 = new User();
u1.Alias = 'Test1S';
u1.Country = 'United States';
u1.LastName='Smith';
u1.FirstName='Test1';
u1.email='test1.user@example.com';
u1.emailencodingkey='UTF-8';
u1.languagelocalekey='en_US';
u1.localesidkey='en_US';
u1.ProfileId=p.Id;
u1.UserRoleId='00EF00000016cZ1MAI';
u1.timezonesidkey='America/Chicago';
u1.username='123456@example.com';
u1.CommunityNickname='123456@example.com';
insert u1;
System.runAs(u1) {
test.startTest();
try{
delete incd;
system.assert(false, 'An error was exptected');
}
catch(Exception e){
system.assert(e.getMessage().contains('Insufficient privilege, please do not delete this record.'));
}
}
}
}
delete incd
likesystem.assert(false,'An Error Was Expected')
so that if it does not error as expected your test will fail – Eric Jul 5 '17 at 13:49