You need to sign in to do that
Don't have an account?
iyappan kandasamy 4
Triggers test classes
This is the original code for trigger
---------------------------------------------
updateQuoteLineItem = new List<QuoteLineItem>();
for (QuoteLineItem qli : MapQLI.values()) {
if(mapQuoteOppty.get(qli.Id) != null) {
String OppID = mapQuoteOppty.get(qli.Id);
OpportunityLineItem OLI = MapOLI.get(OppID);
qli.Event__c = OLI.Event__c;
qli.Opp_Line_Item_Id__c = OLI.Id;
qli.Opportunity_Line_Item_Name__c = OLI.Name;
qli.ServiceDate = OLI.ServiceDate;
qli.Onsite_Additional_Price__c = OLI.Onsite_Additional_Price__c;
qli.Tax__c = OLI.Tax__c;
qli.Tax_Rate__c = OLI.Tax_Rate__c;
qli.Promo_Code__c = OLI.Promo_Code__c;
updateQuoteLineItem.add(qli);
}
Need test class for the above code.
It is very urgent...Please do the needful....Thanks in advance
---------------------------------------------
updateQuoteLineItem = new List<QuoteLineItem>();
for (QuoteLineItem qli : MapQLI.values()) {
if(mapQuoteOppty.get(qli.Id) != null) {
String OppID = mapQuoteOppty.get(qli.Id);
OpportunityLineItem OLI = MapOLI.get(OppID);
qli.Event__c = OLI.Event__c;
qli.Opp_Line_Item_Id__c = OLI.Id;
qli.Opportunity_Line_Item_Name__c = OLI.Name;
qli.ServiceDate = OLI.ServiceDate;
qli.Onsite_Additional_Price__c = OLI.Onsite_Additional_Price__c;
qli.Tax__c = OLI.Tax__c;
qli.Tax_Rate__c = OLI.Tax_Rate__c;
qli.Promo_Code__c = OLI.Promo_Code__c;
updateQuoteLineItem.add(qli);
}
Need test class for the above code.
It is very urgent...Please do the needful....Thanks in advance
Please can you provide me the complete trigger, so that we can understand the functionality and can write a test class.
In the given trigger, what is MapQLI.values means. MapQLI is variable defined some where in the Trigger.
Thanks,
Naren
Below is the entire code....
trigger QuoteLineItemTrigger on QuoteLineItem (after insert, after update){
List<QuoteLineItem> newQlis = Trigger.new;
Map<Id, QuoteLineItem> oldQlis = Trigger.oldMap;
// Collecting reference Ids.
Set<Id> quoteIds = new Set<Id>();
Set<Id> oppIds = new Set<Id>();
Map<Id, Quote> parentQuotes;
if (Trigger.isInsert || Trigger.isUpdate) {
for (QuoteLineItem qli : newQlis) {
quoteIds.add(qli.QuoteId);
}
parentQuotes = new Map<Id, Quote>([SELECT Id FROM Quote WHERE Id IN: quoteIds]);
for (Quote quote : [SELECT Id, Name, OpportunityId, IsSyncing FROM Quote WHERE Id IN: quoteIds]) {
oppIds.add(quote.OpportunityId);
}
}
List<QuoteLineItem> updateQuoteLineItem;
if (Trigger.isInsert) {
String JSONContent = Json.Serialize(newQlis);
JSONParser parser = JSON.createParser(JSONContent);
System.debug('parser-------->'+parser );
List<String> OpptyLineId = new List<String>();
List<String> QuoteLineId = new List<String>();
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'OpportunityLineItemId') {
OpptyLineId.add(parser.getText());
}
if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'Id') {
QuoteLineId.add(parser.getText());
}
parser.nextToken();
if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'OpportunityLineItemId') {
OpptyLineId.add(parser.getText());
}
if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'Id') {
QuoteLineId.add(parser.getText());
}
}
System.debug('OpptyLineId-------->'+OpptyLineId);
System.debug('QuoteLineId-------->'+QuoteLineId);
Map<String, String> mapQuoteOppty = new Map<String, String>();
Integer iCount = 0;
for (String strOppLineId : OpptyLineId) {
String iQuoteLineId = QuoteLineId[iCount];
mapQuoteOppty.put(iQuoteLineId, strOppLineId);
iCount++;
}
Map<Id, OpportunityLineItem> MapOLI = new Map<Id, OpportunityLineItem>([
SELECT Id, Name, ServiceDate, Tax__c, Tax_Rate__c, Promo_Code__c, Onsite_Additional_Price__c, OpportunityId, Event__c
FROM OpportunityLineItem WHERE OpportunityId IN: oppIds
]);
Map<Id, QuoteLineItem> MapQLI = new Map<Id, QuoteLineItem>([
SELECT Id, ServiceDate, Event__c, Opp_Line_Item_Id__c, Opportunity_Line_Item_Name__c, Tax__c, Tax_Rate__c, Promo_Code__c, Onsite_Additional_Price__c
FROM QuoteLineItem WHERE QuoteId IN: quoteIds
]);
updateQuoteLineItem = new List<QuoteLineItem>();
for (QuoteLineItem qli : MapQLI.values()) {
if(mapQuoteOppty.get(qli.Id) != null) {
String OppID = mapQuoteOppty.get(qli.Id);
OpportunityLineItem OLI = MapOLI.get(OppID);
qli.Event__c = OLI.Event__c;
qli.Opp_Line_Item_Id__c = OLI.Id;
qli.Opportunity_Line_Item_Name__c = OLI.Name;
qli.ServiceDate = OLI.ServiceDate;
qli.Onsite_Additional_Price__c = OLI.Onsite_Additional_Price__c;
qli.Tax__c = OLI.Tax__c;
qli.Tax_Rate__c = OLI.Tax_Rate__c;
qli.Promo_Code__c = OLI.Promo_Code__c;
updateQuoteLineItem.add(qli);
}
}
try {
if (updateQuoteLineItem != null && !updateQuoteLineItem.isEmpty()) {
update updateQuoteLineItem;
}
} catch (Exception e) {
System.debug(e.getMessage());
}
}
Kindly do the needfull.
Thanks in advance....
use the below code. Below code covers 73%, you need to edit this to cover the lines which are not covered in red color.
@isTest(SeeAllData=true)
public class QuoteLineItemTriggerTest {
@isTest Static void docTest()
{
//get standard pricebook
Pricebook2 standardPb = [select id, name, isActive from Pricebook2 where IsStandard = true limit 1];
Pricebook2 pbk1 = new Pricebook2 (Name='Test Pricebook Entry 1',Description='Test Pricebook Entry 1', isActive=true);
insert pbk1;
Product2 prod = new Product2(Name='test1',Family='Liner', IsActive=true);
insert prod;
PricebookEntry pbe = new PricebookEntry (Product2Id=prod.id,Pricebook2ID=standardPb.id,UnitPrice=50, isActive=true);
insert pbe;
Opportunity opp = new Opportunity(Pricebook2Id = standardPb.id,Name='test Oppty',CloseDate=system.today(),CurrencyIsoCode='USD', StageName='Prospecting');
insert opp;
OpportunityLineItem OpptyLineItem = new OpportunityLineItem(Product2Id=prod.id,OpportunityId=opp.id,PriceBookEntryID=pbe.id,Quantity=4, UnitPrice =pbe.UnitPrice);
insert OpptyLineItem;
List<OpportunityLineItem> OpptyLineItem2 = [select id from OpportunityLineItem limit 1];
Id OpportunityLineItemId=OpptyLineItem2.get(0).Id;
Quote qt = new Quote(Name='test quote',OpportunityId=opp.id,Pricebook2Id = standardPb.id, ExpirationDate=system.today());
insert qt;
QuoteLineItem qliliner = new QuoteLineItem(Product2Id=prod.id,QuoteId=qt.id,PriceBookEntryID=pbe.id,Quantity=4, UnitPrice =pbe.UnitPrice);
insert qliliner;
qliliner.Quantity=10;
update qliliner;
System.debug('LineItemName'+qliliner.Product2Id);
}
}
Thanks,
Narendar
I am not sure, why you have this code.
at any time, parser.getCurrentName() is always gives the null values. Due to that, OpptyLineId is always null.
as OpptyLineId is null, it is not entering to other codes.
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'OpportunityLineItemId') {
OpptyLineId.add(parser.getText());
}
if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'Id') {
QuoteLineId.add(parser.getText());
}
parser.nextToken();
if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'OpportunityLineItemId') {
OpptyLineId.add(parser.getText());
}
if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'Id') {
QuoteLineId.add(parser.getText());
}
// while (parser.nextToken() != null) {
// if (parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'OpportunityLineItemId') {
// OpptyLineId.add(parser.getText());
// }
// if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'Id') {
// QuoteLineId.add(parser.getText());
// }
//parser.nextToken();
//if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'OpportunityLineItemId') {
// OpptyLineId.add(parser.getText());
//}
// if(parser.getCurrentToken() == JSONToken.VALUE_STRING && parser.getCurrentName() == 'Id') {
// QuoteLineId.add(parser.getText());
// }
// }
One more thing:
I didn't understand why you are using this code.
Map<String, String> mapQuoteOppty = new Map<String, String>();
Integer iCount = 0;
for (String strOppLineId : OpptyLineId) {
String iQuoteLineId = QuoteLineId[iCount];
mapQuoteOppty.put(iQuoteLineId, strOppLineId);
iCount++;
}
So please enhance the test class and can you provide us...
Its urgent please....Thanks in advance....
Thanks,
Naren
These are text fields or lookup fields or any other type?.
Thanks,
Naren
Any update please.
Thanks
I didn't have a time to look into this. Please check with others.