You need to sign in to do that
Don't have an account?
Apex test class for after update trigger
Hello gang,
I need your help to write a test class for my after update trigger.
trigger CPQQuotelinesupdate on Summit_CPQ__Quote__c (after update) {
Map < Id, Summit_CPQ__Quote__c > mapQuote = new Map < Id, Summit_CPQ__Quote__c >();
List < Summit_CPQ__Quote_Line__c > listQuoteLines = new List< Summit_CPQ__Quote_Line__c >();
for ( Summit_CPQ__Quote__c Quote : trigger.new ) {
if(trigger.oldMap.get( Quote.Id ).Summit_CPQ__SubTotal__c != Quote.Summit_CPQ__SubTotal__c || trigger.oldMap.get( Quote.Id ).Solid_Brick_Building_Construction__c != Quote.Solid_Brick_Building_Construction__c || trigger.oldMap.get( Quote.Id ).Travel_Surcharge__c != Quote.Travel_Surcharge__c || trigger.oldMap.get( Quote.Id ).Renovation_Area__c != Quote.Renovation_Area__c)
mapQuote.put( Quote.Id, Quote );
if ( mapQuote.size() > 0 ) {
listQuoteLines=[SELECT Summit_CPQ__Product_Code__c,Summit_CPQ__ListPrice__c,Summit_CPQ__Description__c,Summit_CPQ__Unit_Cost__c,Summit_CPQ__Cost_Total__c,Summit_CPQ__Quantity__c,Summit_CPQ__Hide_Line_Item__c, Summit_CPQ__Quote__c FROM Summit_CPQ__Quote_Line__c WHERE Summit_CPQ__Quote__c IN : mapQuote.keySet()];
for (Summit_CPQ__Quote_Line__c Quoteline : listQuoteLines) {
if ((Quoteline.Summit_CPQ__Product_Code__c.contains('SOLIDBRICKSURCHARGE')) && (Quote.Solid_Brick_Building_Construction__c == 'Solid brick')){
Quoteline.Summit_CPQ__Unit_Cost__c = 50;
Quoteline.Summit_CPQ__Hide_Line_Item__c = FALSE;
}
if ((Quoteline.Summit_CPQ__Product_Code__c.contains('SOLIDBRICKSURCHARGE')) && (Quote.Solid_Brick_Building_Construction__c != 'Solid brick')){
Quoteline.Summit_CPQ__Unit_Cost__c = 0;
Quoteline.Summit_CPQ__Hide_Line_Item__c = TRUE;
}
update listQuoteLines;
}
}
}
The below is what I've done
@isTest(seealldata=true)
public class CpqQuotelines_Test {
public TestMethod static void CPQQuote_Method()
{
Summit_CPQ__Quote__c Quote = New Summit_CPQ__Quote__c();
Quote.Name = 'Test';
Quote.Solid_Brick_Building_Construction__c = 'Solid brick';
Quote.Travel_Surcharge__c = 24;
Quote.Division__c = 'The Inside Project';
Quote.Renovation_Area__c = 'Ground Floor';
insert Quote;
Id pricebookId = Test.getStandardPricebookId();
//Create your product
Product2 p1 = new Product2(
Name = 'Product X',
ProductCode = 'SOLID',
isActive = true);
insert p1;
System.assert(p1.Id != null);
Product2 p2= new Product2(
name='TWIG 5',
IsActive=true,
ProductCode='CONTINGENCY');
insert p2;
System.assert(p2.Id != null);
List<Summit_CPQ__Quote_Line__c> QLList = new List<Summit_CPQ__Quote_Line__c>
{new Summit_CPQ__Quote_Line__c(Summit_CPQ__Level_Order__c = '1',Summit_CPQ__Hide_Line_Item__c = FALSE,Summit_CPQ__Description__c = 'Not required',
Summit_CPQ__Quote__c = Quote.id,Summit_CPQ__Quantity__c = 1,Summit_CPQ__Product__c =p1.Id,Summit_CPQ__Unit_Cost__c = 1.00)};
insert QLList;
Summit_CPQ__Quote_Line__c Q2 = New Summit_CPQ__Quote_Line__c();
Q2.Summit_CPQ__Level_Order__c = '1';
Q2.Summit_CPQ__Hide_Line_Item__c = TRUE;
Q2.Summit_CPQ__Description__c = 'required';
Q2.Summit_CPQ__Quote__c = Quote.id;
Q2.Summit_CPQ__Quantity__c = 1;
Q2.Summit_CPQ__Product__c =p2.Id;
Q2.Summit_CPQ__Unit_Cost__c = 100.00;
QLList.add(Q2);
Summit_CPQ__Quote_Line__c Q3 = New Summit_CPQ__Quote_Line__c();
Q3.Summit_CPQ__Level_Order__c = '1';
Q3.Summit_CPQ__Hide_Line_Item__c = TRUE;
Q3.Summit_CPQ__Description__c = 'required';
Q3.Summit_CPQ__Quote__c = Quote.id;
Q3.Summit_CPQ__Quantity__c = 1;
Q3.Summit_CPQ__Product__c =p2.Id;
Q3.Summit_CPQ__Unit_Cost__c = 100.00;
QLList.add(Q3);
List<Summit_CPQ__Quote_Line__c> QLLists = new List<Summit_CPQ__Quote_Line__c>{ [select id,Summit_CPQ__Product_Code__c,Summit_CPQ__ListPrice__c,Summit_CPQ__Description__c,Summit_CPQ__Unit_Cost__c,Summit_CPQ__Cost_Total__c,Summit_CPQ__Quantity__c,Summit_CPQ__Hide_Line_Item__c, Summit_CPQ__Quote__c from Summit_CPQ__Quote_Line__c where id in :QLList and Summit_CPQ__Quote__c = :Quote.Id]};
for(Summit_CPQ__Quote_Line__c QL1:QLLists){
If(QL1.Summit_CPQ__Product_Code__c == 'Solid'){
QL1.Summit_CPQ__Unit_Cost__c= 15;
}
}
update QLLists;
Quote.Division__c = 'Wedo';
update Quote;
}
}
Hi Sujay,
Please take reference from the below Code.
Summit_CPQ__Quote__c similar to Opportunity
Summit_CPQ__Quote_Line__c similar OpportunityLineItem
I hope it would help you
Thank You
Hi Suraj,
What should be the logic inside the test start and stop methods?