I tried to get the coverage inside the for..
and this is my test class :
Profile profileId = [SELECT Id FROM Profile WHERE Name = 'Manager CS' LIMIT 1];
User usr = new User(LastName = 'LIVESTON',
FirstName='JASON',
Alias = 'jliv',
Email = '[email protected]',
Username = '[email protected]',
ProfileId = profileId.id,
TimeZoneSidKey = 'GMT',
LanguageLocaleKey = 'en_US',
EmailEncodingKey = 'UTF-8',
LocaleSidKey = 'en_US'
);
Named_User__c nu = new Named_User__c();
nu.User__c = usr.id;
nu.name = 'test';
nu.First_Name__c = 'test';
nu.Email__c = '[email protected]';
nu.First_Name__c = 'test';
insert nu;
I tried to see the result of my query and it return so many records.. so there`s no issue with the query.. and I cant figure it why my test class not cover the inside of this for..
this is my full code :
global class SendedEmail implements Schedulable {
public static String CRON_EXP = '0 0 7 * * ? *';
global void execute(SchedulableContext ctx) {
Date now = Date.today();
Integer thisday = now.Day();
Integer thismonth = now.month();
Integer thisyear = now.year();
List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
EmailTemplate et = [SELECT Id, Subject, HtmlValue FROM EmailTemplate WHERE developerName = 'ET_Daily_Birthday_List'];
String subject = et.Subject;
String htmlBody = et.HtmlValue;
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
htmlBody += '<table border="1" style="border-collapse: collapse; padding:5px;"><tr><th style="padding:5px;"><b>Nama Perusahaan</b></th><th style="padding:5px;"><b>Tanggal Pendirian</b></th><th style="padding:5px;"><b>VIP by Min Revenue</b></th><th style="padding:5px;"><b>VIP by Rank</b></th><th style="padding:5px;"><b>Total Revenue</b></th><th style="padding:5px;"><b>Email</b></th><th style="padding:5px;"><b>Alamat</b></th></tr>';
List <Custom_Emaill_Log__c> listCustomer = [SELECT Id,Customer__r.Street__c, Customer__r.Name,Customer__r.VIP_Type_Rangking__c,Customer__r.VIP_Type_Revenue__c, Contact__r.Name, Contact__r.Posisi__c, Tipe_Data__c, Actual_Send_Date__c, Status__c, Send_Date__c, Customer__r.Total_Revenue__c, Email__c, Customer__r.Company_Type__c
FROM Custom_Emaill_Log__c WHERE Status__c = 'Send' AND Tipe_Data__c = 'Customer' AND DAY_ONLY(Actual_Send_Date__c) =:now ORDER BY Customer__r.Total_Revenue__c DESC];
List <Custom_Emaill_Log__c> listContact = [SELECT Id,Contact__r.Street__c, Customer__r.Name,Customer__r.VIP_Type_Rangking__c,Customer__r.VIP_Type_Revenue__c, Contact__r.Name, Contact__r.Posisi__c, Tipe_Data__c, Actual_Send_Date__c, Status__c, Send_Date__c, Customer__r.Total_Revenue__c, Email__c, Customer__r.Company_Type__c
FROM Custom_Emaill_Log__c WHERE Status__c = 'Send' AND Tipe_Data__c = 'Contact' AND DAY_ONLY(Actual_Send_Date__c) =:now ORDER BY Contact__r.Name ASC];
for (Custom_Emaill_Log__c cel : listCustomer){
String companyName = cel.Customer__r.Name;
String birthdate = String.valueof(cel.Send_Date__c);
String viprevenue;
if (cel.Customer__r.VIP_Type_Rangking__c != NULL){
viprevenue = cel.Customer__r.VIP_Type_Rangking__c;
}
else {
viprevenue = '-';
}
String vipranking;
if(cel.Customer__r.VIP_Type_Revenue__c != NULL){
vipranking = cel.Customer__r.VIP_Type_Revenue__c;
}
else {
vipranking = '-';
}
String revenue = String.valueof(cel.Customer__r.Total_Revenue__c);
String email = cel.Email__c;
String address = cel.Customer__r.Street__c;
String companyType = cel.Customer__r.Company_Type__c +'.';
htmlBody += '<tr><td style="padding:5px;">' + companyType + companyName +'</td><td style="padding:5px;">' + birthdate + '</td><td style="padding:5px;">' + viprevenue + '</td><td style="padding:5px;">' + vipranking + '</td><td style="padding:5px;">' + revenue +'</td><td style="padding:5px;">' + email +'</td><td style="padding:5px;">' + address +'</td></tr>';
}
htmlBody += '</table><br><br>Berikut ini adalah list Customer yang hari ini ber-Ulang Tahun : <br><br>';
htmlBody += '<table border="1" style="border-collapse: collapse; padding:5px;"><tr><th style="padding:5px;"><b>Nama Pimpinan</b></th><th style="padding:5px;"><b>Nama Perusahaan</b></th><th style="padding:5px;"><b>Jabatan</b></th><th style="padding:5px;"><b>Tanggal Ulang Tahun</b></th><th style="padding:5px;"><b>VIP by Min Revenue</b></th><th style="padding:5px;"><b>VIP by Rank</b></th><th style="padding:5px;"><b>Total Revenue</b></th><th style="padding:5px;"><b>Email</b></th><th style="padding:5px;"><b>Alamat</b></th></tr>';
for (Custom_Emaill_Log__c celc : listContact){
String namaPimpinan = celc.Contact__r.Name;
String companyName = celc.Customer__r.Name;
String jabatan = celc.Contact__r.Posisi__c;
String birthdate = String.valueof(celc.Send_Date__c);
String viprevenue;
if (celc.Customer__r.VIP_Type_Rangking__c != NULL){
viprevenue = celc.Customer__r.VIP_Type_Rangking__c;
}
else {
viprevenue = '-';
}
String vipranking;
if(celc.Customer__r.VIP_Type_Revenue__c != NULL){
vipranking = celc.Customer__r.VIP_Type_Revenue__c;
}
else {
vipranking = '-';
}
String revenue = String.valueof(celc.Customer__r.Total_Revenue__c);
String email = celc.Email__c;
String address = celc.Contact__r.Street__c;
String companyType = celc.Customer__r.Company_Type__c +'.';
htmlBody += '<tr><td style="padding:5px;">' + namaPimpinan + '</td><td style="padding:5px;">' + companyType + companyName +'</td><td style="padding:5px;">' + jabatan + '</td><td style="padding:5px;">' + birthdate + '</td><td style="padding:5px;">' + viprevenue + '</td><td style="padding:5px;">' + vipranking + '</td><td style="padding:5px;">' + revenue +'</td><td style="padding:5px;">' + email +'</td><td style="padding:5px;">' + address +'</td></tr>';
}
List<String> sendTo = new List<String>();
List<Named_User__c> manager = [SELECT Id, User__c, Email__c, Name FROM Named_User__c
WHERE User__r.Profile.Name LIKE '%Manager%'];
for (Named_User__c nm : manager) {
if (nm.Name != null){
htmlBody = htmlBody.replace('{!User.Name}', nm.Name);
}
else{
htmlBody = htmlBody.replace('{!User.Name}', '[Name Blank]');
}
SendTo.add(nm.Email__c);
}
List<Named_User__c> staff = [SELECT Id, User__c, Email__c, Name FROM Named_User__c
WHERE User__r.Profile.Name LIKE '%Staff%'];
for (Named_User__c nm2 : staff) {
if (nm2.Name != null){
htmlBody = htmlBody.replace('{!User.Name}', nm2.Name);
}
else{
htmlBody = htmlBody.replace('{!User.Name}', '[Name Blank]');
}
SendTo.add(nm2.Email__c);
}
OrgWideEmailAddress owa = [select id, Address, DisplayName from OrgWideEmailAddress WHERE Address = '[email protected]' limit 1];
for(string sendToEmail : sendTo){
if(sendToEmail != null){
system.debug('===strOwnerEmail===='+sendToEmail);
//String [] toaddress= New String[]{'[email protected]'};
mail.setOrgWideEmailAddressId(owa.Id);
mail.setToAddresses(sendTo);
mail.setSenderDisplayName('IPC - System Administrator');
mail.setSubject(subject);
mail.setHtmlBody(htmlBody);
//List<String> ccTo = new List<String>();
//ccTo.add('[email protected]');
//mail.setCcAddresses(ccTo);
mail.setSaveAsActivity(false);
mails.add(mail);
}
}
Messaging.sendEmail(mails);
}
}
and the test class :
@isTest
public class SendedEmail_Test {
static testMethod void myTest() {
Profile profileId = [SELECT Id FROM Profile WHERE Name = 'Manager CS' LIMIT 1];
User usr = new User(LastName = 'LIVESTON',
FirstName='JASON',
Alias = 'jliv',
Email = '[email protected]',
Username = '[email protected]',
ProfileId = profileId.id,
TimeZoneSidKey = 'GMT',
LanguageLocaleKey = 'en_US',
EmailEncodingKey = 'UTF-8',
LocaleSidKey = 'en_US'
);
Profile profileId2 = [SELECT Id FROM Profile WHERE Name = 'Staff HPL' LIMIT 1];
User usr2 = new User(LastName = 'LIVESTON2',
FirstName='JASON2',
Alias = 'jliv2',
Email = '[email protected]',
Username = '[email protected]',
ProfileId = profileId2.id,
TimeZoneSidKey = 'GMT',
LanguageLocaleKey = 'en_US',
EmailEncodingKey = 'UTF-8',
LocaleSidKey = 'en_US'
);
Named_User__c nu = new Named_User__c();
nu.User__c = usr.id;
nu.name = 'test';
nu.First_Name__c = 'test';
nu.Email__c = '[email protected]';
nu.First_Name__c = 'test';
insert nu;
Named_User__c nu2 = new Named_User__c();
nu2.User__c = usr2.id;
nu2.name = 'test';
nu2.First_Name__c = 'test';
nu2.Email__c = '[email protected]';
nu2.First_Name__c = 'test';
insert nu2;
Master_VIP_Segmentasi__c seg = new Master_VIP_Segmentasi__c();
seg.Rangking_From_1__c = 1;
insert seg;
Account acc = new Account();
acc.Named_User__c = nu.id;
acc.Company_Type__c = 'PT';
acc.Name = 'test Village';
acc.Customer_Group__c = 'BUMN';
acc.Company_Birthday__c = date.today();
acc.Company_Establishment_Deed__c = date.today();
acc.Joining_Since__c = date.today();
acc.Rangking__c = seg.Rangking_From_1__c;
Insert acc;
Billing_Account__c ba = new Billing_Account__c();
ba.Account__c = acc.id;
ba.name = 'billing name';
ba.Branch__c = 'Tanjung Priok';
insert ba;
Contact cc = new Contact();
cc.LastName = 'test';
cc.AccountId = acc.id;
cc.MobilePhone = '12312313';
cc.Email = '[email protected]';
cc.Birthdate = date.today()-365;
insert cc;
Custom_Emaill_Log__c newCEL1 = new Custom_Emaill_Log__c();
newCEL1.Contact__c = cc.id;
newCEL1.Customer__c = cc.AccountId;
newCEL1.Email__c = cc.Email;
newCEL1.Send_Date__c = cc.Birthdate;
newCEL1.Status__c = 'Send';
newCEL1.Tipe_Data__c = 'Contact';
newCEL1.Actual_Send_Date__c = date.today();
insert newCEL1;
Custom_Emaill_Log__c newCEL2 = new Custom_Emaill_Log__c();
newCEL2.Contact__c = cc.id;
newCEL2.Customer__c = cc.AccountId;
newCEL2.Email__c = cc.Email;
newCEL2.Send_Date__c = cc.Birthdate;
newCEL2.Status__c = 'Send';
newCEL2.Tipe_Data__c = 'Customer';
newCEL2.Actual_Send_Date__c = date.today();
insert newCEL2;
Test.startTest();
String jobId = System.schedule('SendedEmail',
SendedEmail.CRON_EXP,
new SendedEmail());
Test.stopTest();
}
}