Here is the handler which contains meta data Petrol_Price__mdt due to which my record in test class is not getting inserted.
public with sharing class HandlerExpenseManagement{
public void fillDateValues(List<ExpenseManagement__c> currentListOfExpenses){
system.debug('hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii1');
String ownerName = [select name from User where id =: currentListOfExpenses[0].ownerId LIMIT 1].name;
Petrol_Price__mdt custm = new Petrol_Price__mdt();
custm = [SELECT Month__c, Price__c, Year__c FROM Petrol_Price__mdt where
Month__c =: currentListOfExpenses[0].MonthText__c and Year__c =: currentListOfExpenses[0].Year__c ];
for(ExpenseManagement__c expense: currentListOfExpenses){
Date dToday = System.Today();
if(expense.OnlyDate__c != null){
Datetime dt = datetime.newInstance(expense.OnlyDate__c.year(), expense.OnlyDate__c.month(),expense.OnlyDate__c.day());
expense.Date__c = dt;
}
else if(expense.Date__c != null)
expense.OnlyDate__c = expense.Date__c.date();
if(expense.SubmittedForApproval__c == false)
expense.name = ownerName + '-' + expense.Date__c.format('dd-MM-yyyy') + ' -(' + expense.Location__c + ')';
if(expense.TestMMIDistance__c != null){
if(expense.location__c == 'Local')
expense.localsystemCalculated__c = (expense.TestMMIDistance__c * custm.Price__c)/1000;
else if(expense.location__c == 'Outstation'){
system.debug('entered outstation calcuation------');
expense.TransportExpense__c = (expense.TestMMIDistance__c * custm.Price__c)/1000;
}
system.debug('local amount'+expense.TransportExpense__c);
system.debug('local amount'+expense.localsystemCalculated__c);
}
}
}
and here is my test class -
@Istest
public class TestHandlerExpenseManagement {
public static testMethod void addAttchmentsExpense()
{
Profile standardProf = [select id from profile where name='Standard User'];
User su = new User(
alias = 'standt',
email='[email protected]',
emailencodingkey='UTF-8',
FirstName='task',
lastname='testing',
languagelocalekey='en_US',
Region__c ='India',
localesidkey='en_US',
profileid = standardProf.Id,
timezonesidkey='America/Los_Angeles',username='[email protected]');
System.runAs(su)
{
List<ExpenseManagement__c> explist = new List<ExpenseManagement__c>();
ExpenseManagement__c exp = new ExpenseManagement__c();
exp.Name='TestExpense';
exp.Date__c=date.parse('6/28/2018');
exp.DummyStage__c = 'start trip';
exp.OwnerId=su.Id;
explist.add(exp);
try
{
insert explist;
System.debug('this is expense'+explist);
}
catch(Exception e)
{
System.debug('insertion of expense failed'+e.getMessage());
}
/*Petrol_Price__mdt custm = new Petrol_Price__mdt();
custm = [SELECT Month__c, Price__c, Year__c FROM Petrol_Price__mdt where
Month__c =: explist[0].MonthText__c and Year__c =: explist[0].Year__c];*/
Test.startTest();
HandlerExpenseManagement hem = new HandlerExpenseManagement();
Map<Id,ExpenseManagement__c> oldmap = new Map<Id,ExpenseManagement__c>();
hem.fillDateValues(explist);
HandlerExpenseManagement.approveallexpenses(explist, oldmap);
Test.stopTest();
}
}
}
Please help me get the record inserted or help me with the reason why it isnt getting inserted!!