You need to sign in to do that
Don't have an account?
![raji Galla raji Galla](https://dfc-org-production.my.site.com/img/userprofile/default_profile_45_v2.png)
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%![User-added image](/forums/servlet/rtaImage?eid=9060G0000005RFO&feoid=Body&refid=0EM0G0000003Dbz)
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