You need to sign in to do that
Don't have an account?
Ashwini Zine
Unable to cover test class
I am Unable to cover the code. I have inserted all the possible data in test class still the code coverage is 35%. Can someone please help?
Apex class:
global class ProductCustomController { public static String accountId{get; set;} public static List<Opportunity> lstopportunity{get;set;} public Map<String,Map<String,List<Opportunity>>> mapFamilyPRodValues{get;set;} public Map<String,List<Opportunity> >mapCategorizedPRoValues{get;set;} public ProductCustomController(ApexPages.StandardController controller){ accountId= Controller.getRecord().id; } @RemoteAction global static Map<String,Map<String,Map<String,Set<Opportunity>>>> getItems(String accId) { String accountId = accId; lstopportunity= [Select (Select Id,Quantity1__c,Monthly_GP__c,Name,Installed__c,Cost_Price_Per_Month__c,Unit_Price_Per_Month__c,Product2Id, Product2.Name,Product2.Product_Family__c,Product2.Product_Category1__c,Total_One_Off_GP__c from OpportunityLineItems where Status__c IN ('Processing', 'Active (orange)','Installing','Active (green)', 'Cancelling') ORDER BY Product2.Product_Family__c,Product2.Product_Category1__c),Id,Name,Minimum_term__c,StageName from Opportunity where AccountId =:accountId]; Map<Set<String>,Map<String,Map<String,sObject>>> DataMap = new Map<Set<String>,Map<String,Map<String,sObject>>>(); Set<String> setOfCategory = new Set<String>(); Map<String,Map<String,Map<String,Set<Opportunity>>>> mapOfCategory = new Map<String,Map<String,Map<String,Set<Opportunity>>>>(); for(Opportunity ListOfOpp : lstopportunity){ for(OpportunityLineItem lineitem: ListOfOpp.OpportunityLineItems){ if(mapOfCategory.containsKey(lineitem.Product2.Product_Category1__c)){ Map<String,Map<String,Set<Opportunity>>> FamilyProductValues = mapOfCategory.get(lineitem.Product2.Product_Category1__c); if(FamilyProductValues.containsKey(lineitem.Product2.Product_Family__c)){ Map<String,Set<Opportunity>> ProductOppvalue = FamilyProductValues.get(lineitem.Product2.Product_Family__c); if(ProductOppvalue.containsKey(lineitem.Product2.Name)){ Set<Opportunity> oppValue = ProductOppvalue.get(lineitem.Product2.Name); oppValue.add(ListOfOpp); ProductOppvalue.put(lineitem.Product2.Name,oppValue); } else{ Set<Opportunity> NewListOfOpp = new Set<Opportunity>(); NewListOfOpp.add(ListOfOpp); ProductOppvalue.put(lineitem.Product2.Name,NewListOfOpp); } FamilyProductValues.put(lineitem.Product2.Product_Family__c,ProductOppvalue); } else{ Map<String,Set<Opportunity>> NewProductOppvalue = new Map<String,Set<Opportunity>>(); Set<Opportunity> NewListOfOpp = new Set<Opportunity>(); NewListOfOpp.add(ListOfOpp); NewProductOppvalue.put(lineitem.Product2.Name,NewListOfOpp); FamilyProductValues.put(lineitem.Product2.Product_Family__c,NewProductOppvalue); } } else{ Map<String,Map<String,Set<Opportunity>>> NewFamilyProductValues = new Map<String,Map<String,Set<Opportunity>>>(); Map<String,Set<Opportunity>> NewProductOppvalue = new Map<String,Set<Opportunity>>(); Set<Opportunity> NewListOfOpp = new Set<Opportunity>(); NewListOfOpp.add(ListOfOpp); NewProductOppvalue.put(lineitem.Product2.Name,NewListOfOpp); NewFamilyProductValues.put(lineitem.Product2.Product_Family__c,NewProductOppvalue); mapOfCategory.put(lineitem.Product2.Product_Category1__c,NewFamilyProductValues); } } } return mapOfCategory; } }
Test Class :
@isTest public class ProductCustomControllerTest{ public Map<String,Map<String,List<Opportunity>>> mapFamilyPRodValues{get;set;} public Map<String,List<Opportunity> >mapCategorizedPRoValues{get;set;} public static testMethod void testProducts1() { Test.Starttest(); Account acc = new Account(); acc.Name = 'test'; acc.Phone = '78676565656'; acc.Type = 'Customer'; acc.Industry= 'Agriculture & Mining'; acc.NumberofUKSites__c = '1'; acc.Employees_DueDil__c = '10-19'; acc.SIC_Code_DueDil__c = 'test'; insert acc; System.debug('Debug Log : acc Insertion Successful'); ApexPages.StandardController stdController = new ApexPages.StandardController(acc); ProductCustomController con = new ProductCustomController(stdController); Opportunity opp = new Opportunity(Name='Test', Account = acc, StageName='Qualify', Company_reg_no__c ='test', Type = 'Connectivity', Minimum_term__c = 6546, CompellingEvent__c = 'test', NextStep = 'test', CloseDate = System.today(), Delivery_Address_same_as_Installation_ad__c = true, Installation_address_same_as_Billing_Add__c = true, //Product2 = prod, //City__c='test', AccountId=acc.Id, Probability=100); insert opp; Id pricebookId = Test.getStandardPricebookId(); //Create your product Product2 prod = new Product2( Product_Category1__c='Mobile' ,Name = 'Laptop X200', Sale_Price_One_Off__c = 03.00,Sale_Price_Per_Month__c = 03.00, Cost_Price_One_Off__c = 02.00, Cost_Price_Per_Month__c = 02.00 ); insert prod; //Create your pricebook entry PricebookEntry pbEntry = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = prod.Id, UnitPrice = 100.00, IsActive = true ); insert pbEntry; //create your opportunity line item. This assumes you already have an opportunity created, called opp OpportunityLineItem oli = new OpportunityLineItem( OpportunityId = opp.Id, Quantity = 5, PricebookEntryId = pbEntry.Id, TotalPrice = 3 * pbEntry.UnitPrice ); insert oli; OpportunityLineItem oli1 = new OpportunityLineItem( OpportunityId = opp.Id, Quantity = 5, PricebookEntryId = pbEntry.Id, TotalPrice = 3 * pbEntry.UnitPrice ); insert oli1; String accid = acc.id; ProductCustomController.getItems(accid); test.stopTest(); } }