You need to sign in to do that
Don't have an account?
Test Cases And Test Class
Hi Everyone ,
Please Suggest me best covarage logic for this
This is my class
public with sharing class CreateQuoteController {
public List<Product2> packageProductsList = new List<Product2>();
public List<ProductWrapper> searchResultsWithWrapper {get;set;}
public List<QuoteLineItem> quoteItemsList {get;set;}
public Quote_Package__c quotePackage {get;set;}
public CreateQuoteController (){
//Get record id of Quote Package
ID quotePackageId = ApexPages.currentPage().getParameters().get('id');
//Read Package Details based on Record ID
quotePackage = [Select Id, Name, Package__c, Physchem_Subpackage__c, Quote__c, Quote__r.CurrencyISOCode from Quote_Package__c where Id =:quotePackageId ];
//Fetch All Products matching with Package
packageProductsList = [Select Id, Name, ProductCode, Description, Package__c, Physchem_Subpackage__c , CIPAC__c,
EC__c, OECD__c, OPPTS__c from Product2 where isActive = true and Package__c = :quotePackage.Package__c ];
if(packageProductsList != null){
//A list of ProductWrapper class that wraps Product2 class to enable checkbox selection
searchResultsWithWrapper = new List<ProductWrapper>();
if(quotePackage.Physchem_Subpackage__c != null && quotePackage.Physchem_Subpackage__c != ''){
//Add only those products in Search Result where Product Physchem subpackage matches with that selected in Quote Package
for(Product2 product:packageProductsList ){
String productPhysChemSubpackage = product.Physchem_Subpackage__c;
if(productPhysChemSubpackage != null && productPhysChemSubpackage != '' && productPhysChemSubpackage.contains(quotePackage.Physchem_Subpackage__c)){
searchResultsWithWrapper.add(new ProductWrapper(product));
}
}
}else{
//Add All products in Search Result
for(Product2 product:packageProductsList ){
searchResultsWithWrapper.add(new ProductWrapper(product));
}
}
}
}
public PageReference proceedToConfigure()
{
Map<String, String> productIdMap = new Map<String, String>();
Map<String, Decimal> productIdPriceMap = new Map<String, Decimal>();
Map<String, String> productIdPriceBookEntryIdMap = new Map<String, String>();
for(ProductWrapper productWrapper : searchResultsWithWrapper){
if(productWrapper.selected){
productIdMap.put(productWrapper.product.Id, productWrapper.product.Id);
}
//Fetch Standard Price book entries of Selected product to later add in Quote Line Item
List<PriceBookEntry> priceBookEntries = [Select Id, Product2Id,Product2.CIPAC__c,
Product2.EC__c, Product2.OECD__c,Product2.OPPTS__c, UnitPrice, CurrencyIsoCode
from PriceBookEntry where Pricebook2.IsStandard = true
and Product2.isActive = true and Product2Id in :productIdMap.keySet()
and CurrencyIsoCode = :quotePackage.Quote__r.CurrencyISOCode];
//Create a Map of Product Id and PriceBookEntry Id for later use
if(priceBookEntries != null){
for(PriceBookEntry priceBookEntry : priceBookEntries ){
productIdPriceMap.put(priceBookEntry.Product2Id , priceBookEntry.UnitPrice);
productIdPriceBookEntryIdMap.put(priceBookEntry.Product2Id , priceBookEntry.Id);
}
}
}
quoteItemsList = new List<QuoteLineItem>();
for(ProductWrapper productWrapper : searchResultsWithWrapper){
//For Every product selected, create a Quote Line Item to show for Configuration
if(productWrapper.selected){
QuoteLineItem quoteLineItem = new QuoteLineItem();
quoteLineItem.Product2Id = productWrapper.product.Id;
quoteLineItem.Quote_Package__c = quotePackage.Id;
quoteLineItem.QuoteId = quotePackage.Quote__c;
quoteLineItem.Quantity = 1;
quoteLineItem.Description = productWrapper.product.Description;
quoteLineItem.UnitPrice = productIdPriceMap.get(productWrapper.product.Id);
quoteLineItem.PricebookEntryId = productIdPriceBookEntryIdMap.get(productWrapper.product.Id);
quoteLineItem.Product2 = productWrapper.product;
quoteItemsList.add(quoteLineItem);
}
}
PageReference pageRef = new PageReference('/apex/configureQuoteLineItems');
return pageRef;
}
public PageReference addItemsToPackage()
{
try
{
PriceBook2 standardPriceBook = [Select Id from PriceBook2 where IsStandard = true];
Quote quote = new Quote(Id=quoteItemsList[0].QuoteId);
quote.Pricebook2Id = standardPriceBook.Id;
update quote;
//insert configured Quote line items, so that they appear against Quote Package as well as Quote
insert quoteItemsList;
return new PageReference('/'+quoteItemsList[0].Quote_Package__c);
}catch(DMLException e){
ApexPages.addMessages(e);
return null;
}
}
public PageReference cancel()
{
return new PageReference('/'+quotePackage.Id);
}
public PageReference backToSelectProducts()
{
return new PageReference('/apex/selectProductsPage?id='+quotePackage.Id);
}
public class ProductWrapper{
public Product2 product{get;set;}
public boolean selected{get;set;}
public ProductWrapper(Product2 p){
product= p;
selected = false;
}
}
}
Please Suggest me best covarage logic for this
This is my class
public with sharing class CreateQuoteController {
public List<Product2> packageProductsList = new List<Product2>();
public List<ProductWrapper> searchResultsWithWrapper {get;set;}
public List<QuoteLineItem> quoteItemsList {get;set;}
public Quote_Package__c quotePackage {get;set;}
public CreateQuoteController (){
//Get record id of Quote Package
ID quotePackageId = ApexPages.currentPage().getParameters().get('id');
//Read Package Details based on Record ID
quotePackage = [Select Id, Name, Package__c, Physchem_Subpackage__c, Quote__c, Quote__r.CurrencyISOCode from Quote_Package__c where Id =:quotePackageId ];
//Fetch All Products matching with Package
packageProductsList = [Select Id, Name, ProductCode, Description, Package__c, Physchem_Subpackage__c , CIPAC__c,
EC__c, OECD__c, OPPTS__c from Product2 where isActive = true and Package__c = :quotePackage.Package__c ];
if(packageProductsList != null){
//A list of ProductWrapper class that wraps Product2 class to enable checkbox selection
searchResultsWithWrapper = new List<ProductWrapper>();
if(quotePackage.Physchem_Subpackage__c != null && quotePackage.Physchem_Subpackage__c != ''){
//Add only those products in Search Result where Product Physchem subpackage matches with that selected in Quote Package
for(Product2 product:packageProductsList ){
String productPhysChemSubpackage = product.Physchem_Subpackage__c;
if(productPhysChemSubpackage != null && productPhysChemSubpackage != '' && productPhysChemSubpackage.contains(quotePackage.Physchem_Subpackage__c)){
searchResultsWithWrapper.add(new ProductWrapper(product));
}
}
}else{
//Add All products in Search Result
for(Product2 product:packageProductsList ){
searchResultsWithWrapper.add(new ProductWrapper(product));
}
}
}
}
public PageReference proceedToConfigure()
{
Map<String, String> productIdMap = new Map<String, String>();
Map<String, Decimal> productIdPriceMap = new Map<String, Decimal>();
Map<String, String> productIdPriceBookEntryIdMap = new Map<String, String>();
for(ProductWrapper productWrapper : searchResultsWithWrapper){
if(productWrapper.selected){
productIdMap.put(productWrapper.product.Id, productWrapper.product.Id);
}
//Fetch Standard Price book entries of Selected product to later add in Quote Line Item
List<PriceBookEntry> priceBookEntries = [Select Id, Product2Id,Product2.CIPAC__c,
Product2.EC__c, Product2.OECD__c,Product2.OPPTS__c, UnitPrice, CurrencyIsoCode
from PriceBookEntry where Pricebook2.IsStandard = true
and Product2.isActive = true and Product2Id in :productIdMap.keySet()
and CurrencyIsoCode = :quotePackage.Quote__r.CurrencyISOCode];
//Create a Map of Product Id and PriceBookEntry Id for later use
if(priceBookEntries != null){
for(PriceBookEntry priceBookEntry : priceBookEntries ){
productIdPriceMap.put(priceBookEntry.Product2Id , priceBookEntry.UnitPrice);
productIdPriceBookEntryIdMap.put(priceBookEntry.Product2Id , priceBookEntry.Id);
}
}
}
quoteItemsList = new List<QuoteLineItem>();
for(ProductWrapper productWrapper : searchResultsWithWrapper){
//For Every product selected, create a Quote Line Item to show for Configuration
if(productWrapper.selected){
QuoteLineItem quoteLineItem = new QuoteLineItem();
quoteLineItem.Product2Id = productWrapper.product.Id;
quoteLineItem.Quote_Package__c = quotePackage.Id;
quoteLineItem.QuoteId = quotePackage.Quote__c;
quoteLineItem.Quantity = 1;
quoteLineItem.Description = productWrapper.product.Description;
quoteLineItem.UnitPrice = productIdPriceMap.get(productWrapper.product.Id);
quoteLineItem.PricebookEntryId = productIdPriceBookEntryIdMap.get(productWrapper.product.Id);
quoteLineItem.Product2 = productWrapper.product;
quoteItemsList.add(quoteLineItem);
}
}
PageReference pageRef = new PageReference('/apex/configureQuoteLineItems');
return pageRef;
}
public PageReference addItemsToPackage()
{
try
{
PriceBook2 standardPriceBook = [Select Id from PriceBook2 where IsStandard = true];
Quote quote = new Quote(Id=quoteItemsList[0].QuoteId);
quote.Pricebook2Id = standardPriceBook.Id;
update quote;
//insert configured Quote line items, so that they appear against Quote Package as well as Quote
insert quoteItemsList;
return new PageReference('/'+quoteItemsList[0].Quote_Package__c);
}catch(DMLException e){
ApexPages.addMessages(e);
return null;
}
}
public PageReference cancel()
{
return new PageReference('/'+quotePackage.Id);
}
public PageReference backToSelectProducts()
{
return new PageReference('/apex/selectProductsPage?id='+quotePackage.Id);
}
public class ProductWrapper{
public Product2 product{get;set;}
public boolean selected{get;set;}
public ProductWrapper(Product2 p){
product= p;
selected = false;
}
}
}
Can you share with us what you have written so far? We would love to help edit & fix what you have.
public class CreateQuoteControllerTest {
@IsTest
private static void testmethod1(){
Quote_Package__c qp1 = new Quote_Package__c();
qp1.Id = ApexPages.currentPage().getParameters().get('id');
qp1.Name= qp1.Name;
qp1.Package__c=qp1.Package__c;
qp1.Package_Level_Discount__c=qp1.Package_Level_Discount__c;
qp1.Physchem_Subpackage__c= qp1.Physchem_Subpackage__c;
qp1.Quote__c=qp1.Quote__c;
qp1.SBU__c=qp1.SBU__c;
qp1.Total_Price__c=qp1.Total_Price__c;
qp1.Display_Price_As__c=qp1.Display_Price_As__c;
insert qp1;
Package__c pk =new Package__c();
pk.Id=pk.Id;
pk.Name=qp1.Package__c;
pk.CurrencyIsoCode=pk.CurrencyIsoCode;
insert pk;
SBU__c sbu = new SBU__c();
sbu.Id=sbu.Id;
insert sbu;
Opportunity opp = new Opportunity();
opp.Id= opp.id;
opp.Name= 'Test';
opp.CloseDate=system.today();
opp.StageName='Open';
insert opp;
Quote q = new Quote();
q.Id=opp.Quote_Number__c;
q.Pricebook2Id= q.Pricebook2Id;
q.Name='Test';
q.OpportunityId=opp.Id;
q.Contracting_SBU__c= sbu.Id;
insert q;
Pricebook2 pb = new Pricebook2();
pb.Id=pb.Id;
insert pb;
PricebookEntry pbe = new PricebookEntry();
pbe.UseStandardPrice = false;
pbe.ProductCode=p2.ProductCode;
pbe.Id= pbe.Id;
pbe.Product2Id=product.id;
pbe.IsActive=true;
pbe.UnitPrice=99;
insert pbe;
Product2 p2 = new Product2();
p2.Id=p2.Id;
p2.Name='TestName';
p2.Package__c= pk.Id;
p2.CurrencyIsoCode= p2.CurrencyIsoCode;
insert p2;
QuoteLineItem ql = new QuoteLineItem();
ql.Id=ql.Id;
ql.QuoteId= q.Id;
ql.PricebookEntryId=pbe.Id;
ql.Product2Id=p2.Id;
ql.Quantity= 3.0;
ql.UnitPrice=56.0;
insert ql;
CreateQuoteController cqc = new CreateQuoteController();
PageReference pageRef = cqc.addItemsToPackage();
PageReference pageRef1 = cqc.backToSelectProducts();
PageReference pageRef2 = cqc.cancel();
//Test.setCurrentPage(pageRef);
}
}
new code is ....
@IsTest
public class CreateQuoteControllerTest {
@IsTest
private static void testmethod1(){
Quote_Package__c qp = new Quote_Package__c(Name='Acute 6 pack',Package__c='a004B000000xLrVQAU',Physchem_Subpackage__c='MICRO EMULSION (ME)',Quote__c='0Q04B00000000u1SAA');
insert qp;
Quote_Package__c qpid = [SELECT Id from Quote_Package__c where Package__c='a004B000000xLrVQAU'];
Product2 p2 = new Product2(Name='ORAL TOXICITY - RAT',ProductCode='401',CurrencyIsoCode ='USD',Package__c='a004B000000xLrVQAU');
insert p2;
Product2 p2id = [SELECT Id from Product2 where Package__c='a004B000000xLrVQAU'];
List<Product2> lp2 = [select Id,Name,ProductCode,Physchem_Subpackage__c from Product2];
PriceBook2 pb2 = new PriceBook2();
pb2.Name= 'TestName';
insert pb2;
QuoteLineItem qli = new QuoteLineItem(QuoteId='0Q04B00000000s0SAA',PricebookEntryId='01u4B000000UI5nQAG',Quantity=1,UnitPrice=831,Product2Id =p2id.Id);
insert qli;
PageReference pageReference = Page.configureQuoteLineItems;
Test.setCurrentPage(pageReference);
ApexPages.currentPage().getParameters().put('id',qp.Id);
ApexPages.currentPage().getParameters().put('id',qpid.Id);
CreateQuoteController cqc = new CreateQuoteController();
cqc.quotePackage=qp;
cqc.backToSelectProducts();
cqc.proceedToConfigure();
cqc.cancel();
cqc.packageProductsList=lp2;
}
}