-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
0Likes Given
-
22Questions
-
42Replies
batch apex class with upsert
Hi All,
I have 4 objects Forecast__c, ForeCast_Details__C, Opportunity and Opportunity_Forecast__c. Opportunity object contains multiple Opportunity_Forecast__c. Forecast__c has looup to Opportunity Object. Now i have to write batch apex class with upsert the ForeCast_Details__C object records with value of Opportunity_Forecast__c.Could anyone please help on this.
Thanks in Advance.
I have 4 objects Forecast__c, ForeCast_Details__C, Opportunity and Opportunity_Forecast__c. Opportunity object contains multiple Opportunity_Forecast__c. Forecast__c has looup to Opportunity Object. Now i have to write batch apex class with upsert the ForeCast_Details__C object records with value of Opportunity_Forecast__c.Could anyone please help on this.
Thanks in Advance.
- Padmini S 26
- April 26, 2018
- Like
- 0
size method code coverage
Hi,
Below is the apex class and test class. i need to increase code coverage. Please help me to increase code coverage.
Below is the apex class and test class. i need to increase code coverage. Please help me to increase code coverage.
@RestResource(urlMapping='/Branch/*') global class BranchMaster { @HttpPost global static void CreateBranch() { Map<String,String> mapResponse = new Map<String,String>(); RestRequest req = RestContext.request; RestResponse res = RestContext.response; try{ List<Branch__c> createBranchList = new List<Branch__c>(); List<Branch__c> updateBranchList = new List<Branch__c>(); BranchData bdata = new BranchData(); bdata = (BranchData)JSON.deserialize(req.requestBody.toString(),BranchData.class); List<Branch__c> beList = [select Id, Active__c, Branch_Address__c, Branch_Code__c, Catchment_Cities__c, Channel__c, City_ID__c, Name, Region_ID__c from Branch__c where Branch_Code__c =: bdata.Branch_Code]; if(beList.size()>0) { Branch__c branchList = beList[0]; if(bdata.Name!='') branchList.Name = bdata.Name; branchList.Active__c = Boolean.valueOf(bdata.Active); branchList.Branch_Address__c = bdata.Branch_Address; branchList.Channel__c = bdata.Channel; if(bdata.Catchment_Cities!='') branchList.Catchment_Cities__c = bdata.Catchment_Cities; if(bdata.City_ID!='') { City__c c = new City__c(); c.CityID__c = bdata.City_ID; branchList.City__r = c; } if(bdata.Region_ID!='') { Region__c r = new Region__c(); r.Region_ID__c = bdata.Region_ID; branchList.Region__r = r; } if(bdata.Zone_ID!='') { Zone__c z = new Zone__c(); z.Zone_ID__c = bdata.Zone_ID; branchList.Zone__r = z; } if(bdata.Branch_Head!='') { Branch_Employee__c bh = new Branch_Employee__c(); bh.Payrole_ID__c = bdata.Branch_Head; branchList.Branch_Head__r = bh; } if(bdata.CSO_Channel_Head!='') { Branch_Employee__c ch = new Branch_Employee__c(); ch.Payrole_ID__c = bdata.CSO_Channel_Head; branchList.CSO_Channel_Head__r = ch; } if(bdata.Zonal_Head!='') { Branch_Employee__c zh = new Branch_Employee__c(); zh.Payrole_ID__c = bdata.Zonal_Head; branchList.Zonal_Head__r = zh; } if(bdata.RM_Channel_Head!='') { Branch_Employee__c rmch = new Branch_Employee__c(); rmch.Payrole_ID__c = bdata.RM_Channel_Head; branchList.RM_Channel_Head__r = rmch; } updateBranchList.add(branchList); if(updateBranchList.size()>0) { update updateBranchList; mapResponse.put('success', '1'); mapResponse.put('error', '0'); mapResponse.put('Branch_Code', bdata.Branch_Code); mapResponse.put('errorCode', ''); mapResponse.put('successCode', 'Branch updated successfully'); res.responseBody = Blob.valueOf(JSON.serialize(mapResponse)); } } else { Branch__c branch = new Branch__c(); branch.Name = bdata.Name; branch.Branch_Code__c = bdata.Branch_Code; branch.Active__c = Boolean.valueOf(bdata.Active); branch.Branch_Address__c = bdata.Branch_Address; branch.Channel__c = bdata.Channel; branch.Catchment_Cities__c = bdata.Catchment_Cities; if(bdata.City_ID!='') { City__c c = new City__c(); c.CityID__c = bdata.City_ID; branch.City__r = c; } if(bdata.Region_ID!='') { Region__c r = new Region__c(); r.Region_ID__c = bdata.Region_ID; branch.Region__r = r; } if(bdata.Zone_ID!='') { Zone__c z = new Zone__c(); z.Zone_ID__c = bdata.Zone_ID; branch.Zone__r = z; } if(bdata.Branch_Head!='') { Branch_Employee__c bh = new Branch_Employee__c(); bh.Payrole_ID__c = bdata.Branch_Head; branch.Branch_Head__r = bh; } if(bdata.CSO_Channel_Head!='') { Branch_Employee__c ch = new Branch_Employee__c(); ch.Payrole_ID__c = bdata.CSO_Channel_Head; branch.CSO_Channel_Head__r = ch; } if(bdata.Zonal_Head!='') { Branch_Employee__c zh = new Branch_Employee__c(); zh.Payrole_ID__c = bdata.Zonal_Head; branch.Zonal_Head__r = zh; } if(bdata.RM_Channel_Head!='') { Branch_Employee__c rmch = new Branch_Employee__c(); rmch.Payrole_ID__c = bdata.RM_Channel_Head; branch.RM_Channel_Head__r = rmch; } createBranchList.add(branch); if(createBranchList.size()>0) { insert createBranchList; mapResponse.put('success', '1'); mapResponse.put('error', '0'); mapResponse.put('Brach_Code', bdata.Branch_Code); mapResponse.put('errorCode', ''); mapResponse.put('successCode', 'Branch inserted successfully'); res.responseBody = Blob.valueOf(JSON.serialize(mapResponse)); } } } catch(Exception e) { mapResponse.put('success', '0'); mapResponse.put('error', '1'); mapResponse.put('Branch_Code', ''); mapResponse.put('errorCode', e.getMessage()); mapResponse.put('successCode', ''); res.responseBody = Blob.valueOf(JSON.serialize(mapResponse)); } // catch block } global class BranchData { public String Name{get;set;} public String Branch_Code{get;set;} public String Active{get;set;} public String Branch_Address{get;set;} public String Channel{get;set;} public String Catchment_Cities{get;set;} public String City_ID{get;set;} public String Region_ID{get;set;} public String Zone_ID{get;set;} public String Branch_Head{get;set;} public String CSO_Channel_Head{get;set;} public String Zonal_Head{get;set;} public String RM_Channel_Head{get;set;} } }
@isTest public class TestBranchMaster { @isTest public static void testMethodBranchMaster() { BranchMaster.BranchData bd = new BranchMaster.BranchData(); bd.Name = 'branch'; bd.Branch_Code='A112'; bd.Active = 'true'; bd.Branch_Address = '9 GROUND FLOOR RAJENDRA BHAWAN'; bd.Channel = 'Retail'; bd.Catchment_Cities= 'nasik'; bd.City_ID = objCity.CityID__c; bd.Region_ID = objRegion.Region_ID__c; bd.Zone_ID = objZone.Zone_ID__c; bd.Branch_Head = ''; bd.CSO_Channel_Head = ''; bd.Zonal_Head = ''; bd.RM_Channel_Head = ''; objCity.CityID__c= bd.City_ID; update objCity; try { Test.StartTest(); Test.setMock(HttpCalloutMock.class, new TestCalloutMock()); List<Branch__c> beList = [select Id, Active__c, Branch_Address__c, Branch_Code__c, Catchment_Cities__c, Channel__c, City_ID__c, Name, Region_ID__c from Branch__c]; Branch__c b3 = new Branch__c( Name='Delhi Branch_Retail',Branch_Mobile__c = '9811352726', Branch_Phone__c = '011-64640938,25734989,41538597', Branch_Address__c = '9 GROUND FLOOR RAJENDRA BHAWAN', Active__c = true, Channel__c='Retail', Branch_Code__c='A101',Catchment_Cities__c='nasik', Catchment_Pincode__c='110015,110016' ); Branch__c b4 = new Branch__c( Name='Delhi Branch_Retail',Branch_Mobile__c = '9811352726',Branch_Phone__c = '011-64640938,25734989,41538597', Branch_Address__c = '9 GROUND FLOOR RAJENDRA BHAWAN',Active__c = true, Channel__c='Retail', Branch_Code__c='A101', Catchment_Cities__c='nasik', Catchment_Pincode__c='110015,110016' ); list<Branch__c> bList = new list<Branch__c>(); bList.add(b3); bList.add(b4); insert bList; BranchMaster bm = new BranchMaster(); BranchMaster.CreateBranch(); system.assertequals(bList.size(),2); delete bList; BranchMaster.CreateBranch(); system.assertequals(bList.size(),0); Test.StopTest(); } Catch( Exception e) { } }}Thanks in Advance.
- Padmini S 26
- September 04, 2017
- Like
- 0
increase apex class code coverage
Hi,
I have written test class for below apex class. Code coverage is 25% only.
Thanks in Advance.
I have written test class for below apex class. Code coverage is 25% only.
public class OpportunityTriggerHelper_AOPLine{ // this function use for update aop line record called when opprtunity status closed . public void updateAOPLineOnOppClosed(){ List<Opportunity> newOpportunities = (List<Opportunity>)trigger.new; Map<Id,Opportunity> oldMapOpportunities = (Map<Id,Opportunity>)trigger.oldMap; Map<Id,Opportunity> newMapOpportunities =(Map<Id,Opportunity>)trigger.newMap; List<Id> oppIds = new List<Id>(); for(Opportunity opp : newOpportunities ){ if(oldMapOpportunities.get(opp.Id).StageName != opp.StageName && opp.StageName == 'Closed' && opp.Month_sap__c != null && opp.Month__c != null && opp.Financial_Year__c!= null) oppIds.add(opp.Id); } if(oppIds.size() > 0){ Set<Id> useridSet = new Set<Id>(); Set<String> oppMonths = new Set<String>(); Set<String> oppYears = new Set<String>(); List<Opportunity> oppList = [SELECT Id,Account.Category__c,MTD_Volume__c,MTD_Focussed_Volume__c,MTD_GP__c,Month__c,Year__c,Financial_Year__c,OwnerId,Owner.ManagerId,Owner.Manager.ManagerId,(SELECT Id, UserId,User.ManagerId,User.Manager.ManagerId,TeamMemberRole FROM OpportunityTeamMembers WHERE TeamMemberRole != null AND UserId != null) FROM Opportunity WHERE Id IN:oppIds]; for(Opportunity opp : oppList){ oppMonths.add(opp.Month__c); oppYears.add(opp.Financial_Year__c); if(opp.OwnerId != null) useridSet.add(opp.OwnerId); if(opp.Owner.ManagerId != null) useridSet.add(opp.Owner.ManagerId); for(OpportunityTeamMember oppTemMember : opp.OpportunityTeamMembers){ useridSet.add(oppTemMember.UserId); if(oppTemMember.User.ManagerId != null) useridSet.add(oppTemMember.User.ManagerId); if(oppTemMember.User.Manager.ManagerId != null) useridSet.add(oppTemMember.User.Manager.ManagerId); } } if(useridSet.size() > 0 && oppMonths.size() >0 && oppYears.size() >0){ Map<Id,User> userMap = new Map<Id,User>([SELECT Id,Profile.Name FROM User WHERE Id IN: useridSet]); Map<String,Id> aopLnMap = new Map<String,Id>(); for(AOP_Line__c aopLn : [SELECT Id,Month__c,MTD_Regional_Vol_in_kL__c, MTD_National_Vol_in_kL__c,MTD_Focus_Vol_in_kL__c, MTD_Regional_GP__c, MTD_National_GP__c, MTD_New_Win_in_kL__c,Valvoline_Financial_Year__c,AOP_Plan_User__c FROM AOP_Line__c WHERE AOP_Plan_User__c IN : useridSet AND Month__c IN : oppMonths AND Valvoline_Financial_Year__c IN : oppYears]){ String keyMap = aopLn.Month__c.toUpperCase() +'#'+aopLn.Valvoline_Financial_Year__c+'#'+aopLn.AOP_Plan_User__c; aopLnMap.put(keyMap,aopLn.Id); } if(aopLnMap.size() > 0){ List<Monthly_line_Logs__c> inserMonthLn = new List<Monthly_line_Logs__c>(); for(Opportunity opp : oppList){ opp.MTD_Volume__c = opp.MTD_Volume__c != null ?opp.MTD_Volume__c : 0; opp.MTD_GP__c = opp.MTD_GP__c != null ? opp.MTD_GP__c : 0; opp.MTD_Focussed_Volume__c = opp.MTD_Focussed_Volume__c != null ? opp.MTD_Focussed_Volume__c : 0; String keyMap = opp.Month__c.toUpperCase() +'#'+opp.Financial_Year__c; if(opp.OwnerId != null){ if(aopLnMap.containsKey(keyMap+'#'+opp.OwnerId)){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+opp.OwnerId); mnthAopLn.MTD_Regional_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; mnthAopLn.MTD_Regional_GP__c = opp.MTD_GP__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); } } //M1 : TBM's Manager if(opp.Owner.ManagerId != null){ if(aopLnMap.containsKey(keyMap+'#'+opp.Owner.ManagerId)){ if(userMap.get(opp.Owner.ManagerId).profile.name.equalsIgnoreCase('ZM')){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+opp.Owner.ManagerId); mnthAopLn.MTD_Regional_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; mnthAopLn.MTD_Regional_GP__c = opp.MTD_GP__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); }else if(userMap.get(opp.Owner.ManagerId).profile.name.equalsIgnoreCase('NSH')){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+opp.Owner.ManagerId); mnthAopLn.MTD_National_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; mnthAopLn.MTD_National_GP__c = opp.MTD_GP__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); } } } if(opp.Owner.Manager.ManagerId != null){ if(aopLnMap.containsKey(keyMap+'#'+opp.Owner.Manager.ManagerId)){ if(userMap.get(opp.Owner.Manager.ManagerId).profile.name.equalsIgnoreCase('NSH')){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+opp.Owner.Manager.ManagerId); mnthAopLn.MTD_National_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; mnthAopLn.MTD_National_GP__c = opp.MTD_GP__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); } } } for(OpportunityTeamMember oppTemMember : opp.OpportunityTeamMembers){ if(oppTemMember.TeamMemberRole.EqualsIgnoreCase('RKAM')){ if(aopLnMap.containsKey(keyMap+'#'+oppTemMember.UserId)){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+oppTemMember.UserId); mnthAopLn.MTD_National_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_National_GP__c = opp.MTD_GP__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); } if(oppTemMember.User.ManagerId != null && oppTemMember.User.ManagerId != opp.Owner.ManagerId){ if(aopLnMap.containsKey(keyMap+'#'+oppTemMember.User.ManagerId)){ if(userMap.get(oppTemMember.User.ManagerId).profile.name.equalsIgnoreCase('ZM')){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+oppTemMember.User.ManagerId); mnthAopLn.MTD_National_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_National_GP__c = opp.MTD_GP__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); } } } }else if(oppTemMember.TeamMemberRole.EqualsIgnoreCase('NKAM')){ if(aopLnMap.containsKey(keyMap+'#'+oppTemMember.UserId)){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+oppTemMember.UserId); mnthAopLn.MTD_National_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; mnthAopLn.MTD_National_GP__c = opp.MTD_GP__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); } }else if(oppTemMember.TeamMemberRole.EqualsIgnoreCase('Segment Manager')){ if(aopLnMap.containsKey(keyMap+'#'+oppTemMember.UserId)){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+oppTemMember.UserId); mnthAopLn.MTD_National_Vol_in_kL__c = opp.MTD_Volume__c; mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; mnthAopLn.MTD_National_GP__c = opp.MTD_GP__c; if(opp.Account.Category__c== 'New') mnthAopLn.MTD_New_Win_in_kL__c = opp.MTD_Volume__c; inserMonthLn.add(mnthAopLn); } }else if(oppTemMember.TeamMemberRole.EqualsIgnoreCase('Product Manager')){ if(aopLnMap.containsKey(keyMap+'#'+oppTemMember.UserId)){ Monthly_line_Logs__c mnthAopLn = new Monthly_line_Logs__c(Monthly_Opportunity__c = opp.Id); mnthAopLn.Monthly_line__c = aopLnMap.get(keyMap+'#'+oppTemMember.UserId); mnthAopLn.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; inserMonthLn.add(mnthAopLn); } } } } if(inserMonthLn.size() > 0) insert inserMonthLn; } }} }}
Test Class: ========== @isTest public class OpportunityTriggerHelper_AOPLineTest1 { static testMethod void AOPTest1(){ List<Opportunity> oppLst= new List<Opportunity>(); profile p1 = [SELECT Id FROM Profile WHERE Name='NSH']; User u= new User(); u.FirstName ='Sagar'; u.Username='Sagar3443@acme.com'; u.LastName='Sagar'; u.Email='Sagar343@abc.com'; u.Alias='Sagar34'; u.CommunityNickname='Sagar'; u.TimeZoneSidKey='America/Los_Angeles'; u.LocaleSidKey='en_US'; u.EmailEncodingKey='UTF-8'; u.ProfileId = p1.Id; u.LanguageLocaleKey='en_US'; insert u; profile p3 = [SELECT Id FROM Profile WHERE Name='ZM']; User uzm= new User(); uzm.FirstName ='Sagar243'; uzm.Username='Sagar23@acme.com'; uzm.LastName='Saga3r'; uzm.Email='Sagar34342@abc.com'; uzm.Alias='Sagar234'; uzm.CommunityNickname='Sagar23'; uzm.TimeZoneSidKey='America/Los_Angeles'; uzm.LocaleSidKey='en_US'; uzm.EmailEncodingKey='UTF-8'; uzm.ProfileId = p3.Id; uzm.LanguageLocaleKey='en_US'; insert uzm; profile p2 = [SELECT Id FROM Profile WHERE Name='TBM']; User ut= new User(); ut.FirstName ='Sagar243'; ut.Username='Sagar23434@acme.com'; ut.LastName='Saga334r'; ut.Email='Sagar34342@abc.com'; ut.Alias='Sagar234'; ut.CommunityNickname='Sagar2'; ut.TimeZoneSidKey='America/Los_Angeles'; ut.LocaleSidKey='en_US'; ut.EmailEncodingKey='UTF-8'; ut.ProfileId = p2.Id; ut.LanguageLocaleKey='en_US'; ut.ManagerId=uzm.Id; insert ut; List<Account> accLst= new List<Account>(); String recordTypeSAP = Schema.SObjectType.Opportunity.getRecordTypeInfosByName().get('SAP Order').getRecordTypeId(); Account acc= new Account(); acc.Name='Testclass acc1'; acc.Is_Parent__c='N'; acc.Type='Factory Fill'; acc.Indutry_Segment__c='On-Highway'; acc.Market_Segment__c='PowerGen'; acc.Quote_allowed__c='Yes'; acc.BU_Name__c='OEM'; acc.Category__c='New'; acc.Account_Type__c='Factory Fill'; accLst.add(acc); insert accLst; Opportunity opp = new Opportunity(); opp.RecordTypeId = recordTypeSAP; opp.AccountId=acc.Id; opp.Name='Testclass Opp SAP'; opp.StageName='Open'; opp.Month__c='OCT'; opp.Year__c='2017'; opp.Financial_Year__c='2017'; opp.Month_sap__c='OCT'; opp.Calendar_Year__c ='2017'; opp.closeDate = System.today(); opp.ownerId = ut.Id; // opp.Owner.Manager.ManagerId = ut.ManagerId; opp.MTD_Volume__c = 100; opp.MTD_GP__c = 50; opp.MTD_Focussed_Volume__c = 100; insert opp; List<OpportunityTeamMember> oppTMLst= new List<OpportunityTeamMember>(); OpportunityTeamMember ptm= new OpportunityTeamMember(); ptm.TeamMemberRole = 'Zonal Manager'; ptm.OpportunityId = opp.Id; ptm.OpportunityAccessLevel = 'Edit'; ptm.UserId=uzm.Id; oppTMLst.add(ptm); OpportunityTeamMember ptm2= new OpportunityTeamMember(); ptm2.TeamMemberRole = 'NSH'; ptm2.OpportunityId = opp.Id; ptm2.OpportunityAccessLevel = 'Edit'; ptm2.UserId=u.Id; oppTMLst.add(ptm2); OpportunityTeamMember ptm3= new OpportunityTeamMember(); ptm3.TeamMemberRole = 'TBM'; ptm3.OpportunityId = opp.Id; ptm3.OpportunityAccessLevel = 'Edit'; ptm3.UserId=uzm.Id; oppTMLst.add(ptm3); insert oppTMLst; List<AOP__c> aopList = new List<AOP__c>(); AOP__c aop = new AOP__c(); aop.AOP_DSO__c = 52.00; aop.Valvoline_Financial_Year__c = '2017'; aop.AOP_Regional_Vol_in_kL__c = 1.00; aop.AOP_National_Vol_in_kL__c = 2.00; aop.AOP_Focus_Vol_in_kL__c = 1.00; aop.AOP_Regional_GP__c = 1; aop.AOP_Forecast_Accuracy__c =10; aop.AOP_New_Win_in_kL__c = 3.00; aop.AOP_National_GP__c = 1.00; aopList.add(aop); insert aopList; List<AOP_Line__c> AopLineList = new List<AOP_Line__c>(); AOP_Line__c aopLine3 = new AOP_Line__c(); aopLine3.AOP__c = aop.Id; aopLine3.AOP_Plan_User__c=uzm.Id; aopLine3.AOP_Regional_Vol_in_kL__c = aop.AOP_Regional_Vol_in_kL__c; aopLine3.AOP_New_Win_in_kL__c = aop.AOP_New_Win_in_kL__c; aopLine3.AOP_DSO__c = aop.AOP_DSO__c; aopLine3.AOP_Forecast_Accuracy__c = aop.AOP_Forecast_Accuracy__c; aopLine3.AOP_National_Vol_in_kL__c = aop.AOP_National_Vol_in_kL__c; aopLine3.AOP_Regional_GP__c = aop.AOP_Regional_GP__c; aopLine3.AOP_National_GP__c = aop.AOP_National_GP__c; aopLine3.AOP_Focus_Vol_in_kL__c = aop.AOP_Focus_Vol_in_kL__c; aopLine3.Month__c = 'Oct'; AopLineList.add(aopLine3); List<Monthly_Line_Logs__c> molList = new List<Monthly_Line_Logs__c>(); Monthly_line_Logs__c mon1 = new Monthly_line_Logs__c(); mon1.Monthly_line__c= opp.OwnerId; mon1.Monthly_Opportunity__c= opp.Id; mon1.MTD_Regional_Vol_in_kL__c = opp.MTD_Volume__c; mon1.MTD_Focus_Vol_in_kL__c = opp.MTD_Focussed_Volume__c; mon1.MTD_Regional_GP__c = opp.MTD_GP__c; mon1.MTD_New_Win_in_kL__c = opp.MTD_Volume__c ; molList.add(mon1); test.startTest(); try{ insert AopLineList; insert molList; } catch(Exception E){} opp.StageName='Closed'; update opp; test.stopTest(); }}Can anyone help on this how to increase the code coverage and where i am missing.
Thanks in Advance.
- Padmini S 26
- August 30, 2017
- Like
- 0
how to increase apex trigger code coverage in test class
Hi,
Below is the apex trigger which i have written. But i got only 64% code coverage. I am not getting how to increase code coverage. Please help me how to increase code coverage.
Below is the test class.
Below is the apex trigger which i have written. But i got only 64% code coverage. I am not getting how to increase code coverage. Please help me how to increase code coverage.
trigger LeadTrigger on Lead (before insert,before update, after update) { Map<String, String> dispositionMap = new Map<String, String>(); Map<String, DateTime> dispositionDateTimeMap = new Map<String, DateTime>(); List<Id> leadIds = new List<Id>(); if(Trigger.isInsert) { leadCategorizationClass.leadCategorization(Trigger.new,Trigger.oldMap); //Lead Categorization LeadHelperClass.AddNewLead(Trigger.New); //NEW LEAD leadAllocationClass.leadAllocation(Trigger.New); //GO TO CSO leadReAllocationClass.setRMLeadOpptyInfo(Trigger.New, Trigger.oldMap); //When RM is Assigned } else if(Trigger.isUpdate && Trigger.isBefore) { leadCategorizationClass.leadCategorization(Trigger.new,Trigger.oldMap); //Lead Categorization if(stopRecClass.stopRec==false){ leadReAllocationClass.leadAllocationFromQueue(Trigger.New,Trigger.oldMap);//CSO allocation for Queue. leadReAllocationClass.setRMLeadOpptyInfo(Trigger.New, Trigger.oldMap); //When RM is Assigned stopRecClass.stopRec=true; } for(lead ld: trigger.new) { if((ld.Dispositions__c!=trigger.oldMap.get(ld.id).Dispositions__c) && (ld.Dispositions__c=='Appointment Fixed' || ld.Dispositions__c=='Follow Up' || ld.Dispositions__c=='Engaged' || ld.Dispositions__c=='Number was busy' || ld.Dispositions__c=='Ringing Not Responding' || ld.Dispositions__c=='Not available')) { if(dispositionMap.containsKey(ld.Dispositions__c)) dispositionMap.put(ld.Dispositions__c,dispositionMAP.get(ld.Dispositions__c)+',91'+ld.Mobile_Number__c); else dispositionMap.put(ld.Dispositions__c,'91'+ld.Mobile_Number__c); if(ld.Dispositions__c=='Appointment Fixed') { dispositionDateTimeMap.put(ld.Dispositions__c, ld.Appointment_Creation_Date__c); } else if(ld.Dispositions__c=='Follow Up') { dispositionDateTimeMap.put(ld.Dispositions__c, ld.Prefered_Date_Time__c); } } ld.Email_Internal__c = ld.Email; } if(!dispositionMap.IsEmpty()){ // call method helper class LeadHelperClass.sendingSMS(dispositionMap, dispositionDateTimeMap); } } else if(Trigger.isUpdate && Trigger.isAfter) { // for FarEye Integration // system.debug('After Update Trigger Fired'); for(lead ld: Trigger.New) { if(((ld.Dispositions__c!=trigger.oldMap.get(ld.id).Dispositions__c) && (ld.Dispositions__c=='Appointment Fixed') && (ld.RM__c!=null)) || (ld.Resend_To_FarEye__c==true) ) { system.debug('Class Calling'); leadIds.add(ld.Id); //system.debug('Class End of Calling'); } } system.debug('IDS: '+leadIds.size()); if(leadIds.size()>0) { // call batch class here system.debug('<<<<<<<<<< Batch Called After Update'); Database.executeBatch(new BatchClassFarEyeIntegrationLead(leadIds)) ; }}}
Below is the test class.
@isTest public class TestLeadHelperClass { Public static testmethod void testLeadHelper() { Campaign cp = new Campaign(Name='test', IsActive=true, Interested_Product__c='LI', Channel__c='Retail'); insert cp; Lead L1 = new Lead(FirstName='Harsh',LastName='Test',Email= 'sachin@gmail.com', Status='CSOAllocated',Company = 'Test Name', Remarks__c= 'good',Client_Type__c='NRI',Postal_Code__c='474001',Tax_Bracket__c='5%',Disposition_Category__c='General', Dispositions__c='Appointment Fixed', Interested_Product__c='Mutual Fund',Mobile_Number__c='9669259232', Appointment_Creation_Date__c = System.Today(), Campaigns__c= cp.id); insert L1; List<Lead> LT = new List<Lead>(); LT.add(L1); Lead l = [SELECT Id, FirstName,LastName,Email,Status,Company ,Remarks__c,Client_Type__c,Postal_Code__c,Tax_Bracket__c,Disposition_Category__c,Dispositions__c,Interested_Product__c,Mobile_Number__c,Campaigns__c FROM Lead WHERE Id = :LT[0].Id]; l.FirstName= 'Test Account 2'; update l; Account acc = new Account(Name ='Testing', Client_Code_KYC__c='newsourcecode'); insert acc; Opportunity opp1 = new Opportunity( Name = 'mAWS Usage', StageName = 'Negotiations', CloseDate = System.today(),Email__c='abc@gmail.com', Client_Type__c='Individual', AccountId=acc.Id); insert opp1; Task t = new task(WhatID = opp1.id,Subject='Donni',Status='New',Priority='Normal'); insert t; SMSSetings__c sms = new SMSSetings__c(Disposition_Name__c = 'testsms',SMS_Content__c = 'testsms content' ); Map<String, String> dispositionMap = new Map<String, String>{'test'=>'test1'}; DateTime dat = datetime.newInstance(2014, 9, 15, 12, 30, 0); Map<String, DateTime> dispositionDateTimeMap= new Map<String, DateTime>{'test'=>dat}; LeadHelperClass lc = new LeadHelperClass(); LeadHelperClass.AddNewLead(LT); } }Thanks in Advance.
- Padmini S 26
- April 27, 2017
- Like
- 0
subordinate should not see his higher role records
Hi All,
We have two roles that Marketing Manager and Marketing Executive. Campaign OWD is Private. We have Parent campaign and sub campaign. Parent campaign owner always should be marketing manager. Sub campaign owner is marketing executive. But sub campaign has lookup to parent campaign. If i won't give parent campaign read permission to marketing executive then marketing executive can not save the sub campaign. Marketing executive will get error as insufficient privileges. I have created sharing rule that marketing executive can see marketing manager records with read only permission then only marketing executive can able to save the record or else marketing executive cannot save the record. But Actual requirement is Marketing executive not to see the parent campaign record, he can able to see only sub campaign. Could anyone help on this issue how to solve.
Thanks in Advance.
We have two roles that Marketing Manager and Marketing Executive. Campaign OWD is Private. We have Parent campaign and sub campaign. Parent campaign owner always should be marketing manager. Sub campaign owner is marketing executive. But sub campaign has lookup to parent campaign. If i won't give parent campaign read permission to marketing executive then marketing executive can not save the sub campaign. Marketing executive will get error as insufficient privileges. I have created sharing rule that marketing executive can see marketing manager records with read only permission then only marketing executive can able to save the record or else marketing executive cannot save the record. But Actual requirement is Marketing executive not to see the parent campaign record, he can able to see only sub campaign. Could anyone help on this issue how to solve.
Thanks in Advance.
- Padmini S 26
- March 20, 2017
- Like
- 0
how to increase code coverage for apex trigger
Hi All,
I have written below trigger.
I am getting only 69% code coverage for trigger. I am not able to cover the add error message in test class.could anyone help on this.
Thanks in Advance.
I have written below trigger.
trigger D2R_DFA_InventoryTrigger on DFA_Inventory__c (before insert, before update) { if(trigger.isBefore) { if(trigger.isInsert || trigger.isUpdate) { for(DFA_Inventory__c inv : trigger.new) { if(inv.Add_Quantity__c != null) { if(inv.Available_Quanity__c == null) inv.Available_Quanity__c = 0; inv.Available_Quanity__c = inv.Add_Quantity__c + inv.Available_Quanity__c; inv.Add_Quantity__c = null; } } } if(trigger.isInsert) { Map<Id, List<DFA_Inventory__c>> mapInvByDFA_Id = new Map<Id, List<DFA_Inventory__c>>(); for(DFA_Inventory__c inv : trigger.new) { mapInvByDFA_Id.put(inv.DFA__c, new List<DFA_Inventory__c>()); } List<DFA_Inventory__c> lstExistingInvs = [SELECT Id, DFA__c, Product__c FROM DFA_Inventory__c WHERE DFA__c=:mapInvByDFA_Id.keySet() ]; for( DFA_Inventory__c inv : lstExistingInvs) { if(!mapInvByDFA_Id.containsKey(inv.DFA__c)) { mapInvByDFA_Id.put(inv.DFA__c, new List<DFA_Inventory__c>()); } mapInvByDFA_Id.get(inv.DFA__c).add(inv); } for(DFA_Inventory__c inv : trigger.new) { if(mapInvByDFA_Id.containsKey(inv.DFA__c) && mapInvByDFA_Id.get(inv.DFA__c).size() > 0 ) { for(DFA_Inventory__c existingInv : mapInvByDFA_Id.get(inv.DFA__c)) { if(inv.Product__c == existingInv.Product__c) { inv.Product__c.addError('Product already exists in DFA Inventory, Update existing Inventory.'); } } } } } } }Below is the test class
@isTest public class D2R_DFA_InventoryTriggerTest { @testSetup static void Setup() { product2 prod = new product2(); prod.Name = 'Test Product'; insert prod; Id pricebookId = Test.getStandardPricebookId(); PricebookEntry standardPrice = new PricebookEntry( Pricebook2Id = pricebookId,Product2Id = prod.Id, UnitPrice = 10000, IsActive = true ); insert standardPrice; Pricebook2 customPB = new Pricebook2(Name='Custom Pricebook', isActive=true); insert customPB; Profile p = [SELECT Id FROM Profile WHERE Name='System Administrator']; User u2 = new User(Alias = 'standt1',Country='United Kingdom',Email='demo1@randomdemodomain.com',EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',LocaleSidKey='en_US',ProfileId = p.Id,TimeZoneSidKey='America/Los_Angeles', UserName='dprobertdemo1@camfed.org'); insert u2; Account acc1 = new Account(Name='TEST ACCOUNT', RecordTypeId = '012N00000005B9J', Email__c = 'test@gmail.com',Phone = '898789993', ownerId = u2.Id ,Sales_Executive__c = u2.Id); insert acc1; DFA_Inventory__c dfa = new DFA_Inventory__c(Add_Quantity__c=4,Available_Quanity__c=50,Product__c = prod.Id,DFA__c = acc1.Id ); insert dfa; } @isTest static void InventoryTriggerMethod1() { DFA_Inventory__c df= [select id,Add_Quantity__c,Available_Quanity__c,Product__c ,DFA__c from DFA_Inventory__c ]; Product2 p = [select id,Name from Product2]; } @isTest static void InventoryTriggerMethod2() { Product2 p = [select id,Name from Product2]; DFA_Inventory__c df= [select id,Add_Quantity__c,Available_Quanity__c,Product__c ,DFA__c from DFA_Inventory__c where Product__c = :p.Id]; try { df.Product__c = p.Id; update df; } catch(DMLException e) { Boolean expectedExceptionThrown = e.getMessage().contains('Product already exists in DFA Inventory, Update existing Inventory.') ? true : false; System.AssertEquals(expectedExceptionThrown, true); } } }
I am getting only 69% code coverage for trigger. I am not able to cover the add error message in test class.could anyone help on this.
Thanks in Advance.
- Padmini S 26
- March 01, 2017
- Like
- 0
System.NullPointerException: Attempt to de-reference a null object in salesforce test class
Hi All,
I am getting System.NullPointerException: Attempt to de-reference a null object error in salesforce test class.
Apex Class:
Test Class
Getting error in openpopup() method in Apex class. Because passing the recordId.startsWith('00Q') in openpopup. Not getting how to pass in Test class. Could any one help on this.
Thanks in Advance.
I am getting System.NullPointerException: Attempt to de-reference a null object error in salesforce test class.
Apex Class:
global class planvisitcontroller { public String RequestorEmployee { get; set; } public id leadid{get;set;} public string userid{get;set;} public string SelectedProduct{get;set;} public boolean showReqPopup { get; set; } public list<lead> leadlist{get;set;} public boolean serachdone{get;set;} public list<user> userList{get;set;} public String routeAccMap { get; set; } public String taskSubject{get;set;} public DateTime startDateTime {get;set;} public DateTime endDateTime {get;set;} public String errorMessage {get;set;} public list<Account> lstAccount {get;set;} public boolean isError { get; set; } public List<WrapperLead> wrappers {get; set;} public List<String> selectedDays {get;set;} public String recordName { get; set; } public List<SelectOption> days { get; set; } public Set<String> plannedDays; public String currentMonth { get; set; } public planvisitcontroller () { showReqPopup = false; wrappers = new List<WrapperLead>(); SelectedDays = new List<String>(); days = new List<SelectOption>(); mapUsersByID = new Map<Id, User>([SELECT Id, Name From User WHERE Manager.Id=:UserInfo.getUserId() AND UserRole.Name='Sales Executive']); leadlist=[select id, name, Status, Requested_Visit_Time__c,OwnerId,Sales_Executive__c,Address,city from lead WHERE OwnerID=:mapUsersByID.keySet() and isConverted=false and Sales_Executive__c!=null order by Requested_Visit_Time__c]; for(Lead l : leadlist){ wrappers.add(new WrapperLead(l, new List<Integer>{1,2})); } lstAccount = [SELECT Id, Name, Onboarding_Status__c, BillingCity, OwnerId,Sales_Executive__c From Account WHERE Sales_Executive__c=:mapUsersByID.keySet()]; } public PageReference closetable() { showReqPopup=false; return null; } public PageReference SelectedEmployee() { return null; } public PageReference closePopup() { PageReference ref = new PageReference('/apex/D2R_PlanVisit'); ref.setRedirect(true); return ref; } public void FilterEmployee() { userList=mapUsersByID.values(); serachdone=true; openpopup(); //return null; } public PageReference CloseWindow() { showReqPopup=false; selectedDays = new List<String>(); plannedDays = new Set<String>(); taskSubject = ''; return null; } public PageReference openpopup() { showReqPopup=true; String recordId = leadid; List<Task> existingTasks = new List<Task>(); plannedDays = new Set<String>(); if(recordId.startsWith('00Q')) { Lead l = [SELECT Sales_Executive__r.name FROM Lead WHERE Id=:recordId]; if(RequestorEmployee=='' || RequestorEmployee == null) RequestorEmployee = l.Sales_Executive__r.name; existingTasks = [Select Id, subject, ActivityDate from Task Where WhoId=:recordId AND Type='Visit']; }else { Account a = [Select Sales_Executive__r.name From Account Where id=:recordId]; if(RequestorEmployee=='' || RequestorEmployee == null) RequestorEmployee = a.Sales_Executive__r.name; existingTasks = [Select Id, subject, ActivityDate from Task Where WhatId=:recordId AND Type='Visit']; } days = getDaysOfCurrentMonth(); for (Task t : existingTasks){ String taskDay = String.valueOf(t.ActivityDate); } selectedDays = new List<String>(); for (Task t : existingTasks){ String taskDay = String.valueOf(t.ActivityDate); System.debug('!!: ' + taskDay); if(String.isNotBlank(taskDay) ){ List<String> i = taskDay.split('-'); if(Date.Today().Year() == Integer.valueOf(i[0]) && Date.Today().Month() == Integer.valueOf(i[1])) if(!plannedDays.contains(''+i[2])) { selectedDays.add(''+Integer.valueOf(i[2])); plannedDays.add(''+Integer.valueOf(i[2])); } } } System.debug(' selectedDays !!: ' + selectedDays); System.debug('plannedDays !!: ' + plannedDays); return null; } public PageReference saveplaning() { showReqPopup=false; String recordId = leadid; Lead leadplan = new Lead(); Account acc = new Account(); List<Task> tasksToInsert = new List<Task>(); System.debug('selected Days: ' + selectedDays ); if(recordId.startsWith('00Q')){ leadplan = [select id, Requested_Visit_Time__c, Plan__c, Name, OwnerId, Sales_Executive__c from Lead where id = :recordId ]; } else { acc = [SELECT Id, Name, BillingCity, OwnerId,Sales_Executive__c From Account WHERE Id=:recordId]; } for(String str : selectedDays) { system.debug('Loop for : ' + str); Id visitRT = Schema.SObjectType.Task.getRecordTypeInfosByName().get('Plan-Visit Task').getRecordTypeId(); if(!plannedDays.contains(str)) { system.debug('task to be inserted for : ' + str); Integer day = Integer.valueOf(str); Date dueDate = date.newInstance(Date.Today().Year(), Date.Today().Month(), day); Task task = new Task(); task.subject = taskSubject; if(String.isNotBlank(userid)){ task.OwnerId = userid; } else { if(recordId.startsWith('00Q')) task.OwnerId = leadplan.Sales_Executive__c; else task.OwnerId = acc.Sales_Executive__c; } if(recordId.startsWith('00Q')) { task.whoId = recordId; } else { task.whatId = recordId; } task.ActivityDate = dueDate; task.RecordTypeId = visitRT; task.Type = 'Visit'; tasksToInsert.add(task); } } if(tasksToInsert.size()>0) { insert tasksToInsert; } PageReference ref = new PageReference('/apex/D2R_PlanVisit'); ref.setRedirect(true); return ref; } public List<SelectOption> getDaysOfCurrentMonth() { Map<Integer,String> mapMonthsByIndex = new Map<Integer,String>{ 1 => 'January', 2 => 'February'}; currentMonth = mapMonthsByIndex.get(Date.Today().Month()) + ' , ' + Date.Today().Year(); Date firstDayOfMonth = System.today().toStartOfMonth(); Date lastDayOfMonth = firstDayOfMonth.addDays(Date.daysInMonth(firstDayOfMonth.year(), firstDayOfMonth.month()) - 1); System.debug('!!!!: ' + lastDayOfMonth); List<String> days = new List<String>(); for(Integer i=1; i<=lastDayOfMonth.day() ; i++ ){ days.add('' + i); System.debug('!!!!: ' +i); } List<SelectOption> Options = new List<SelectOption>(); for(String str : days){ Options.add(new SelectOption(str,str)); } return Options; } }
Test Class
@isTest private class planvisitcontrollerTest { @testSetup static void setup() { Profile p = [SELECT Id FROM Profile WHERE Name='Sales Executive']; User u2 = new User(Alias = 'standt1',Country='United Kingdom',Email='demo1@randomdemodomain.com',EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',LocaleSidKey='en_US',ProfileId = p.Id,TimeZoneSidKey='America/Los_Angeles', UserName='dprobertdemo1@camfed.org'); insert u2; Lead l = new Lead(); l.LastName = 'Salesforce.com'; l.Company = 'KPMG'; l.Status = 'New'; l.Email = 'abc@gmail.com'; l.Phone = '8938493'; l.Industry = 'Web'; l.City=' bangalore'; l.PostalCode ='788889'; l.State = 'Karnataka'; l.Country = 'India'; insert l; Task t = new Task(); t.Subject= 'test task'; t.ActivityDate = System.Today(); t.WhoId = l.Id; t.Type = 'Visit'; insert t; l = [SELECT Id FROM Lead WHERE Id = :l.Id]; } @isTest static void testMethod1() { planvisitcontroller pc = new planvisitcontroller(); Test.startTest(); pc.SelectedEmployee(); pc.closePopup(); pc.FilterEmployee(); pc.CloseWindow(); pc.saveplaning(); pc.getDaysOfCurrentMonth(); Test.stopTest(); System.assertNotEquals(null, pc.openpopup()); } }
Getting error in openpopup() method in Apex class. Because passing the recordId.startsWith('00Q') in openpopup. Not getting how to pass in Test class. Could any one help on this.
Thanks in Advance.
- Padmini S 26
- February 24, 2017
- Like
- 0
Marketing Executive not able to Save Campaign
Hi All,
We have two profiles in our organization. One is Maketing Manager and Maketing Executive. Set the Campaign OWD as Private. For Marketing Executive Profile given the Read and Edit Permission. Marketing User checkbox has checked on User record. But Marketing Executive edits the Campaign and clicked on save button then getting error as "Insufficient Privileges for the user". I am not getting what mistake i have done. Could any one help on this issue.
We have two profiles in our organization. One is Maketing Manager and Maketing Executive. Set the Campaign OWD as Private. For Marketing Executive Profile given the Read and Edit Permission. Marketing User checkbox has checked on User record. But Marketing Executive edits the Campaign and clicked on save button then getting error as "Insufficient Privileges for the user". I am not getting what mistake i have done. Could any one help on this issue.
- Padmini S 26
- February 21, 2017
- Like
- 0
Inserting the child records double time
I have 3 objects Booking, Products and Collections. Booking object has two related lists that is Products and Collections. After creating the booking record then automatically collection records are created depend on field payment duration on Booking. For this i have implemented the Apex Trigger. It is inserting the child collection records fine only but problem is when i will update the booking payment duration field as 2 again 2 more recods are inserting under collection object. It is inserting collection records again. If i will remove the after update event then child collections records are inserting the payment amount as 0.Below is the trigger.
trigger createCollections on Order ( after insert, after update) { List<Collection__c> coll = new List<Collection__c>(); for(Order o : trigger.new) { if(createcollectionclass.runonce()){ if(o.Payment_Duration__c != null && o.Type == 'Periodic' ) { for(integer i = 0; i< integer.valueOf(o.Payment_Duration__c); i++){ Collection__c c= new Collection__c(); c.Order__c = o.id; c.Payment_Amount__c = ( o.Total_Due__c/o.Payment_Duration__c); coll.add(c); } } } } if(!coll.isEmpty()){ insert coll; } }Kindly help on this issue.
- Padmini S 26
- August 18, 2016
- Like
- 0
PageReference is not redirecting in communities
Hi,
I have written the below visualforce page and Apex class for creating the Opportunity Product. It is working fine in salesforce . When I opened in salesforce Community , I am not able to create opportunity product and not able to redirect to another visualforce page. I have given visualforce page and apex class access to community user profile. But it is redirects to Error occurred while loading a Visualforce page.
I have written the below visualforce page and Apex class for creating the Opportunity Product. It is working fine in salesforce . When I opened in salesforce Community , I am not able to create opportunity product and not able to redirect to another visualforce page. I have given visualforce page and apex class access to community user profile. But it is redirects to Error occurred while loading a Visualforce page.
Visualforce page: <apex:page standardController="Pricebookentry" extensions="productcontroller" sidebar="false" showHeader="false" applyBodyTag="false"> <html lang="en"> <head> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" ></script> <script src="https://www.amcharts.com/lib/3/amcharts.js"></script> <script src="https://www.amcharts.com/lib/3/serial.js"></script> <script src="https://www.amcharts.com/lib/3/themes/light.js"></script> <apex:stylesheet value="{!URLFOR($Resource.BootCss)}" /> <apex:includeScript value="{!URLFOR($Resource.Chart1)}"/> <apex:includeScript value="{!URLFOR($Resource.JS)}" /> <apex:includeScript value="{!URLFOR($Resource.bootJs)}" /> <script> function alertSample() { alert("You have booked Successfully"); } </script> <style> .container-fluid { margin-top: 10px; } #chartdiv { width : 400px; height : 200px; font-size : 11px; } </style> </head> <body> <apex:form > <div id="myCarousel" class="carousel slide" data-ride="carousel"> <!-- Indicators --> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data-target="#myCarousel" data-slide-to="1"></li> <li data-target="#myCarousel" data-slide-to="2"></li> </ol> <!-- Wrapper for slides --> <div class="carousel-inner" role="listbox"> <div class="item active"> <img src='{!URLFOR($Resource.Header)}' alt="New York"/> <div class="carousel-caption"> <h3>New York</h3> <p>The atmosphere in New York is lorem ipsum.</p> </div> </div> <div class="item"> <img src='{!URLFOR($Resource.Header)}' alt="Chicago"/> <div class="carousel-caption"> <h3>Chicago</h3> <p>Thank you, Chicago - A night we won't forget.</p> </div> </div> <div class="item"> <img src='{!URLFOR($Resource.Header)}' alt="Los Angeles"/> <div class="carousel-caption"> <h3>LA</h3> <p>Even though the traffic was a mess, we had the best time.</p> </div> </div> </div> </div> <div class="container-fluid"> <div id="header"></div> <div class="panel panel-default"> <div class = "panel-table" style="float: left;width: 900px;"> <div class="panel-body" > <div class="panel panel-success"> <div class="panel-heading">Prodcut Search</div> <div class="panel-body"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="aName">Products Category</label> <apex:selectList value="{!selectedCategory}" multiselect="false" size="1"> <apex:selectOptions value="{!productOptions}"/> </apex:selectList> <apex:commandButton value="Search Product" action="{!SearchProduct}" /> </div> </div> </div> </div> </div> <div class="panel panel-info"> <div class="panel-heading"><div> Products Information <apex:commandButton value="Book" action="{!Book}" onclick="alertSample();" style="float: right;"/> </div> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span> </button> </div> </div> </div> </div> </div> <div class="panel-body"> <apex:outputPanel id="productTable"> <table class="table table-condensed"> <tr> <th>Select</th> <th>Product name</th> <th>Product Category</th> <th>Product Price</th> <th> Quantity</th> <th>Image</th> </tr> <apex:outputpanel rendered="{!IF((selectedCategory == NULL) , true,false)}"> <apex:repeat value="{!productlist1}" var="prod1" > <tr> <td> </td> <td> <apex:outputField value="{!prod1.Product2.Name}" /> </td> <td> <apex:outputField value="{!prod1.Product2.Family}" /> </td> <td> <apex:outputField value="{!prod1.UnitPrice}" /> </td> <td> <apex:inputField value="{!prod1.Product2.Quantity__c}" /> </td> <td> <apex:outputField value="{!prod1.Product2.ProductPicture__c}" /> </td> </tr> </apex:repeat> </apex:outputpanel> <apex:outputpanel rendered="{!IF((selectedCategory!= NULL) , true,false)}" id="pageblock1"> <apex:repeat value="{!productlist}" var="prod" > <tr> <td> <apex:outputPanel id="counter2"> <input type="radio" name="sel" /> <apex:actionsupport action="{!process}" event="onchange" rerender="abc"> <apex:param name="select" value="{!prod.Product2.Id}" assignTo="{!str}"/> </apex:actionsupport> </apex:outputPanel> </td> <td> <apex:outputField value="{!prod.Product2.Name}" /> </td> <td> <apex:outputField value="{!prod.Product2.Family}" /> </td> <td> <apex:outputField value="{!prod.UnitPrice}" /> </td> <td> <apex:inputText value="{!prod.Product2.Quantity__c }" /> </td> <td > <apex:outputField value="{!prod.Product2.ProductPicture__c}" /> </td> </tr> </apex:repeat> </apex:outputpanel> </table> </apex:outputPanel> </div> </div> </div> </div> </div> </div> </apex:form> </body> </html> </apex:page> Apex Class: public without sharing class productcontroller { public Product2 pro{get;set;} public Pricebookentry productlist{get;set;} public OpportunityLineItem oppLineItem{get;set;} Public Boolean flag {get;set;} Public string str {get;set;} Public Product2 records {get;set;} public List<Pricebookentry> productlist1{get;set;} public string selectedAsset {get;set;} public string selected{get;set;} public String selectedCategory{get;set;} public productcontroller(ApexPages.StandardController controller) { pro = new Product2(); productlist1 = [SELECT Id,Name,Product2.Id,Product2.Name,Product2.Family,Product2.Quantity__c ,Product2.Product_Category__c,Product2.ProductPicture__c,Product2.ProductCode,UnitPrice FROM Pricebookentry LIMIT 2]; } public void SearchProduct() { productlist = [SELECT Id,Name,Product2.Id,Product2.Name,Product2.Family,Product2.Quantity__c ,Product2.ProductPicture__c,Product2.ProductCode,UnitPrice FROM Pricebookentry where PriceBook2.IsStandard=true AND Product2.Family =:selectedCategory]; system.debug('**********' + pro.Family); } public PageReference process() { flag = false; return null; } public PageReference Book() { Opportunity opp = new Opportunity(); opp.Name = 'Test Opportunity'; opp.CloseDate= System.Today(); opp.StageName='Open'; insert opp; system.debug('str****************' + str); oppLineItem = new OpportunityLineItem(); if ( str != null) { oppLineItem.OpportunityId = opp.Id; oppLineItem.PricebookEntryId = productlist.Id; // oppLineItem.Product2.Id = str; oppLineItem.UnitPrice = productlist.UnitPrice; oppLineItem.Quantity = productlist.Product2.Quantity__c; oppLineItem.Status__c = 'Open'; oppLineItem.Sub_Status__c = 'Order Received'; insert oppLineItem; return null; } PageReference ref = Page.oppproddetailpage; ref.getParameters().put('selectedAsset', oppLineItem.Id); ref.setRedirect(true); return ref; } } public List<SelectOption> getproductOptions() { List<SelectOption> countryOptions = new List<SelectOption>(); countryOptions.add(new SelectOption('','-None-')); countryOptions.add(new SelectOption('Vibration Speakers','Vibration Speakers')); countryOptions.add(new SelectOption('LED H Series','LED H Series')); return countryOptions; } }Could please help on this issue. Thanks in Advance.
- Padmini S 26
- August 04, 2016
- Like
- 0
Increase the code coverage for custom controller
Hi All,
Below are Apex Class and Test Class.
I am getting only 50% code coverage. I am not able to cover the Bold lines in apex class. Anyone please help on this.
Thanks in Advance.
Below are Apex Class and Test Class.
Apex Class: public class UnvalidatedMum { id currentUserid; public list<Mum_Information__c> UnvalidatedMumList{get;set;} public UnvalidatedMum () { currentUserid=UserInfo.getUserId(); Educator__c edu=[select id from Educator__c where user__c =:currentUserid limit 1]; UnvalidatedMumList=[SELECT Id, Name, Mobile_No__c, EduMum__c, First_Name__c, Validation_Stage__c, Current_week__c FROM Mum_Information__c where EduMum__c =:edu.id and Validation_Stage__c='Unvalidated' order by CreatedDate desc limit 10000 ]; } }
Test class: ----------- @istest private class UnvalidatedMumExtTest { private static testmethod void fetchUnValidatedMum(){ list<Mum_Information__c> mumList = new list<Mum_Information__c>(); user u =[select id from user limit 1]; Educator__c edu = new Educator__c(); edu.Educator_Phone_No__c='7451245759'; edu.user__c = u.id; insert edu; City__c c = new City__c(Name='cityname',Estimated_Target__c=6); insert c; Message_Table__c m = new Message_Table__c (Persona__c=1,Week__c=12); insert m; Hospital__c h = new Hospital__c(name='hospital',Hospital_Type__c='Govt',City_Name__c=c.id); insert h; Mum_Information__c info = new Mum_Information__c(Mum_Hospital__c=h.id,Whatsapp_Presence__c='yes',Validation_Stage__c='validated',Pregnancy_Type__c='First',Lifestage_Months__c='3rd trimester',Family_Type__c='Joint',Facebook_Presence__c='no',First_Name__c = 'Test',edumum__c=edu.id,edd__c=date.today(),MObile_no__c='7094346807', address__c='hyd',pincode__c=121312,Landline_Number__c=0402303433,otp__c=123,Preferred_language__c='English',Do_you_own_this_phone__c='yes',ConsentID__c = decimal.valueof('12345678912')); insert info; UnvalidatedMum un = new UnvalidatedMum(); } }
I am getting only 50% code coverage. I am not able to cover the Bold lines in apex class. Anyone please help on this.
Thanks in Advance.
- Padmini S 26
- July 21, 2016
- Like
- 0
How to increase code coverage for apex class
Hi All,
I have written the test class for apex class code coverage. But i am getting only 56% code coverage for the class. Below are the apex class and test class.
I am not getting how to increase the code coverage for this class.Kindly help how to increase code coverage.
Thanks in Advance.
I have written the test class for apex class code coverage. But i am getting only 56% code coverage for the class. Below are the apex class and test class.
Apex class: @RestResource(urlMapping='/portalUserAuthentication/*') global with sharing class portalUserAuthenticationService { @HttpPost global static String checkPortalUser(){ RestRequest req = RestContext.request; RestResponse res = Restcontext.response; String Endpoint=req.requestURI; string userName=endpoint.substring(endpoint.lastIndexOf('/')+1); system.debug('**userName**'+userName); if(userName!='' || userName!=null){ system.debug('**inside userName**'+userName); List<User> users=[select id,contactId from User where (email=:userName OR username =:userName) and IsActive=true]; if(users.size()>0){ system.debug('**users**'+users); List<Account> acc = [Select Id,Status__c,Account_Type__c From Account where PersonContactid=:users[0].contactId and IsPersonAccount=true]; if(acc.size()>0){ system.debug('**acc**'+acc); if(acc[0].Account_Type__c=='Member' && acc[0].Membership_Status__c=='Approved'){ system.debug('**true acc type**'+acc[0].Account_Type__c+'**mem status**'+acc[0].Membership_Status__c); return 'true'; } else return 'false'; } else return 'false'; } else return 'false'; } else return 'false'; } }
Test Class: @isTest private class TestportalUserAuthenticationService { public static testmethod void testportaluser() { Account acc1 = new Account(); acc1.Name = 'newAcc1'; insert acc1; Contact con = new Contact(); con.AccountId = acc1.id; con.LastName = 'portalTestUser'; insert con; User u = new User(); u.username = 'newUser@yahoo.com'; u.email = 'pb@ff.com'; u.emailencodingkey = 'UTF-8'; u.localesidkey = 'en_US'; u.languagelocalekey = 'en_US'; u.timezonesidkey = 'America/Los_Angeles'; u.alias='nuser'; u.lastname='lastname'; u.contactId = con.id; insert u; System.RestContext.request = new RestRequest(); RestContext.request.requestURI = '/portalUserAuthentication/*'; String portalu = portalUserAuthenticationService.checkPortalUser(); List<Account> accdetails = [Select Id,Status__c,Account_Type__c From Account where PersonContactid=:u.contactId and IsPersonAccount=true]; System.assert(accdetails.size()==0); } }
I am not getting how to increase the code coverage for this class.Kindly help how to increase code coverage.
Thanks in Advance.
- Padmini S 26
- July 15, 2016
- Like
- 0
System.StringException: Unrecognized base64 character: * in test class
Hi All,
I am getting the error in test class as System.StringException: Unrecognized base64 character: *. I am not getting how to resolve the issue. Could anyone help on this issue.
Thanks in Advance.
I am getting the error in test class as System.StringException: Unrecognized base64 character: *. I am not getting how to resolve the issue. Could anyone help on this issue.
@isTest private class TestUpdateCourseCompletionStatusService { public static testmethod void testupdate() { LMS__c lmsc = new LMS__c (); lmsc.Prod_CryptoKey__c = 'prod crypto'; lmsc.Test_CryptoKey__c = 'test crypto'; lmsc.Prod_IV__c = 'prod iv'; lmsc.Test_IV__c = 'test iv'; insert lmsc; Registration__c coursereg = new Registration__c(); coursereg.Name__c = 'testcourse'; coursereg.ID_Number__c = '1234'; coursereg.LMS_Status__c ='Completed'; insert coursereg; System.RestContext.request = new RestRequest(); RestContext.request.requestURI = '/UpdateCourseCompletionStatus/*'; RestContext.request.addHeader('decodedB64 ', '12345'); UpdateCourseCompletionStatusService.updateCourseRegistration(); } }
Thanks in Advance.
- Padmini S 26
- July 13, 2016
- Like
- 0
System.StringException: Unrecognized base64 character: in Test Class
Hi All,
I am getting the System.StringException: Unrecognized base64 character: in Test Class.
I have written the below Apex Code to update the Course Registration Details.
global static String updateCourseRegistration(){
RestRequest req = RestContext.request;
RestResponse res = Restcontext.response;
String Endpoint=req.requestURI;
string enrCourseComDate=endpoint.substring(endpoint.lastIndexOf('/')+1);
String enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDate,'UTF-8');
enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDateUTF,'UTF-8');
Blob decodedB64 = EncodingUtil.base64Decode(enrCourseComDateUTF);
Blob decryptedBlob = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB64);
string CourseComDate=decryptedBlob.toString();
if(courseComDate.length()==8){
endpoint=endpoint.removeEnd('/'+enrCourseComDate);
String encEnCourseId= endpoint.substring(endpoint.lastIndexOf('/')+1);
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
Blob decodedB641 = EncodingUtil.base64Decode(encEnCourseId);
Blob decryptedBlob1 = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB641);
string enCourseId=decryptedBlob1.toString();
if(enCourseId.length()==5){
List<Course_Registration__c> cr=[select id,name,Course_Instance_LMS_Mode__c,LMS1_Enrcourse_ID__c,Registration_Date__c,Course_completion_Date__c from Course_Registration__c where
LMS1_Enrcourse_ID__c=:enCourseId];
if(cr.size()>0){
if(cr[0].Course_Instance_LMS_Mode__c!='Blended')
cr[0].LMS_Status__c='Completed';
else
cr[0].LMS_Status__c='Blended course completed';
update cr;
return '2000-Successful';
}
Test Class:
@isTest
private class TestUpdateCourseCompletionStatusService
{
public static testmethod void testupdate() {
LMSCredentials__c lmsc = new LMSCredentials__c ();
lmsc.Prod_CryptoKey__c = 'prod crypto';
lmsc.Test_CryptoKey__c = 'test crypto';
lmsc.Prod_IV__c = 'prod iv';
lmsc.Test_IV__c = 'test iv';
insert lmsc;
Course_Registration__c coursereg = new Course_Registration__c();
coursereg.Name__c = 'testcourse';
coursereg.ID_Number__c = '1234';
coursereg.LMS_Status__c ='Completed';
insert coursereg;
System.RestContext.request = new RestRequest();
RestContext.request.requestURI = '/UpdateCourseCompletionStatus/*';
RestContext.request.addHeader('decodedB641 ', '12345');
UpdateCourseCompletionStatusService.updateCourseRegistration();
}
}
I am getting the error as "System.StringException: Unrecognized base64 character: " and stack trace as Class.System.EncodingUtil.base64Decode: line 5, column 1
Class.UpdateCourseCompletionStatusService.updateCourseRegistration: line 28, column 1
Class.TestUpdateCourseCompletionStatusService.testupdate: line 30, column 1.
Thanks in Advance.
I am getting the System.StringException: Unrecognized base64 character: in Test Class.
I have written the below Apex Code to update the Course Registration Details.
global static String updateCourseRegistration(){
RestRequest req = RestContext.request;
RestResponse res = Restcontext.response;
String Endpoint=req.requestURI;
string enrCourseComDate=endpoint.substring(endpoint.lastIndexOf('/')+1);
String enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDate,'UTF-8');
enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDateUTF,'UTF-8');
Blob decodedB64 = EncodingUtil.base64Decode(enrCourseComDateUTF);
Blob decryptedBlob = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB64);
string CourseComDate=decryptedBlob.toString();
if(courseComDate.length()==8){
endpoint=endpoint.removeEnd('/'+enrCourseComDate);
String encEnCourseId= endpoint.substring(endpoint.lastIndexOf('/')+1);
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
Blob decodedB641 = EncodingUtil.base64Decode(encEnCourseId);
Blob decryptedBlob1 = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB641);
string enCourseId=decryptedBlob1.toString();
if(enCourseId.length()==5){
List<Course_Registration__c> cr=[select id,name,Course_Instance_LMS_Mode__c,LMS1_Enrcourse_ID__c,Registration_Date__c,Course_completion_Date__c from Course_Registration__c where
LMS1_Enrcourse_ID__c=:enCourseId];
if(cr.size()>0){
if(cr[0].Course_Instance_LMS_Mode__c!='Blended')
cr[0].LMS_Status__c='Completed';
else
cr[0].LMS_Status__c='Blended course completed';
update cr;
return '2000-Successful';
}
Test Class:
@isTest
private class TestUpdateCourseCompletionStatusService
{
public static testmethod void testupdate() {
LMSCredentials__c lmsc = new LMSCredentials__c ();
lmsc.Prod_CryptoKey__c = 'prod crypto';
lmsc.Test_CryptoKey__c = 'test crypto';
lmsc.Prod_IV__c = 'prod iv';
lmsc.Test_IV__c = 'test iv';
insert lmsc;
Course_Registration__c coursereg = new Course_Registration__c();
coursereg.Name__c = 'testcourse';
coursereg.ID_Number__c = '1234';
coursereg.LMS_Status__c ='Completed';
insert coursereg;
System.RestContext.request = new RestRequest();
RestContext.request.requestURI = '/UpdateCourseCompletionStatus/*';
RestContext.request.addHeader('decodedB641 ', '12345');
UpdateCourseCompletionStatusService.updateCourseRegistration();
}
}
I am getting the error as "System.StringException: Unrecognized base64 character: " and stack trace as Class.System.EncodingUtil.base64Decode: line 5, column 1
Class.UpdateCourseCompletionStatusService.updateCourseRegistration: line 28, column 1
Class.TestUpdateCourseCompletionStatusService.testupdate: line 30, column 1.
Thanks in Advance.
- Padmini S 26
- July 12, 2016
- Like
- 0
System.JSONException: Unexpected character ('s' (code 115)) in Test Class
Hi All,
I am writing the Test class for one batch Apex class. Below is the code of Test Class and Batch Apex Class.
@istest
public class BatchBulkMembershipRenewalsTest
{
static testmethod void BulkMembershipTestMethod(){
BulkRenewals__c testRenewal = new BulkRenewals__c (ID_Number__c = '12345',ID_Type__c = 'Pink NRIC');
insert testRenewal;
testRenewal = [select id,Name,ID_Number__c,ID_Type__c from BulkRenewals__c where id = :testRenewal.Id ];
String RecTypeId= [select Id from RecordType where (Name='Person Account') and (SobjectType='Account')].Id;
Account newAccount = new Account(RecordTypeID=RecTypeId, FirstName='Test FName', LastName='Test LName', Membership_Status__c = 'Approved', Member_Class__c = 'Associate', Renewal_Year__c = '2016', ID_Type__c = testRenewal.ID_Type__c , ID_Number__c = testRenewal.ID_Number__c );
insert newAccount;
Application__c application = new Application__c (Application_Status__c = 'Created',Account__c = newAccount.Id);
insert application;
application = [select id,Name from Application__c where id = :application.Id];
String RecTypeId2= [select Id from RecordType where (Name='Business Account') and (SobjectType='Account')].Id;
Account businessAccount = new Account(RecordTypeID=RecTypeId2, Name='Test FName1', ID_Type__c = testRenewal.ID_Type__c , ID_Number__c = testRenewal.ID_Number__c );
insert businessAccount;
BatchBulkMembershipRenewals bbmr = new BatchBulkMembershipRenewals ('select id from BulkRenewals__c' );
Test.StartTest();
Database.executeBatch(bbmr,200);
Test.StopTest();
}}
Batch Apex Class:
------------------------
global Database.QueryLocator start(Database.BatchableContext BC){
List<String> recordIdList=new List<String>();
system.debug('**recordIdString**'+recordIdString);
//recordIdList=recordIdString.split(',');
recordIdList = (List<String>)System.JSON.deserialize(recordIdString, List<String>.class);
system.debug('**recordIdList**'+recordIdList);
string query='SELECT id,name,Person_Account_Name__c,ID_Type__c,ID_Number__c,Failed_Reasons__c,Corporate_Account__c,Renewal_Process_Status__c,Consent_to_ISCA_PDP_Policy__c, Disciplinary_Proceedings__c,Accounting_Qualification__c,Acknowledge_Non_Refundable_Admission_Fee__c,Accuracy_and_Completeness_of_Information__c,Eligibility_of_MIR__c,Acknowledgement_Transitional_Arrangement__c,Ethics_Declaration__c,Reason_For_Non_Compliance__c,CPE_Compliance_Declaration__c from BulkRenewals__c where id IN :recordIdList';
system.debug('**query**'+query);
return Database.getQueryLocator(query);
}
I am getting the error like "System.JSONException: Unexpected character ('s' (code 115)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at input location [1,2]".
Please help me on this isse. Thanks in Advance.
I am writing the Test class for one batch Apex class. Below is the code of Test Class and Batch Apex Class.
@istest
public class BatchBulkMembershipRenewalsTest
{
static testmethod void BulkMembershipTestMethod(){
BulkRenewals__c testRenewal = new BulkRenewals__c (ID_Number__c = '12345',ID_Type__c = 'Pink NRIC');
insert testRenewal;
testRenewal = [select id,Name,ID_Number__c,ID_Type__c from BulkRenewals__c where id = :testRenewal.Id ];
String RecTypeId= [select Id from RecordType where (Name='Person Account') and (SobjectType='Account')].Id;
Account newAccount = new Account(RecordTypeID=RecTypeId, FirstName='Test FName', LastName='Test LName', Membership_Status__c = 'Approved', Member_Class__c = 'Associate', Renewal_Year__c = '2016', ID_Type__c = testRenewal.ID_Type__c , ID_Number__c = testRenewal.ID_Number__c );
insert newAccount;
Application__c application = new Application__c (Application_Status__c = 'Created',Account__c = newAccount.Id);
insert application;
application = [select id,Name from Application__c where id = :application.Id];
String RecTypeId2= [select Id from RecordType where (Name='Business Account') and (SobjectType='Account')].Id;
Account businessAccount = new Account(RecordTypeID=RecTypeId2, Name='Test FName1', ID_Type__c = testRenewal.ID_Type__c , ID_Number__c = testRenewal.ID_Number__c );
insert businessAccount;
BatchBulkMembershipRenewals bbmr = new BatchBulkMembershipRenewals ('select id from BulkRenewals__c' );
Test.StartTest();
Database.executeBatch(bbmr,200);
Test.StopTest();
}}
Batch Apex Class:
------------------------
global Database.QueryLocator start(Database.BatchableContext BC){
List<String> recordIdList=new List<String>();
system.debug('**recordIdString**'+recordIdString);
//recordIdList=recordIdString.split(',');
recordIdList = (List<String>)System.JSON.deserialize(recordIdString, List<String>.class);
system.debug('**recordIdList**'+recordIdList);
string query='SELECT id,name,Person_Account_Name__c,ID_Type__c,ID_Number__c,Failed_Reasons__c,Corporate_Account__c,Renewal_Process_Status__c,Consent_to_ISCA_PDP_Policy__c, Disciplinary_Proceedings__c,Accounting_Qualification__c,Acknowledge_Non_Refundable_Admission_Fee__c,Accuracy_and_Completeness_of_Information__c,Eligibility_of_MIR__c,Acknowledgement_Transitional_Arrangement__c,Ethics_Declaration__c,Reason_For_Non_Compliance__c,CPE_Compliance_Declaration__c from BulkRenewals__c where id IN :recordIdList';
system.debug('**query**'+query);
return Database.getQueryLocator(query);
}
I am getting the error like "System.JSONException: Unexpected character ('s' (code 115)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at input location [1,2]".
Please help me on this isse. Thanks in Advance.
- Padmini S 26
- May 23, 2016
- Like
- 0
Not able to Delete the record because of Apex Trigger
Hi ,
I have implemented the below code. But problem is when i am deleting the child record (Patient Record )then i am getting the error.
Validation Errors While Saving Record(s)
There were custom validation error(s) encountered while saving the affected record(s). The first validation error encountered was "Apex trigger UpdateDoctor caused an unexpected exception, contact your administrator: UpdateDoctor: execution of BeforeDelete caused by: System.NullPointerException: Attempt to de-reference a null object: Class.UpdatedoctorInfo.updatedoctor: line 10, column 1".
Apex Class:
-----------------
public Class UpdatedoctorInfo
{
public void updatedoctor (List<Patient__C> patients)
{
Map<String, Patient__C> patientcodeMap= new Map<String, Patient__C>();
for(Patient__c p: patients)
{
if (p.Doctor_Code__C != Null )
{
patientcodeMap.put(p.Doctor_Code__C ,p);
}
}
List<Doctor__C> doctorToUpdate= new List<Doctor__C>();
List<Doctor__C> doctorList = new List<Doctor__C>([SELECT id,Doctor_Code__C FROM Doctor__C WHERE Doctor_Code__C IN :patientcodeMap.KeySet()]);
System.debug('***********' +doctorList);
for(Doctor__C c: doctorList )
{
Patient__C obj = patientcodeMap.get(c.Doctor_Code__C );
if(obj.Doctor__C == NULL)
{
system.debug('doctor id' +obj.Id);
obj.Doctor__C = c.Id;
}
else
{
}
doctorToUpdate.add(c);
update doctorToUpdate;
}
Map<Id, Doctor__c> opportunityMap = new Map<Id, Doctor__c>();
for (Patient__C ps : patients)
{
Doctor__c opp = new Doctor__c(Id = ps.Doctor__C);
opp.Jan_Revenue_Value__c = 0;
opp.Feb_Revenue__c = 0;
opp.Mar_Revenue__c = 0;
opp.May_Revenue__c = 0;
opp.Apr_Revenue__c = 0;
opp.Jun_Revenue__c = 0;
opp.Jul_Revenue__c = 0;
opp.Aug_Revenue__c = 0;
opp.Sep_Revenue__c = 0;
opp.Oct_Revenue__c = 0;
opp.Nov_Revenue__c = 0;
opp.Dec_Revenue__c = 0;
opportunityMap.put(ps.Doctor__C, opp);
}
List<Patient__c> pat = [select id,Doctor__C ,Patient_Revenue__c,CreatedDate from Patient__C where Doctor__C in :opportunityMap.keySet()];
for (Patient__C ps : pat)
{
Doctor__c opp = opportunityMap.get(ps.Doctor__c);
if(ps.CreatedDate.month() == 1)
{
if (ps.Patient_Revenue__c != null )
{
opp.Jan_Revenue_Value__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 2)
{
if (ps.Patient_Revenue__c != null )
{
opp.Feb_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 3)
{
if (ps.Patient_Revenue__c != null )
{
opp.Mar_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 4)
{
if (ps.Patient_Revenue__c != null )
{
opp.Apr_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 5)
{
if (ps.Patient_Revenue__c != null )
{
opp.May_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 6)
{
if (ps.Patient_Revenue__c != null )
{
opp.Jun_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 7)
{
if (ps.Patient_Revenue__c != null )
{
opp.Jul_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 8)
{
if (ps.Patient_Revenue__c != null )
{
opp.Aug_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 9)
{
if (ps.Patient_Revenue__c != null )
{
opp.Sep_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 10)
{
if (ps.Patient_Revenue__c != null )
{
opp.Oct_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 11)
{
if (ps.Patient_Revenue__c != null )
{
opp.Nov_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 12)
{
if (ps.Patient_Revenue__c != null )
{
opp.Dec_Revenue__c += ps.Patient_Revenue__c;
}
} }
update opportunityMap.values();
}}
Apex Trigger:
--------------------------
trigger UpdateDoctor on Patient__c (before insert, before update, after insert, before delete,after update, after delete, after undelete ) {
list<Patient__C> patients = trigger.new;
UpdatedoctorInfo my = new UpdatedoctorInfo();
my.updatedoctor(patients); }
Thanks for your help!
I have implemented the below code. But problem is when i am deleting the child record (Patient Record )then i am getting the error.
Validation Errors While Saving Record(s)
There were custom validation error(s) encountered while saving the affected record(s). The first validation error encountered was "Apex trigger UpdateDoctor caused an unexpected exception, contact your administrator: UpdateDoctor: execution of BeforeDelete caused by: System.NullPointerException: Attempt to de-reference a null object: Class.UpdatedoctorInfo.updatedoctor: line 10, column 1".
Apex Class:
-----------------
public Class UpdatedoctorInfo
{
public void updatedoctor (List<Patient__C> patients)
{
Map<String, Patient__C> patientcodeMap= new Map<String, Patient__C>();
for(Patient__c p: patients)
{
if (p.Doctor_Code__C != Null )
{
patientcodeMap.put(p.Doctor_Code__C ,p);
}
}
List<Doctor__C> doctorToUpdate= new List<Doctor__C>();
List<Doctor__C> doctorList = new List<Doctor__C>([SELECT id,Doctor_Code__C FROM Doctor__C WHERE Doctor_Code__C IN :patientcodeMap.KeySet()]);
System.debug('***********' +doctorList);
for(Doctor__C c: doctorList )
{
Patient__C obj = patientcodeMap.get(c.Doctor_Code__C );
if(obj.Doctor__C == NULL)
{
system.debug('doctor id' +obj.Id);
obj.Doctor__C = c.Id;
}
else
{
}
doctorToUpdate.add(c);
update doctorToUpdate;
}
Map<Id, Doctor__c> opportunityMap = new Map<Id, Doctor__c>();
for (Patient__C ps : patients)
{
Doctor__c opp = new Doctor__c(Id = ps.Doctor__C);
opp.Jan_Revenue_Value__c = 0;
opp.Feb_Revenue__c = 0;
opp.Mar_Revenue__c = 0;
opp.May_Revenue__c = 0;
opp.Apr_Revenue__c = 0;
opp.Jun_Revenue__c = 0;
opp.Jul_Revenue__c = 0;
opp.Aug_Revenue__c = 0;
opp.Sep_Revenue__c = 0;
opp.Oct_Revenue__c = 0;
opp.Nov_Revenue__c = 0;
opp.Dec_Revenue__c = 0;
opportunityMap.put(ps.Doctor__C, opp);
}
List<Patient__c> pat = [select id,Doctor__C ,Patient_Revenue__c,CreatedDate from Patient__C where Doctor__C in :opportunityMap.keySet()];
for (Patient__C ps : pat)
{
Doctor__c opp = opportunityMap.get(ps.Doctor__c);
if(ps.CreatedDate.month() == 1)
{
if (ps.Patient_Revenue__c != null )
{
opp.Jan_Revenue_Value__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 2)
{
if (ps.Patient_Revenue__c != null )
{
opp.Feb_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 3)
{
if (ps.Patient_Revenue__c != null )
{
opp.Mar_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 4)
{
if (ps.Patient_Revenue__c != null )
{
opp.Apr_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 5)
{
if (ps.Patient_Revenue__c != null )
{
opp.May_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 6)
{
if (ps.Patient_Revenue__c != null )
{
opp.Jun_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 7)
{
if (ps.Patient_Revenue__c != null )
{
opp.Jul_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 8)
{
if (ps.Patient_Revenue__c != null )
{
opp.Aug_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 9)
{
if (ps.Patient_Revenue__c != null )
{
opp.Sep_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 10)
{
if (ps.Patient_Revenue__c != null )
{
opp.Oct_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 11)
{
if (ps.Patient_Revenue__c != null )
{
opp.Nov_Revenue__c += ps.Patient_Revenue__c;
}
}
if(ps.CreatedDate.month() == 12)
{
if (ps.Patient_Revenue__c != null )
{
opp.Dec_Revenue__c += ps.Patient_Revenue__c;
}
} }
update opportunityMap.values();
}}
Apex Trigger:
--------------------------
trigger UpdateDoctor on Patient__c (before insert, before update, after insert, before delete,after update, after delete, after undelete ) {
list<Patient__C> patients = trigger.new;
UpdatedoctorInfo my = new UpdatedoctorInfo();
my.updatedoctor(patients); }
Thanks for your help!
- Padmini S 26
- May 19, 2016
- Like
- 0
Apex Class and Trigger in Salesforce
Hi All,
I am new to salesforce triggers. I have two object Doctor__c and Patient__c objects. One custom field Doctor_Code__c on Docor__c object and another custom field on Patient__C object. Patient object has lookup field Doctor__c. If Patient Doctor_Code__c equal to Doctors Doctor_Code__c then Doctor__C field should populate with Doctor Name on Patient Object. For this I have written the Apex class and calling the Apex Class in trigger. But I am not getting any field Update. Below is the Code.
Apex Class:
------------------
public Class UpdateDoctor
{
public void updatedoctor1 (List<Doctor__C> doctors)
{
map<string, Doctor__C> ObjMap = new map<string, Doctor__C>();
for(Doctor__C obj: doctors)
{
if (obj.Doctor_Code__C!= Null)
{
ObjMap.put(obj.Doctor_Code__C, obj);
}
}
List<Patient__c> cases = [SELECT Id, Doctor_Code__c, Doctor__c FROM Patient__c WHERE Doctor_Code__c IN :ObjMap.KeySet()];
List<Patient__c> caseUpdateList = new List<Patient__c>();
for(Patient__c c: cases)
{
Doctor__C obj = ObjMap.get(c.Doctor_Code__c);
c.Doctor__C= obj.Id;
caseUpdateList.add(c);
}
}
}
Trigger
----------
trigger UpdateDoctortrigger on Doctor__c( before insert,before update) {
list<Doctor__c> doctors = trigger.new;
UpdateDoctor my = new UpdateDoctor();
my.updatedoctor1 (doctors);
}
Please help on this issue.
Thanks in Advance.
I am new to salesforce triggers. I have two object Doctor__c and Patient__c objects. One custom field Doctor_Code__c on Docor__c object and another custom field on Patient__C object. Patient object has lookup field Doctor__c. If Patient Doctor_Code__c equal to Doctors Doctor_Code__c then Doctor__C field should populate with Doctor Name on Patient Object. For this I have written the Apex class and calling the Apex Class in trigger. But I am not getting any field Update. Below is the Code.
Apex Class:
------------------
public Class UpdateDoctor
{
public void updatedoctor1 (List<Doctor__C> doctors)
{
map<string, Doctor__C> ObjMap = new map<string, Doctor__C>();
for(Doctor__C obj: doctors)
{
if (obj.Doctor_Code__C!= Null)
{
ObjMap.put(obj.Doctor_Code__C, obj);
}
}
List<Patient__c> cases = [SELECT Id, Doctor_Code__c, Doctor__c FROM Patient__c WHERE Doctor_Code__c IN :ObjMap.KeySet()];
List<Patient__c> caseUpdateList = new List<Patient__c>();
for(Patient__c c: cases)
{
Doctor__C obj = ObjMap.get(c.Doctor_Code__c);
c.Doctor__C= obj.Id;
caseUpdateList.add(c);
}
}
}
Trigger
----------
trigger UpdateDoctortrigger on Doctor__c( before insert,before update) {
list<Doctor__c> doctors = trigger.new;
UpdateDoctor my = new UpdateDoctor();
my.updatedoctor1 (doctors);
}
Please help on this issue.
Thanks in Advance.
- Padmini S 26
- May 17, 2016
- Like
- 0
Date Comparision in Apex Controller
Hi All,
I have implemented one Visualforce Page which display all the user with certain below condition.
User event startdate should not match with WorkOrder startdate. I am able to get list of user but not depend on criteria.
I wrote query for getting the user list : select Name, firstname,lastname, Skill__C, Technician_Location__c,Technician_Location__Latitude__s,Technician_Location__Longitude__s from User where Skill__C = :wo.Problem__c
I have written the query to get the all the task : select Id, Subject, isAllDayEvent, StartDateTime, EndDateTime from Event
I have retrieved the current record workorder by using the below query :SELECT Skill_Comparision__c ,Problem__c, Distance__c,Contact.Customer_Location__c,Contact.Customer_Location__Latitude__s,Contact.Customer_Location__Longitude__s,StartDate,EndDate FROM WorkOrder WHERE ID =: controller.getId()
Now I am not getting how to compare the WorkOrder startdate to Event Startdate. Please help on this issue.
Thanks in Advance.
I have implemented one Visualforce Page which display all the user with certain below condition.
User event startdate should not match with WorkOrder startdate. I am able to get list of user but not depend on criteria.
I wrote query for getting the user list : select Name, firstname,lastname, Skill__C, Technician_Location__c,Technician_Location__Latitude__s,Technician_Location__Longitude__s from User where Skill__C = :wo.Problem__c
I have written the query to get the all the task : select Id, Subject, isAllDayEvent, StartDateTime, EndDateTime from Event
I have retrieved the current record workorder by using the below query :SELECT Skill_Comparision__c ,Problem__c, Distance__c,Contact.Customer_Location__c,Contact.Customer_Location__Latitude__s,Contact.Customer_Location__Longitude__s,StartDate,EndDate FROM WorkOrder WHERE ID =: controller.getId()
Now I am not getting how to compare the WorkOrder startdate to Event Startdate. Please help on this issue.
Thanks in Advance.
- Padmini S 26
- April 29, 2016
- Like
- 0
SOQL between User and WorkOrder Standard Objects
I am trying to display the Some fields from WorkOrder and some fields from User objects. Kindly help me how to write the SOQL query on this objects. I have tried with below query.
Select id, Name , ( Select WorkOrderNumber from WorkOrder) from User.
It is throwing the error. Kindly help me on this issue.
Thanks in Advance.
Select id, Name , ( Select WorkOrderNumber from WorkOrder) from User.
It is throwing the error. Kindly help me on this issue.
Thanks in Advance.
- Padmini S 26
- April 21, 2016
- Like
- 0
Passing Parameter in Apex Controller
I am not able to pass the parameter in Apex Controller. Below is the my Code.
public assigntechniciancontroller(ApexPages.StandardController controller) {
accID = ApexPages.currentPage().getParameters().get('Id');
skill = ApexPages.currentPage().getParameters().get('Problem__c');
system.debug ('@@@@@@@@@@@' +skill);
}
Problem__c is the picklist field on Standard WorkOrder Object. I am getting the null in Problem__c field. Kindly help me on this.
Thanks in Advance.
public assigntechniciancontroller(ApexPages.StandardController controller) {
accID = ApexPages.currentPage().getParameters().get('Id');
skill = ApexPages.currentPage().getParameters().get('Problem__c');
system.debug ('@@@@@@@@@@@' +skill);
}
Problem__c is the picklist field on Standard WorkOrder Object. I am getting the null in Problem__c field. Kindly help me on this.
Thanks in Advance.
- Padmini S 26
- April 21, 2016
- Like
- 0
batch apex class with upsert
Hi All,
I have 4 objects Forecast__c, ForeCast_Details__C, Opportunity and Opportunity_Forecast__c. Opportunity object contains multiple Opportunity_Forecast__c. Forecast__c has looup to Opportunity Object. Now i have to write batch apex class with upsert the ForeCast_Details__C object records with value of Opportunity_Forecast__c.Could anyone please help on this.
Thanks in Advance.
I have 4 objects Forecast__c, ForeCast_Details__C, Opportunity and Opportunity_Forecast__c. Opportunity object contains multiple Opportunity_Forecast__c. Forecast__c has looup to Opportunity Object. Now i have to write batch apex class with upsert the ForeCast_Details__C object records with value of Opportunity_Forecast__c.Could anyone please help on this.
Thanks in Advance.
- Padmini S 26
- April 26, 2018
- Like
- 0
subordinate should not see his higher role records
Hi All,
We have two roles that Marketing Manager and Marketing Executive. Campaign OWD is Private. We have Parent campaign and sub campaign. Parent campaign owner always should be marketing manager. Sub campaign owner is marketing executive. But sub campaign has lookup to parent campaign. If i won't give parent campaign read permission to marketing executive then marketing executive can not save the sub campaign. Marketing executive will get error as insufficient privileges. I have created sharing rule that marketing executive can see marketing manager records with read only permission then only marketing executive can able to save the record or else marketing executive cannot save the record. But Actual requirement is Marketing executive not to see the parent campaign record, he can able to see only sub campaign. Could anyone help on this issue how to solve.
Thanks in Advance.
We have two roles that Marketing Manager and Marketing Executive. Campaign OWD is Private. We have Parent campaign and sub campaign. Parent campaign owner always should be marketing manager. Sub campaign owner is marketing executive. But sub campaign has lookup to parent campaign. If i won't give parent campaign read permission to marketing executive then marketing executive can not save the sub campaign. Marketing executive will get error as insufficient privileges. I have created sharing rule that marketing executive can see marketing manager records with read only permission then only marketing executive can able to save the record or else marketing executive cannot save the record. But Actual requirement is Marketing executive not to see the parent campaign record, he can able to see only sub campaign. Could anyone help on this issue how to solve.
Thanks in Advance.
- Padmini S 26
- March 20, 2017
- Like
- 0
how to increase code coverage for apex trigger
Hi All,
I have written below trigger.
I am getting only 69% code coverage for trigger. I am not able to cover the add error message in test class.could anyone help on this.
Thanks in Advance.
I have written below trigger.
trigger D2R_DFA_InventoryTrigger on DFA_Inventory__c (before insert, before update) { if(trigger.isBefore) { if(trigger.isInsert || trigger.isUpdate) { for(DFA_Inventory__c inv : trigger.new) { if(inv.Add_Quantity__c != null) { if(inv.Available_Quanity__c == null) inv.Available_Quanity__c = 0; inv.Available_Quanity__c = inv.Add_Quantity__c + inv.Available_Quanity__c; inv.Add_Quantity__c = null; } } } if(trigger.isInsert) { Map<Id, List<DFA_Inventory__c>> mapInvByDFA_Id = new Map<Id, List<DFA_Inventory__c>>(); for(DFA_Inventory__c inv : trigger.new) { mapInvByDFA_Id.put(inv.DFA__c, new List<DFA_Inventory__c>()); } List<DFA_Inventory__c> lstExistingInvs = [SELECT Id, DFA__c, Product__c FROM DFA_Inventory__c WHERE DFA__c=:mapInvByDFA_Id.keySet() ]; for( DFA_Inventory__c inv : lstExistingInvs) { if(!mapInvByDFA_Id.containsKey(inv.DFA__c)) { mapInvByDFA_Id.put(inv.DFA__c, new List<DFA_Inventory__c>()); } mapInvByDFA_Id.get(inv.DFA__c).add(inv); } for(DFA_Inventory__c inv : trigger.new) { if(mapInvByDFA_Id.containsKey(inv.DFA__c) && mapInvByDFA_Id.get(inv.DFA__c).size() > 0 ) { for(DFA_Inventory__c existingInv : mapInvByDFA_Id.get(inv.DFA__c)) { if(inv.Product__c == existingInv.Product__c) { inv.Product__c.addError('Product already exists in DFA Inventory, Update existing Inventory.'); } } } } } } }Below is the test class
@isTest public class D2R_DFA_InventoryTriggerTest { @testSetup static void Setup() { product2 prod = new product2(); prod.Name = 'Test Product'; insert prod; Id pricebookId = Test.getStandardPricebookId(); PricebookEntry standardPrice = new PricebookEntry( Pricebook2Id = pricebookId,Product2Id = prod.Id, UnitPrice = 10000, IsActive = true ); insert standardPrice; Pricebook2 customPB = new Pricebook2(Name='Custom Pricebook', isActive=true); insert customPB; Profile p = [SELECT Id FROM Profile WHERE Name='System Administrator']; User u2 = new User(Alias = 'standt1',Country='United Kingdom',Email='demo1@randomdemodomain.com',EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',LocaleSidKey='en_US',ProfileId = p.Id,TimeZoneSidKey='America/Los_Angeles', UserName='dprobertdemo1@camfed.org'); insert u2; Account acc1 = new Account(Name='TEST ACCOUNT', RecordTypeId = '012N00000005B9J', Email__c = 'test@gmail.com',Phone = '898789993', ownerId = u2.Id ,Sales_Executive__c = u2.Id); insert acc1; DFA_Inventory__c dfa = new DFA_Inventory__c(Add_Quantity__c=4,Available_Quanity__c=50,Product__c = prod.Id,DFA__c = acc1.Id ); insert dfa; } @isTest static void InventoryTriggerMethod1() { DFA_Inventory__c df= [select id,Add_Quantity__c,Available_Quanity__c,Product__c ,DFA__c from DFA_Inventory__c ]; Product2 p = [select id,Name from Product2]; } @isTest static void InventoryTriggerMethod2() { Product2 p = [select id,Name from Product2]; DFA_Inventory__c df= [select id,Add_Quantity__c,Available_Quanity__c,Product__c ,DFA__c from DFA_Inventory__c where Product__c = :p.Id]; try { df.Product__c = p.Id; update df; } catch(DMLException e) { Boolean expectedExceptionThrown = e.getMessage().contains('Product already exists in DFA Inventory, Update existing Inventory.') ? true : false; System.AssertEquals(expectedExceptionThrown, true); } } }
I am getting only 69% code coverage for trigger. I am not able to cover the add error message in test class.could anyone help on this.
Thanks in Advance.
- Padmini S 26
- March 01, 2017
- Like
- 0
System.NullPointerException: Attempt to de-reference a null object in salesforce test class
Hi All,
I am getting System.NullPointerException: Attempt to de-reference a null object error in salesforce test class.
Apex Class:
Test Class
Getting error in openpopup() method in Apex class. Because passing the recordId.startsWith('00Q') in openpopup. Not getting how to pass in Test class. Could any one help on this.
Thanks in Advance.
I am getting System.NullPointerException: Attempt to de-reference a null object error in salesforce test class.
Apex Class:
global class planvisitcontroller { public String RequestorEmployee { get; set; } public id leadid{get;set;} public string userid{get;set;} public string SelectedProduct{get;set;} public boolean showReqPopup { get; set; } public list<lead> leadlist{get;set;} public boolean serachdone{get;set;} public list<user> userList{get;set;} public String routeAccMap { get; set; } public String taskSubject{get;set;} public DateTime startDateTime {get;set;} public DateTime endDateTime {get;set;} public String errorMessage {get;set;} public list<Account> lstAccount {get;set;} public boolean isError { get; set; } public List<WrapperLead> wrappers {get; set;} public List<String> selectedDays {get;set;} public String recordName { get; set; } public List<SelectOption> days { get; set; } public Set<String> plannedDays; public String currentMonth { get; set; } public planvisitcontroller () { showReqPopup = false; wrappers = new List<WrapperLead>(); SelectedDays = new List<String>(); days = new List<SelectOption>(); mapUsersByID = new Map<Id, User>([SELECT Id, Name From User WHERE Manager.Id=:UserInfo.getUserId() AND UserRole.Name='Sales Executive']); leadlist=[select id, name, Status, Requested_Visit_Time__c,OwnerId,Sales_Executive__c,Address,city from lead WHERE OwnerID=:mapUsersByID.keySet() and isConverted=false and Sales_Executive__c!=null order by Requested_Visit_Time__c]; for(Lead l : leadlist){ wrappers.add(new WrapperLead(l, new List<Integer>{1,2})); } lstAccount = [SELECT Id, Name, Onboarding_Status__c, BillingCity, OwnerId,Sales_Executive__c From Account WHERE Sales_Executive__c=:mapUsersByID.keySet()]; } public PageReference closetable() { showReqPopup=false; return null; } public PageReference SelectedEmployee() { return null; } public PageReference closePopup() { PageReference ref = new PageReference('/apex/D2R_PlanVisit'); ref.setRedirect(true); return ref; } public void FilterEmployee() { userList=mapUsersByID.values(); serachdone=true; openpopup(); //return null; } public PageReference CloseWindow() { showReqPopup=false; selectedDays = new List<String>(); plannedDays = new Set<String>(); taskSubject = ''; return null; } public PageReference openpopup() { showReqPopup=true; String recordId = leadid; List<Task> existingTasks = new List<Task>(); plannedDays = new Set<String>(); if(recordId.startsWith('00Q')) { Lead l = [SELECT Sales_Executive__r.name FROM Lead WHERE Id=:recordId]; if(RequestorEmployee=='' || RequestorEmployee == null) RequestorEmployee = l.Sales_Executive__r.name; existingTasks = [Select Id, subject, ActivityDate from Task Where WhoId=:recordId AND Type='Visit']; }else { Account a = [Select Sales_Executive__r.name From Account Where id=:recordId]; if(RequestorEmployee=='' || RequestorEmployee == null) RequestorEmployee = a.Sales_Executive__r.name; existingTasks = [Select Id, subject, ActivityDate from Task Where WhatId=:recordId AND Type='Visit']; } days = getDaysOfCurrentMonth(); for (Task t : existingTasks){ String taskDay = String.valueOf(t.ActivityDate); } selectedDays = new List<String>(); for (Task t : existingTasks){ String taskDay = String.valueOf(t.ActivityDate); System.debug('!!: ' + taskDay); if(String.isNotBlank(taskDay) ){ List<String> i = taskDay.split('-'); if(Date.Today().Year() == Integer.valueOf(i[0]) && Date.Today().Month() == Integer.valueOf(i[1])) if(!plannedDays.contains(''+i[2])) { selectedDays.add(''+Integer.valueOf(i[2])); plannedDays.add(''+Integer.valueOf(i[2])); } } } System.debug(' selectedDays !!: ' + selectedDays); System.debug('plannedDays !!: ' + plannedDays); return null; } public PageReference saveplaning() { showReqPopup=false; String recordId = leadid; Lead leadplan = new Lead(); Account acc = new Account(); List<Task> tasksToInsert = new List<Task>(); System.debug('selected Days: ' + selectedDays ); if(recordId.startsWith('00Q')){ leadplan = [select id, Requested_Visit_Time__c, Plan__c, Name, OwnerId, Sales_Executive__c from Lead where id = :recordId ]; } else { acc = [SELECT Id, Name, BillingCity, OwnerId,Sales_Executive__c From Account WHERE Id=:recordId]; } for(String str : selectedDays) { system.debug('Loop for : ' + str); Id visitRT = Schema.SObjectType.Task.getRecordTypeInfosByName().get('Plan-Visit Task').getRecordTypeId(); if(!plannedDays.contains(str)) { system.debug('task to be inserted for : ' + str); Integer day = Integer.valueOf(str); Date dueDate = date.newInstance(Date.Today().Year(), Date.Today().Month(), day); Task task = new Task(); task.subject = taskSubject; if(String.isNotBlank(userid)){ task.OwnerId = userid; } else { if(recordId.startsWith('00Q')) task.OwnerId = leadplan.Sales_Executive__c; else task.OwnerId = acc.Sales_Executive__c; } if(recordId.startsWith('00Q')) { task.whoId = recordId; } else { task.whatId = recordId; } task.ActivityDate = dueDate; task.RecordTypeId = visitRT; task.Type = 'Visit'; tasksToInsert.add(task); } } if(tasksToInsert.size()>0) { insert tasksToInsert; } PageReference ref = new PageReference('/apex/D2R_PlanVisit'); ref.setRedirect(true); return ref; } public List<SelectOption> getDaysOfCurrentMonth() { Map<Integer,String> mapMonthsByIndex = new Map<Integer,String>{ 1 => 'January', 2 => 'February'}; currentMonth = mapMonthsByIndex.get(Date.Today().Month()) + ' , ' + Date.Today().Year(); Date firstDayOfMonth = System.today().toStartOfMonth(); Date lastDayOfMonth = firstDayOfMonth.addDays(Date.daysInMonth(firstDayOfMonth.year(), firstDayOfMonth.month()) - 1); System.debug('!!!!: ' + lastDayOfMonth); List<String> days = new List<String>(); for(Integer i=1; i<=lastDayOfMonth.day() ; i++ ){ days.add('' + i); System.debug('!!!!: ' +i); } List<SelectOption> Options = new List<SelectOption>(); for(String str : days){ Options.add(new SelectOption(str,str)); } return Options; } }
Test Class
@isTest private class planvisitcontrollerTest { @testSetup static void setup() { Profile p = [SELECT Id FROM Profile WHERE Name='Sales Executive']; User u2 = new User(Alias = 'standt1',Country='United Kingdom',Email='demo1@randomdemodomain.com',EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',LocaleSidKey='en_US',ProfileId = p.Id,TimeZoneSidKey='America/Los_Angeles', UserName='dprobertdemo1@camfed.org'); insert u2; Lead l = new Lead(); l.LastName = 'Salesforce.com'; l.Company = 'KPMG'; l.Status = 'New'; l.Email = 'abc@gmail.com'; l.Phone = '8938493'; l.Industry = 'Web'; l.City=' bangalore'; l.PostalCode ='788889'; l.State = 'Karnataka'; l.Country = 'India'; insert l; Task t = new Task(); t.Subject= 'test task'; t.ActivityDate = System.Today(); t.WhoId = l.Id; t.Type = 'Visit'; insert t; l = [SELECT Id FROM Lead WHERE Id = :l.Id]; } @isTest static void testMethod1() { planvisitcontroller pc = new planvisitcontroller(); Test.startTest(); pc.SelectedEmployee(); pc.closePopup(); pc.FilterEmployee(); pc.CloseWindow(); pc.saveplaning(); pc.getDaysOfCurrentMonth(); Test.stopTest(); System.assertNotEquals(null, pc.openpopup()); } }
Getting error in openpopup() method in Apex class. Because passing the recordId.startsWith('00Q') in openpopup. Not getting how to pass in Test class. Could any one help on this.
Thanks in Advance.
- Padmini S 26
- February 24, 2017
- Like
- 0
Inserting the child records double time
I have 3 objects Booking, Products and Collections. Booking object has two related lists that is Products and Collections. After creating the booking record then automatically collection records are created depend on field payment duration on Booking. For this i have implemented the Apex Trigger. It is inserting the child collection records fine only but problem is when i will update the booking payment duration field as 2 again 2 more recods are inserting under collection object. It is inserting collection records again. If i will remove the after update event then child collections records are inserting the payment amount as 0.Below is the trigger.
trigger createCollections on Order ( after insert, after update) { List<Collection__c> coll = new List<Collection__c>(); for(Order o : trigger.new) { if(createcollectionclass.runonce()){ if(o.Payment_Duration__c != null && o.Type == 'Periodic' ) { for(integer i = 0; i< integer.valueOf(o.Payment_Duration__c); i++){ Collection__c c= new Collection__c(); c.Order__c = o.id; c.Payment_Amount__c = ( o.Total_Due__c/o.Payment_Duration__c); coll.add(c); } } } } if(!coll.isEmpty()){ insert coll; } }Kindly help on this issue.
- Padmini S 26
- August 18, 2016
- Like
- 0
PageReference is not redirecting in communities
Hi,
I have written the below visualforce page and Apex class for creating the Opportunity Product. It is working fine in salesforce . When I opened in salesforce Community , I am not able to create opportunity product and not able to redirect to another visualforce page. I have given visualforce page and apex class access to community user profile. But it is redirects to Error occurred while loading a Visualforce page.
I have written the below visualforce page and Apex class for creating the Opportunity Product. It is working fine in salesforce . When I opened in salesforce Community , I am not able to create opportunity product and not able to redirect to another visualforce page. I have given visualforce page and apex class access to community user profile. But it is redirects to Error occurred while loading a Visualforce page.
Visualforce page: <apex:page standardController="Pricebookentry" extensions="productcontroller" sidebar="false" showHeader="false" applyBodyTag="false"> <html lang="en"> <head> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" ></script> <script src="https://www.amcharts.com/lib/3/amcharts.js"></script> <script src="https://www.amcharts.com/lib/3/serial.js"></script> <script src="https://www.amcharts.com/lib/3/themes/light.js"></script> <apex:stylesheet value="{!URLFOR($Resource.BootCss)}" /> <apex:includeScript value="{!URLFOR($Resource.Chart1)}"/> <apex:includeScript value="{!URLFOR($Resource.JS)}" /> <apex:includeScript value="{!URLFOR($Resource.bootJs)}" /> <script> function alertSample() { alert("You have booked Successfully"); } </script> <style> .container-fluid { margin-top: 10px; } #chartdiv { width : 400px; height : 200px; font-size : 11px; } </style> </head> <body> <apex:form > <div id="myCarousel" class="carousel slide" data-ride="carousel"> <!-- Indicators --> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data-target="#myCarousel" data-slide-to="1"></li> <li data-target="#myCarousel" data-slide-to="2"></li> </ol> <!-- Wrapper for slides --> <div class="carousel-inner" role="listbox"> <div class="item active"> <img src='{!URLFOR($Resource.Header)}' alt="New York"/> <div class="carousel-caption"> <h3>New York</h3> <p>The atmosphere in New York is lorem ipsum.</p> </div> </div> <div class="item"> <img src='{!URLFOR($Resource.Header)}' alt="Chicago"/> <div class="carousel-caption"> <h3>Chicago</h3> <p>Thank you, Chicago - A night we won't forget.</p> </div> </div> <div class="item"> <img src='{!URLFOR($Resource.Header)}' alt="Los Angeles"/> <div class="carousel-caption"> <h3>LA</h3> <p>Even though the traffic was a mess, we had the best time.</p> </div> </div> </div> </div> <div class="container-fluid"> <div id="header"></div> <div class="panel panel-default"> <div class = "panel-table" style="float: left;width: 900px;"> <div class="panel-body" > <div class="panel panel-success"> <div class="panel-heading">Prodcut Search</div> <div class="panel-body"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="aName">Products Category</label> <apex:selectList value="{!selectedCategory}" multiselect="false" size="1"> <apex:selectOptions value="{!productOptions}"/> </apex:selectList> <apex:commandButton value="Search Product" action="{!SearchProduct}" /> </div> </div> </div> </div> </div> <div class="panel panel-info"> <div class="panel-heading"><div> Products Information <apex:commandButton value="Book" action="{!Book}" onclick="alertSample();" style="float: right;"/> </div> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span> </button> </div> </div> </div> </div> </div> <div class="panel-body"> <apex:outputPanel id="productTable"> <table class="table table-condensed"> <tr> <th>Select</th> <th>Product name</th> <th>Product Category</th> <th>Product Price</th> <th> Quantity</th> <th>Image</th> </tr> <apex:outputpanel rendered="{!IF((selectedCategory == NULL) , true,false)}"> <apex:repeat value="{!productlist1}" var="prod1" > <tr> <td> </td> <td> <apex:outputField value="{!prod1.Product2.Name}" /> </td> <td> <apex:outputField value="{!prod1.Product2.Family}" /> </td> <td> <apex:outputField value="{!prod1.UnitPrice}" /> </td> <td> <apex:inputField value="{!prod1.Product2.Quantity__c}" /> </td> <td> <apex:outputField value="{!prod1.Product2.ProductPicture__c}" /> </td> </tr> </apex:repeat> </apex:outputpanel> <apex:outputpanel rendered="{!IF((selectedCategory!= NULL) , true,false)}" id="pageblock1"> <apex:repeat value="{!productlist}" var="prod" > <tr> <td> <apex:outputPanel id="counter2"> <input type="radio" name="sel" /> <apex:actionsupport action="{!process}" event="onchange" rerender="abc"> <apex:param name="select" value="{!prod.Product2.Id}" assignTo="{!str}"/> </apex:actionsupport> </apex:outputPanel> </td> <td> <apex:outputField value="{!prod.Product2.Name}" /> </td> <td> <apex:outputField value="{!prod.Product2.Family}" /> </td> <td> <apex:outputField value="{!prod.UnitPrice}" /> </td> <td> <apex:inputText value="{!prod.Product2.Quantity__c }" /> </td> <td > <apex:outputField value="{!prod.Product2.ProductPicture__c}" /> </td> </tr> </apex:repeat> </apex:outputpanel> </table> </apex:outputPanel> </div> </div> </div> </div> </div> </div> </apex:form> </body> </html> </apex:page> Apex Class: public without sharing class productcontroller { public Product2 pro{get;set;} public Pricebookentry productlist{get;set;} public OpportunityLineItem oppLineItem{get;set;} Public Boolean flag {get;set;} Public string str {get;set;} Public Product2 records {get;set;} public List<Pricebookentry> productlist1{get;set;} public string selectedAsset {get;set;} public string selected{get;set;} public String selectedCategory{get;set;} public productcontroller(ApexPages.StandardController controller) { pro = new Product2(); productlist1 = [SELECT Id,Name,Product2.Id,Product2.Name,Product2.Family,Product2.Quantity__c ,Product2.Product_Category__c,Product2.ProductPicture__c,Product2.ProductCode,UnitPrice FROM Pricebookentry LIMIT 2]; } public void SearchProduct() { productlist = [SELECT Id,Name,Product2.Id,Product2.Name,Product2.Family,Product2.Quantity__c ,Product2.ProductPicture__c,Product2.ProductCode,UnitPrice FROM Pricebookentry where PriceBook2.IsStandard=true AND Product2.Family =:selectedCategory]; system.debug('**********' + pro.Family); } public PageReference process() { flag = false; return null; } public PageReference Book() { Opportunity opp = new Opportunity(); opp.Name = 'Test Opportunity'; opp.CloseDate= System.Today(); opp.StageName='Open'; insert opp; system.debug('str****************' + str); oppLineItem = new OpportunityLineItem(); if ( str != null) { oppLineItem.OpportunityId = opp.Id; oppLineItem.PricebookEntryId = productlist.Id; // oppLineItem.Product2.Id = str; oppLineItem.UnitPrice = productlist.UnitPrice; oppLineItem.Quantity = productlist.Product2.Quantity__c; oppLineItem.Status__c = 'Open'; oppLineItem.Sub_Status__c = 'Order Received'; insert oppLineItem; return null; } PageReference ref = Page.oppproddetailpage; ref.getParameters().put('selectedAsset', oppLineItem.Id); ref.setRedirect(true); return ref; } } public List<SelectOption> getproductOptions() { List<SelectOption> countryOptions = new List<SelectOption>(); countryOptions.add(new SelectOption('','-None-')); countryOptions.add(new SelectOption('Vibration Speakers','Vibration Speakers')); countryOptions.add(new SelectOption('LED H Series','LED H Series')); return countryOptions; } }Could please help on this issue. Thanks in Advance.
- Padmini S 26
- August 04, 2016
- Like
- 0
Increase the code coverage for custom controller
Hi All,
Below are Apex Class and Test Class.
I am getting only 50% code coverage. I am not able to cover the Bold lines in apex class. Anyone please help on this.
Thanks in Advance.
Below are Apex Class and Test Class.
Apex Class: public class UnvalidatedMum { id currentUserid; public list<Mum_Information__c> UnvalidatedMumList{get;set;} public UnvalidatedMum () { currentUserid=UserInfo.getUserId(); Educator__c edu=[select id from Educator__c where user__c =:currentUserid limit 1]; UnvalidatedMumList=[SELECT Id, Name, Mobile_No__c, EduMum__c, First_Name__c, Validation_Stage__c, Current_week__c FROM Mum_Information__c where EduMum__c =:edu.id and Validation_Stage__c='Unvalidated' order by CreatedDate desc limit 10000 ]; } }
Test class: ----------- @istest private class UnvalidatedMumExtTest { private static testmethod void fetchUnValidatedMum(){ list<Mum_Information__c> mumList = new list<Mum_Information__c>(); user u =[select id from user limit 1]; Educator__c edu = new Educator__c(); edu.Educator_Phone_No__c='7451245759'; edu.user__c = u.id; insert edu; City__c c = new City__c(Name='cityname',Estimated_Target__c=6); insert c; Message_Table__c m = new Message_Table__c (Persona__c=1,Week__c=12); insert m; Hospital__c h = new Hospital__c(name='hospital',Hospital_Type__c='Govt',City_Name__c=c.id); insert h; Mum_Information__c info = new Mum_Information__c(Mum_Hospital__c=h.id,Whatsapp_Presence__c='yes',Validation_Stage__c='validated',Pregnancy_Type__c='First',Lifestage_Months__c='3rd trimester',Family_Type__c='Joint',Facebook_Presence__c='no',First_Name__c = 'Test',edumum__c=edu.id,edd__c=date.today(),MObile_no__c='7094346807', address__c='hyd',pincode__c=121312,Landline_Number__c=0402303433,otp__c=123,Preferred_language__c='English',Do_you_own_this_phone__c='yes',ConsentID__c = decimal.valueof('12345678912')); insert info; UnvalidatedMum un = new UnvalidatedMum(); } }
I am getting only 50% code coverage. I am not able to cover the Bold lines in apex class. Anyone please help on this.
Thanks in Advance.
- Padmini S 26
- July 21, 2016
- Like
- 0
System.StringException: Unrecognized base64 character: * in test class
Hi All,
I am getting the error in test class as System.StringException: Unrecognized base64 character: *. I am not getting how to resolve the issue. Could anyone help on this issue.
Thanks in Advance.
I am getting the error in test class as System.StringException: Unrecognized base64 character: *. I am not getting how to resolve the issue. Could anyone help on this issue.
@isTest private class TestUpdateCourseCompletionStatusService { public static testmethod void testupdate() { LMS__c lmsc = new LMS__c (); lmsc.Prod_CryptoKey__c = 'prod crypto'; lmsc.Test_CryptoKey__c = 'test crypto'; lmsc.Prod_IV__c = 'prod iv'; lmsc.Test_IV__c = 'test iv'; insert lmsc; Registration__c coursereg = new Registration__c(); coursereg.Name__c = 'testcourse'; coursereg.ID_Number__c = '1234'; coursereg.LMS_Status__c ='Completed'; insert coursereg; System.RestContext.request = new RestRequest(); RestContext.request.requestURI = '/UpdateCourseCompletionStatus/*'; RestContext.request.addHeader('decodedB64 ', '12345'); UpdateCourseCompletionStatusService.updateCourseRegistration(); } }
Thanks in Advance.
- Padmini S 26
- July 13, 2016
- Like
- 0
System.StringException: Unrecognized base64 character: in Test Class
Hi All,
I am getting the System.StringException: Unrecognized base64 character: in Test Class.
I have written the below Apex Code to update the Course Registration Details.
global static String updateCourseRegistration(){
RestRequest req = RestContext.request;
RestResponse res = Restcontext.response;
String Endpoint=req.requestURI;
string enrCourseComDate=endpoint.substring(endpoint.lastIndexOf('/')+1);
String enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDate,'UTF-8');
enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDateUTF,'UTF-8');
Blob decodedB64 = EncodingUtil.base64Decode(enrCourseComDateUTF);
Blob decryptedBlob = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB64);
string CourseComDate=decryptedBlob.toString();
if(courseComDate.length()==8){
endpoint=endpoint.removeEnd('/'+enrCourseComDate);
String encEnCourseId= endpoint.substring(endpoint.lastIndexOf('/')+1);
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
Blob decodedB641 = EncodingUtil.base64Decode(encEnCourseId);
Blob decryptedBlob1 = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB641);
string enCourseId=decryptedBlob1.toString();
if(enCourseId.length()==5){
List<Course_Registration__c> cr=[select id,name,Course_Instance_LMS_Mode__c,LMS1_Enrcourse_ID__c,Registration_Date__c,Course_completion_Date__c from Course_Registration__c where
LMS1_Enrcourse_ID__c=:enCourseId];
if(cr.size()>0){
if(cr[0].Course_Instance_LMS_Mode__c!='Blended')
cr[0].LMS_Status__c='Completed';
else
cr[0].LMS_Status__c='Blended course completed';
update cr;
return '2000-Successful';
}
Test Class:
@isTest
private class TestUpdateCourseCompletionStatusService
{
public static testmethod void testupdate() {
LMSCredentials__c lmsc = new LMSCredentials__c ();
lmsc.Prod_CryptoKey__c = 'prod crypto';
lmsc.Test_CryptoKey__c = 'test crypto';
lmsc.Prod_IV__c = 'prod iv';
lmsc.Test_IV__c = 'test iv';
insert lmsc;
Course_Registration__c coursereg = new Course_Registration__c();
coursereg.Name__c = 'testcourse';
coursereg.ID_Number__c = '1234';
coursereg.LMS_Status__c ='Completed';
insert coursereg;
System.RestContext.request = new RestRequest();
RestContext.request.requestURI = '/UpdateCourseCompletionStatus/*';
RestContext.request.addHeader('decodedB641 ', '12345');
UpdateCourseCompletionStatusService.updateCourseRegistration();
}
}
I am getting the error as "System.StringException: Unrecognized base64 character: " and stack trace as Class.System.EncodingUtil.base64Decode: line 5, column 1
Class.UpdateCourseCompletionStatusService.updateCourseRegistration: line 28, column 1
Class.TestUpdateCourseCompletionStatusService.testupdate: line 30, column 1.
Thanks in Advance.
I am getting the System.StringException: Unrecognized base64 character: in Test Class.
I have written the below Apex Code to update the Course Registration Details.
global static String updateCourseRegistration(){
RestRequest req = RestContext.request;
RestResponse res = Restcontext.response;
String Endpoint=req.requestURI;
string enrCourseComDate=endpoint.substring(endpoint.lastIndexOf('/')+1);
String enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDate,'UTF-8');
enrCourseComDateUTF= EncodingUtil.urlDecode(enrCourseComDateUTF,'UTF-8');
Blob decodedB64 = EncodingUtil.base64Decode(enrCourseComDateUTF);
Blob decryptedBlob = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB64);
string CourseComDate=decryptedBlob.toString();
if(courseComDate.length()==8){
endpoint=endpoint.removeEnd('/'+enrCourseComDate);
String encEnCourseId= endpoint.substring(endpoint.lastIndexOf('/')+1);
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
encEnCourseId= EncodingUtil.urlDecode(encEnCourseId,'UTF-8');
Blob decodedB641 = EncodingUtil.base64Decode(encEnCourseId);
Blob decryptedBlob1 = Crypto.decrypt('AES256', blob.valueof(cryptoKey),blob.valueof(IV), decodedB641);
string enCourseId=decryptedBlob1.toString();
if(enCourseId.length()==5){
List<Course_Registration__c> cr=[select id,name,Course_Instance_LMS_Mode__c,LMS1_Enrcourse_ID__c,Registration_Date__c,Course_completion_Date__c from Course_Registration__c where
LMS1_Enrcourse_ID__c=:enCourseId];
if(cr.size()>0){
if(cr[0].Course_Instance_LMS_Mode__c!='Blended')
cr[0].LMS_Status__c='Completed';
else
cr[0].LMS_Status__c='Blended course completed';
update cr;
return '2000-Successful';
}
Test Class:
@isTest
private class TestUpdateCourseCompletionStatusService
{
public static testmethod void testupdate() {
LMSCredentials__c lmsc = new LMSCredentials__c ();
lmsc.Prod_CryptoKey__c = 'prod crypto';
lmsc.Test_CryptoKey__c = 'test crypto';
lmsc.Prod_IV__c = 'prod iv';
lmsc.Test_IV__c = 'test iv';
insert lmsc;
Course_Registration__c coursereg = new Course_Registration__c();
coursereg.Name__c = 'testcourse';
coursereg.ID_Number__c = '1234';
coursereg.LMS_Status__c ='Completed';
insert coursereg;
System.RestContext.request = new RestRequest();
RestContext.request.requestURI = '/UpdateCourseCompletionStatus/*';
RestContext.request.addHeader('decodedB641 ', '12345');
UpdateCourseCompletionStatusService.updateCourseRegistration();
}
}
I am getting the error as "System.StringException: Unrecognized base64 character: " and stack trace as Class.System.EncodingUtil.base64Decode: line 5, column 1
Class.UpdateCourseCompletionStatusService.updateCourseRegistration: line 28, column 1
Class.TestUpdateCourseCompletionStatusService.testupdate: line 30, column 1.
Thanks in Advance.
- Padmini S 26
- July 12, 2016
- Like
- 0
Page redirect not working in Community Pages
I have enabled Chatter Answers to override the change password page. This is working fine, on click of the link from email it is landing on the change password page.
In the controller of change password page, there is a redirect to another page based on certain conditions, this page redirect is not occuring.
PageReference ref = Page.resetPasswordPage;
return ref;
It seems like the page is stuck on change password page.
Both change and reset pages are added to communities.
Any information on this would be very helpful.
In the controller of change password page, there is a redirect to another page based on certain conditions, this page redirect is not occuring.
PageReference ref = Page.resetPasswordPage;
return ref;
It seems like the page is stuck on change password page.
Both change and reset pages are added to communities.
Any information on this would be very helpful.
- Bugude
- April 01, 2015
- Like
- 1