You need to sign in to do that
Don't have an account?
raji Galla
Need help in testclass for trigger
Hi All,
Plese find the following test coverclass and testclass. The trigger is on 'Vistit_Line_items__C' and logic is finding the check in and check out longitude values of first visit to second visit based on Vist_date__C field in visit object .
my test class cover only 43%
Complete class is
Thansk and Regards,
Raji
Plese find the following test coverclass and testclass. The trigger is on 'Vistit_Line_items__C' and logic is finding the check in and check out longitude values of first visit to second visit based on Vist_date__C field in visit object .
my test class cover only 43%
Complete class is
public class VisitdistanceCalculat { Public void visitdistancemethod(List<Visit_Line_Item__c> vltri){ List<Visit_Line_Item__c> updatevisitlist ; Date vistdate ; set<id> triid = new set<id>();//inset record id -trigger.new for(Visit_Line_Item__c vist : vltri){ updatevisitlist = new list<Visit_Line_Item__c>(); triid.add(vist.id); // The first visit record visitdistance is zero System.debug('********checkintime ******'+ vist.check_in_location__Latitude__s); System.debug('********checkout******'+vist.check_out_Location__Latitude__s ); System.debug('********vistdate******'+vist.Vist_Date__c); //if check in value and checkout null add checkin If(string.valueof(vist.Check_in_Location__Longitude__s) !=null && string.valueof(vist.Check_Out_Location__Longitude__s) == null) { System.debug('********checkintime ----------'+ vist.Check_in_Location__Longitude__s ); vist.Camparecheckinlocation__Longitude__s = vist.check_in_location__Longitude__s; vist.Camparecheckinlocation__Latitude__s = vist.check_in_location__Latitude__s; vistdate=vist.Vist_Date__c; updatevisitlist.add(vist); } //if checkin null and checkout value add chekout else if(string.valueof(vist.Check_in_Location__Longitude__s) ==null && string.valueof(vist.Check_Out_Location__Longitude__s) != null ){ System.debug('********checkout----------'+vist.Check_out_Location__Longitude__s ); vist.Camparecheckinlocation__Longitude__s=vist.check_out_Location__Longitude__s; vist.Camparecheckinlocation__Latitude__s=vist.check_out_Location__Latitude__s; vistdate=vist.Vist_Date__c; updatevisitlist.add(vist); } /* //Both checkin and check out null add usergeo location else if(string.valueof(vist.Check_in_Location__Longitude__s) ==null && string.valueof(vist.Check_Out_Location__Longitude__s) == null && string.valueof(userlist[0].User_Home_Geolocation__Longitude__s) != null){ System.debug('********userlocation ----------'+ userlist[0].User_Home_Geolocation__Longitude__s ); vist.Camparecheckinlocation__Longitude__s =userlist[0].User_Home_Geolocation__Longitude__s; vist.Camparecheckinlocation__Latitude__s = userlist[0].User_Home_Geolocation__Latitude__s; vistdate=vist.Vist_Date__c; updatevisitlist.add(vist); }*/ //Both have values add chekin log else if(string.valueof(vist.Check_in_Location__Longitude__s) !=null && string.valueof(vist.Check_Out_Location__Longitude__s) != null){ System.debug('********checkin-----'+vist.Check_in_Location__Longitude__s ); vist.Camparecheckinlocation__Longitude__s=vist.Check_in_Location__Longitude__s; vist.Camparecheckinlocation__Latitude__s=vist.Check_in_Location__Latitude__s; vistdate=vist.Vist_Date__c; updatevisitlist.add(vist); } }//end triggernew system.debug('******trigger.newlist****' + updatevisitlist);//user location not there then not do buillogic List<Visit_Line_Item__c> VisitlineitemList = new List<Visit_Line_Item__c>(); VisitlineitemList=[select id,Camparecheckinlocation__c,Check_In__c,Check_out__c, Camparecheckinlocation__latitude__s,Camparecheckinlocation__longitude__s , VisitDistance__c, Check_in_Location__c,Check_Out_Location__c,ownerid,Vist_Date__c,Checkin_Time__c,Checkout_Time__c, Account__c,Check_in_Location__longitude__s,Check_Out_Location__longitude__s,check_in_location__latitude__s,check_out_Location__Latitude__s from Visit_Line_Item__c where ownerid =: UserInfo.getUserId()and ( Checkin_Time__c != null or Checkout_Time__c != null) and Vist_Date__c =: vistdate and id not in : triid ]; system.debug('Today updated recrods of Visitlineitems**********'+ VisitlineitemList); system.debug('Today updated recrods of Visitlineitems**********'+ VisitlineitemList.size()); Map<DateTime, visit_Line_item__c> unsortmapVistlatest = new Map<DateTime, visit_Line_item__c>(); if(VisitlineitemList.size()>0 ){ For(visit_Line_item__c lavist : VisitlineitemList){ if(lavist.Checkin_Time__c != null){ unsortmapVistlatest.put( lavist.Checkin_Time__c, lavist); } else unsortmapVistlatest.put( lavist.Checkout_Time__c, lavist); } System.debug('***unsortmap****' + unsortmapVistlatest); Map<DateTime, visit_Line_item__c> mapSortVistlatest = new Map<DateTime, visit_Line_item__c>(); List<Datetime> mapkeys = new list<Datetime>(); DateTime dd;//to find size of sortkeys mapkeys.addall(unsortmapVistlatest.keyset()); mapkeys.sort(); if(mapkeys.size()>0) dd=mapkeys.get(mapkeys.size()-1); system.debug('********mapkeys sortlist**** '+ mapkeys); for(Datetime keyl:mapkeys){ visit_Line_item__c vlt = unsortmapVistlatest.get(keyl); mapSortVistlatest.put(keyl,vlt); } List<visit_Line_item__c > requvlist = new List<visit_Line_item__c>(); visit_Line_item__c vlnm = new visit_Line_item__c (); vlnm=mapSortVistlatest.get(dd); requvlist.add(vlnm); System.debug('*******mapSortVistlatest*** '+ mapSortVistlatest); System.debug('*********** latest chin and chout updat records'+ vlnm); if(requvlist.size()>0 ){ // convert to radians Double dDepartLat; Double dDepartLong ; if(string.valueof(requvlist[0].check_in_location__longitude__s)!= null && string.valueof(requvlist[0].check_out_Location__Longitude__s) == null){ dDepartLat = requvlist[0].check_in_location__latitude__s* 3.14159 / 180; dDepartLong = requvlist[0].check_in_location__longitude__s* 3.14159 / 180; } else if(string.valueof(requvlist[0].check_in_location__longitude__s)!= null && string.valueof(requvlist[0].check_out_Location__Longitude__s) != null){ dDepartLat = requvlist[0].check_in_location__latitude__s* 3.14159 / 180; dDepartLong = requvlist[0].check_in_location__longitude__s* 3.14159 / 180; } else if(string.valueof(requvlist[0].check_in_location__longitude__s) == null && string.valueof( requvlist[0].check_out_Location__Longitude__s) != null){ dDepartLat = requvlist[0].check_out_Location__Latitude__s* 3.14159 / 180; dDepartLong = requvlist[0].check_out_location__longitude__s* 3.14159 / 180; } System.debug('****Visitlit checkin'+ requvlist[0].check_in_location__latitude__s); System.debug('****Visitlit checkout'+ requvlist[0].check_out_Location__Latitude__s); system.debug('******triggnew** **** chekin***users*==> '+ updatevisitlist[0].Camparecheckinlocation__latitude__S); system.debug('******triggnew****** chekin***user*==> '+ updatevisitlist[0].Camparecheckinlocation__longitude__s); Double dArrivalLat = updatevisitlist[0].Camparecheckinlocation__latitude__S* 3.14159 / 180; Double dArrivalLong = updatevisitlist[0].Camparecheckinlocation__Longitude__S* 3.14159 / 180; Double dDeltaLong = dArrivalLong - dDepartLong; Double dDeltaLat = dArrivalLat - dDepartLat; // calculate angle using the haversine formula Double dHaversineResult = Math.Sin( dDeltaLat / 2 ) * Math.Sin( dDeltaLat / 2 ) + Math.Cos( dDepartLat ) * Math.Cos( dArrivalLat ) * Math.Sin( dDeltaLong / 2 ) * Math.Sin( dDeltaLong / 2 ); // calculate distance by multiplying arc-tangent by the planet radius in miles Double dDistance = 1.60934 * 3958.76 * 2 * Math.Atan2( Math.Sqrt( dHaversineResult ), Math.Sqrt( 1 - dHaversineResult ) ); System.debug('Distance============ ' + dDistance); updatevisitlist[0].VisitDistance__c=dDistance; } } // the the first record distance is zero i.e VisitlineitemListsoql is zero else for(visit_Line_item__c vt : vltri){ vt.VisitDistance__c=0; } } }When i used test.runastest() method at if condition VisitlineitemList.size()>0 that time system.nullpoint exception error for update dml statems in class and testclass. following is my testclass
@isTest(SeeAllData=true) public class TestCreatePlannedDateUpdate{ public static testmethod void VisitDateTest(){ String[] mnth = new String[12]; mnth [0] = 'January'; mnth [1]= 'February'; mnth [2]= 'March'; mnth [3]= 'April'; mnth [4]= 'May'; mnth [5]= 'June'; mnth [6]= 'July'; mnth [7]= 'August'; mnth [8]= 'September'; mnth [9]= 'October'; mnth [10]= 'November'; mnth [11]= 'December'; Profile p = [SELECT Id FROM Profile WHERE Name='Sales Officer']; User u = new User(Alias = 'standt', Email='vkanneganti-5@hotmail.com', EmailEncodingKey='UTF-8', LastName='Testing', FirstName='T',LanguageLocaleKey='en_US', LocaleSidKey='en_US', ProfileId = p.Id, TimeZoneSidKey='America/Los_Angeles', UserName='vkanneganti-5@hotmail.com'); insert u; Visit__c visitPlan = new Visit__c(); visitPlan.Version__c = 'test'; Integer nmnthNum = (System.Today().month()); system.debug('-------'+ nmnthNum); if(nmnthNum ==12) nmnthNum =1; else nmnthNum = nmnthNum+1; String dt= '10/'+nmnthNum+'/2016'; system.debug('-------'+dt); Date d= Date.parse(dt); visitPlan.Start_Date__c = d; visitPlan.End_Date__c =d+1; system.debug('-------'+visitPlan.Start_Date__c); visitPlan.Week_Number__c= '2'; visitPlan.Month__c=mnth[nmnthNum-1]; insert visitPlan; //fetch login user id user loginus= new user(); loginus=[select id, name from user where id =:UserInfo.getUserId()]; //insert account Account acc = new account(); acc.name='testacc'; insert acc; // only give check in value Visit_Line_Item__c vli= new Visit_Line_Item__c(); vli.Visit_Sequence__c='1'; //commented below line for remove the Masterdetail relation of Visit and Visitplan casenum 12529 // vli.Visit__c = visitPlan.Id; vli.Vist_Date__c = system.today(); vli.Account__c=acc.id; insert vli; vli.Check_In_Location__latitude__s = 17.428107699999998; vli.Check_In_Location__longitude__s = 78.43966999999999; checkRecursive.runIsBeforeInsert = true; update vli; //only give checkout location Visit_Line_Item__c vli1= new Visit_Line_Item__c(); vli1.Visit_Sequence__c='1'; vli1.Vist_Date__c = system.today(); vli1.Account__c=acc.id; vli1.ownerid=loginus.id; insert vli1; vli1.Check_Out_Location__Latitude__s = 78.43966999999999; vli1.Check_out_Location__longitude__s = 78.43966999999999; checkRecursive.runIsBeforeInsert = true; Update vli1; //both checkin and check out values Visit_Line_Item__c vli2= new Visit_Line_Item__c(); vli2.Visit_Sequence__c='1'; vli2.Vist_Date__c = system.today(); vli2.ownerid=loginus.id; vli2.Account__c=acc.id; insert vli2; vli2.Check_In_Location__latitude__s = 17.428107699999998; vli2.Check_In_Location__longitude__s = 78.43966999999999; vli2.Check_Out_Location__Latitude__s = 78.43966999999999; vli2.Check_out_Location__longitude__s = 78.43966999999999; checkRecursive.runIsBeforeInsert = true; Update vli2; } }
Thansk and Regards,
Raji