I have a trigger and I have also written a test class to test the trigger but only 20% of the trigger code is covered leaving 134 lines uncovered. My overall coverage is 60% and I'm trying to increase the coverage to 75%.
I am posting the trigger and the test class I've written. Can someone please help me.
TRIGGER
trigger ShowingNotesAdded on pb__Showing__c (after insert, before update) {
Account[] a = new Account[6];
pb__InventoryItem__c[] i = new pb__InventoryItem__c[6];
integer index = 0;
integer c = 0;
string response;
Recordtype r;
Date duedate;
String[] toAddresses = new String[] {};
for (pb__Showing__c s : trigger.new){
//r = [select name from recordtype where sobjecttype = 'pb__Showing__c' and id = :s.RecordTypeId];
if(trigger.IsInsert){
response = s.record_type_name__c;
if (response.contains('Lettings')){
r = [select id, Name from recordtype where sobjecttype = 'Event' and Name = 'Lettings Viewing'];
}
if (response.contains('Sales')){
r = [select id, Name from recordtype where sobjecttype = 'Event' and Name = 'Sales Viewing'];
}
if (response.contains('Lease')){
r = [select id, Name from recordtype where sobjecttype = 'Event' and Name = 'Lease Viewing'];
}
Event e = new Event();
e.OwnerId = s.OwnerId;
e.Subject = r.Name;
e.RecordTypeId = r.Id;
e.Description = 'Event created through Showing/Viewing';
e.WhatId = s.Id;
e.StartDateTime = s.start_time__c;
e.EndDateTime = s.end_time__c;
insert e;
}
if (trigger.IsUpdate){
pb__Showing__c olds = Trigger.oldMap.get(s.ID);
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
//create date from datetime
duedate = Date.newInstance(s.Start_Time__c.year(),s.Start_Time__c.month(),s.Start_Time__c.day());
if (s.pb__Inventory__c != null && s.Inventory_A_Notes__c != null && s.Send_Feedback_to_Vendor_A__c != false ){
toAddresses.clear();
i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.pb__Inventory__c];
a[index] = [select Id, Name, PersonEmail from Account where Id =: i[index].SellerId__c];
mail.setPlainTextBody('Dear ');
toAddresses.add(a[index].PersonEmail);
mail.setToAddresses(toAddresses);
mail.setUseSignature(false);
mail.setSenderDisplayName('Smith & Ken');
mail.setSubject('Viewing Feedback');
try{
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
catch(System.EmailException ex){
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Task t = new Task();
t.OwnerId = s.OwnerId;
t.Subject = 'Viewing Feedback';
t.Description = s.Inventory_A_Notes__c;
t.WhatId = i[index].Id;
t.ActivityDate = duedate;
t.Status = 'Completed';
insert t;
index++;
}
if (s.Inventory_B__c != null && s.Inventory_B_Notes__c != null && s.Send_Feedback_to_Vendor_B__c != false ){
toAddresses.clear();
i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_B__c];
a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
mail.setPlainTextBody('Dear ');
toAddresses.add(a[index].PersonEmail);
mail.setToAddresses(toAddresses);
mail.setUseSignature(false);
mail.setSenderDisplayName('Smith & Ken');
mail.setSubject('Viewing Feedback');
try{
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
catch(System.EmailException ex){
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Task t = new Task();
t.OwnerId = s.OwnerId;
t.Subject = 'Viewing Feedback';
t.Description = s.Inventory_B_Notes__c;
t.ActivityDate = duedate;
t.WhatId = i[index].Id;
t.Status = 'Completed';
insert t;
index++;
}
if (s.Inventory_C__c != null && s.Inventory_C_Notes__c != olds.Inventory_C_Notes__c && s.Send_Feedback_to_Vendor_C__c != false ){
toAddresses.clear();
i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_C__c];
a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
mail.setPlainTextBody('Dear');
toAddresses.add(a[index].PersonEmail);
mail.setToAddresses(toAddresses);
mail.setUseSignature(false);
mail.setSenderDisplayName('Smith & Ken');
mail.setSubject('Viewing Feedback');
try{
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
catch(System.EmailException ex){
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Task t = new Task();
t.OwnerId = s.OwnerId;
t.Subject = 'Viewing Feedback';
t.ActivityDate = duedate;
t.Description = s.Inventory_C_Notes__c;
t.WhatId = i[index].Id;
t.Status = 'Completed';
insert t;
index++;
}
if (s.Inventory_D__c != null && s.Inventory_D_Notes__c != olds.Inventory_D_Notes__c && s.Send_Feedback_to_Vendor_D__c != false ){
toAddresses.clear();
i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_D__c];
a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
mail.setPlainTextBody('Dear');
toAddresses.add(a[index].PersonEmail);
mail.setToAddresses(toAddresses);
mail.setUseSignature(false);
mail.setSenderDisplayName('Smith & Ken');
mail.setSubject('Viewing Feedback');
try{
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
catch(System.EmailException ex){
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Task t = new Task();
t.OwnerId = s.OwnerId;
t.ActivityDate = duedate;
t.Subject = 'Viewing Feedback';
t.Description = s.Inventory_D_Notes__c;
t.WhatId = i[index].Id;
t.Status = 'Completed';
insert t;
index++;
}
if (s.Inventory_E__c != null && s.Inventory_E_Notes__c != olds.Inventory_E_Notes__c && s.Send_Feedback_to_Vendor_E__c != false){
toAddresses.clear();
i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_E__c];
a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
mail.setPlainTextBody('Dear');
toAddresses.add(a[index].PersonEmail);
mail.setToAddresses(toAddresses);
mail.setUseSignature(false);
mail.setSenderDisplayName('Smith & Ken');
mail.setSubject('Viewing Feedback');
try{
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
catch(System.EmailException ex){
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Task t = new Task();
t.OwnerId = s.OwnerId;
t.Subject = 'Viewing Feedback';
t.ActivityDate = duedate;
t.Description = s.Inventory_E_Notes__c;
t.WhatId = i[index].Id;
t.Status = 'Completed';
insert t;
index++;
}
if (s.Inventory_F__c != null && s.Inventory_F_Notes__c != olds.Inventory_F_Notes__c && s.Send_Feedback_to_Vendor_F__c != false){
toAddresses.clear();
i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_F__c];
a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
mail.setPlainTextBody('Dear');
toAddresses.add(a[index].PersonEmail);
mail.setToAddresses(toAddresses);
mail.setUseSignature(false);
mail.setSenderDisplayName('Smith & Ken');
mail.setSubject('Viewing Feedback');
try{
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
catch(System.EmailException ex){
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Task t = new Task();
t.OwnerId = s.OwnerId;
t.Subject = 'Lettings Viewing Feedback';
t.Description = s.Inventory_F_Notes__c;
t.ActivityDate = duedate;
t.WhatId = i[index].Id;
t.Status = 'Completed';
insert t;
index++;
}
}
}
}
Test Class for the trigger
@isTest private class UnitTestShowingNotesAdded {
static testMethod void myUnitTest() {
// TO DO: implement unit test
User u = [select id from user where Name = 'Benjamin Smith'];
//create test account
Account a = new Account();
a.LastName = 'testabcdef';
a.PersonEmail='[email protected]';
a.Phone='987654';
a.OwnerId = u.id;
a.service_breach__c = false;
a.pb__Status__c = 'Unqualified';
insert a;
pb__InventoryItem__c inv = new pb__InventoryItem__c();
inv.name = 'abc123';
inv.pb__IsForSale__c = true;
inv.pb__PurchaseListPrice__c = 12313;
inv.pb__IsAvailable__c = true;
inv.Project__c = 'abcdd';
inv.pb__ItemStatus__c = 'Available';
inv.pb__IsBlocked__c = false;
inv.SellerId__c = a.id;
inv.AreaUAE__c = 'Dubai Marina';
inv.Unit_No__c = '12test';
inv.ItemStage__c = 'Available';
insert inv;
inv.OwnerId = u.id;
update inv;
//B
pb__InventoryItem__c inv1 = new pb__InventoryItem__c();
inv1.name = 'abc123';
inv1.pb__IsForSale__c = true;
inv1.pb__PurchaseListPrice__c = 12313;
inv1.pb__IsAvailable__c = true;
inv1.Project__c = 'abcdd';
inv1.pb__ItemStatus__c = 'Available';
inv1.pb__IsBlocked__c = false;
inv1.SellerId__c = a.id;
inv1.AreaUAE__c = 'Dubai Marina';
inv1.Unit_No__c = '12test';
inv1.ItemStage__c = 'Available';
insert inv1;
inv1.OwnerId = u.id;
update inv1;
pb__InventoryItem__c inv2 = new pb__InventoryItem__c();
inv2.name = 'abc123';
inv2.pb__IsForSale__c = true;
inv2.pb__PurchaseListPrice__c = 12313;
inv2.pb__IsAvailable__c = true;
inv2.Project__c = 'abcdd';
inv2.pb__ItemStatus__c = 'Available';
inv2.pb__IsBlocked__c = false;
inv2.SellerId__c = a.id;
inv2.AreaUAE__c = 'Dubai Marina';
inv2.Unit_No__c = '12test';
inv2.ItemStage__c = 'Available';
insert inv2;
inv2.OwnerId = u.id;
update inv2;
Datetime todays= datetime.now();
pb__Showing__c s = new pb__Showing__c();
s.Start_Time__c=todays;
s.End_Time__c=todays.addHours(2);
s.Account__c=a.id;
s.pb__Inventory__c=inv2.id;
s.Status__c = 'Pending';
insert s;
}
}
THIS IS THE CODE THAT ISN'T BEING COVERED.
i[index] = [select id, Unit_No_c, AreaUAE_c, Project_c, sellerid_c from pb_InventoryItem_c where id =: s.pb_Inventory_c]; a[index] = [select Id, Name, PersonEmail from Account where Id =: i[index].SellerId__c];
mail.setPlainTextBody('Dear ');
toAddresses.add(a[index].PersonEmail);
mail.setToAddresses(toAddresses);
mail.setUseSignature(false);
mail.setSenderDisplayName('Smith & Ken');
mail.setSubject('Viewing Feedback');
try{
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
catch(System.EmailException ex){
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Task t = new Task();
t.OwnerId = s.OwnerId;
t.Subject = 'Viewing Feedback';
t.Description = s.Inventory_A_Notes__c;
t.WhatId = i[index].Id;
t.ActivityDate = duedate;
t.Status = 'Completed';
insert t;
index++;
}