You need to sign in to do that
Don't have an account?
syed akram
Help in writing Test class for particular method
here is the Controller code
public without sharing class UpdateList {
list<order> selectorder;
String quoteId {set; get;}
String selectedOrderId {set; get;}
public List<Order> selectedOrders {set; get;}
public Boolean orderUpdated {set; get;}
public UpdateList(){
quoteId = ApexPages.currentPage().getParameters().get('quoteID');
orderUpdated = false;
}
public PageReference selectOrder(){
selectedOrderId = ApexPages.currentPage().getParameters().get('ordersRadio');
selectedOrders = [select Id, OrderNumber, Status from Order where id=:selectedOrderId];
return null;
}
public list<Order> getorderslist()
{
List<order> allords=[select Id,Ordernumber,Status from Order where quoteId=:quoteId];
return allords;
}
//call this method to update order, and copy all quote line items from quote
public PageReference updateOrder(){
//get selected orderId from the list
selectedOrderId = ApexPages.currentPage().getParameters().get('ordersRadio');
//get quote line items using the quoteId
List<OrderItem> orderLines = new List<OrderItem>();
for(QuoteLineItem qLine : [SELECT Id, QuoteId, PricebookEntryId, Quantity, UnitPrice, Discount, Description, ServiceDate,
Product2Id, SortOrder, ListPrice, Subtotal, TotalPrice FROM QuoteLineItem where QuoteId=:quoteId]){
OrderItem oLine = new OrderItem();
oLine.OrderId = selectedOrderId;
oLine.PricebookEntryId = qLine.PricebookEntryId;
oLine.Quantity = qLine.Quantity;
oLine.UnitPrice = qLine.UnitPrice;
oLine.Description = qLine.Description;
oLine.ServiceDate = qLine.ServiceDate;
orderLines.add(oLine);
}
insert orderLines;
orderUpdated = true;
ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.CONFIRM,'Record updated Successfully.Thank you!'));
return null;
}
}
here is the test class i have written till now i have written for one method and getting 25% code coverage
@istest
private class TestUpdateList{
Private static Account a;
Private static Contact c;
Private static Opportunity opp;
Private static Quote q;
private static Order o;
Static {
// Creating the data for Account,Contact,Opportunity,Quote and Order.
a=new Account(Name='test1',Phone='9458383336'); // creating account with only mandatory Fields
insert a;
c = new Contact(LastName='Test',AccountId=a.Id); // creating contact with only mandatory Fields
insert c;
// creating opportunity with only mandatory Fields
opp = new Opportunity(Name='Test Opp',AccountId=a.Id,StageName='closedwon',CloseDate=Date.Today());
insert opp;
// Creating Quote with only mandatory Fields
q=new Quote(Name='testquote',opportunityId=opp.Id);
insert q;
o=new Order(AccountId=a.Id,Name='test',status='draft',EffectiveDate=system.today());
insert o;
}
// retreiving the order record and working fine 25% code coverage with this method.
Static TestMethod void Testgetorderslist(){
Test.StartTest();
PageReference pageRef=page.PrevOrder;
Test.SetCurrentPageReference(pageRef);
system.currentPageReference().getParameters().put('Id', o.id);
string ol = system.currentPageReference().getParameters().get('Id');
system.debug('o.Id = '+ ol);
UpdateList ul=new UpdateList();
List<order> orderList = ul.getorderslist();
system.debug('test result ='+ orderList);
system.assertEquals(orderList.size(),1);
Test.StopTest();
}
//
Static TestMethod void TestselectOrder(){
PageReference pageRef=page.PrevOrder;
Test.SetCurrentPageReference(pageRef);
Test.StartTest();
// ApexPages.StandardController sc = new ApexPages.standardController(o);
// UpdateList controller=new UpdateList(sc);
// controller.SelectOrder();
}
Static TestMethod void TestUpdateOrder(){
}
}
Please help me to write the test for TestSelectOrder() ?
public without sharing class UpdateList {
list<order> selectorder;
String quoteId {set; get;}
String selectedOrderId {set; get;}
public List<Order> selectedOrders {set; get;}
public Boolean orderUpdated {set; get;}
public UpdateList(){
quoteId = ApexPages.currentPage().getParameters().get('quoteID');
orderUpdated = false;
}
public PageReference selectOrder(){
selectedOrderId = ApexPages.currentPage().getParameters().get('ordersRadio');
selectedOrders = [select Id, OrderNumber, Status from Order where id=:selectedOrderId];
return null;
}
public list<Order> getorderslist()
{
List<order> allords=[select Id,Ordernumber,Status from Order where quoteId=:quoteId];
return allords;
}
//call this method to update order, and copy all quote line items from quote
public PageReference updateOrder(){
//get selected orderId from the list
selectedOrderId = ApexPages.currentPage().getParameters().get('ordersRadio');
//get quote line items using the quoteId
List<OrderItem> orderLines = new List<OrderItem>();
for(QuoteLineItem qLine : [SELECT Id, QuoteId, PricebookEntryId, Quantity, UnitPrice, Discount, Description, ServiceDate,
Product2Id, SortOrder, ListPrice, Subtotal, TotalPrice FROM QuoteLineItem where QuoteId=:quoteId]){
OrderItem oLine = new OrderItem();
oLine.OrderId = selectedOrderId;
oLine.PricebookEntryId = qLine.PricebookEntryId;
oLine.Quantity = qLine.Quantity;
oLine.UnitPrice = qLine.UnitPrice;
oLine.Description = qLine.Description;
oLine.ServiceDate = qLine.ServiceDate;
orderLines.add(oLine);
}
insert orderLines;
orderUpdated = true;
ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.CONFIRM,'Record updated Successfully.Thank you!'));
return null;
}
}
here is the test class i have written till now i have written for one method and getting 25% code coverage
@istest
private class TestUpdateList{
Private static Account a;
Private static Contact c;
Private static Opportunity opp;
Private static Quote q;
private static Order o;
Static {
// Creating the data for Account,Contact,Opportunity,Quote and Order.
a=new Account(Name='test1',Phone='9458383336'); // creating account with only mandatory Fields
insert a;
c = new Contact(LastName='Test',AccountId=a.Id); // creating contact with only mandatory Fields
insert c;
// creating opportunity with only mandatory Fields
opp = new Opportunity(Name='Test Opp',AccountId=a.Id,StageName='closedwon',CloseDate=Date.Today());
insert opp;
// Creating Quote with only mandatory Fields
q=new Quote(Name='testquote',opportunityId=opp.Id);
insert q;
o=new Order(AccountId=a.Id,Name='test',status='draft',EffectiveDate=system.today());
insert o;
}
// retreiving the order record and working fine 25% code coverage with this method.
Static TestMethod void Testgetorderslist(){
Test.StartTest();
PageReference pageRef=page.PrevOrder;
Test.SetCurrentPageReference(pageRef);
system.currentPageReference().getParameters().put('Id', o.id);
string ol = system.currentPageReference().getParameters().get('Id');
system.debug('o.Id = '+ ol);
UpdateList ul=new UpdateList();
List<order> orderList = ul.getorderslist();
system.debug('test result ='+ orderList);
system.assertEquals(orderList.size(),1);
Test.StopTest();
}
//
Static TestMethod void TestselectOrder(){
PageReference pageRef=page.PrevOrder;
Test.SetCurrentPageReference(pageRef);
Test.StartTest();
// ApexPages.StandardController sc = new ApexPages.standardController(o);
// UpdateList controller=new UpdateList(sc);
// controller.SelectOrder();
}
Static TestMethod void TestUpdateOrder(){
}
}
Please help me to write the test for TestSelectOrder() ?
instead of get i need to write put its working
ApexPages.currentPage().getParameters().put('ordersRadio',o.Id);
All Answers
try to replace
system.currentPageReference().getParameters().put('Id', o.id); with below
ApexPages.currentPage().getParameters().get('ordersRadio',o.Id);
let me know if it helps.
Thanks
Manoj
Error: Compile Error: Method does not exist or incorrect signature: [Map<String,String>].get(String, Id) at line 47 column 45
instead of get i need to write put its working
ApexPages.currentPage().getParameters().put('ordersRadio',o.Id);
private class TestUpdateList{
Private static Account a;
Private static Contact c;
Private static Opportunity opp;
Private static Quote q;
Private static QuoteLineItem Qli;
private static Order o;
Static {
// Creating the data for Account,Contact,Opportunity,Quote and Order.
a=new Account(Name='test1',Phone='9458383336'); // creating account with only mandatory Fields
insert a;
c = new Contact(LastName='Test',AccountId=a.Id); // creating contact with only mandatory Fields
insert c;
// creating opportunity with only mandatory Fields
opp = new Opportunity(Name='Test Opp',AccountId=a.Id,StageName='closedwon',CloseDate=Date.Today());
insert opp;
// Creating Quote with only mandatory Fields
q=new Quote(Name='testquote',opportunityId=opp.Id);
insert q;
// Creating Quote Line Items
qli=new QuoteLineItem(QuoteId=q.Id,Quantity=12,UnitPrice=1500,Discount=0,Description='nothing',ServiceDate=system.today());
insert qli;
// Creating Order with mandatory Fields
o=new Order(AccountId=a.Id,Name='test',status='draft',EffectiveDate=system.today());
insert o;
}
// retreiving the order record and working fine 25% code coverage with this method.
Static TestMethod void Testgetorderslist(){
Test.StartTest();
PageReference pageRef=page.PrevOrder;
Test.SetCurrentPageReference(pageRef);
system.currentPageReference().getParameters().put('Id', o.id);
string ol = system.currentPageReference().getParameters().get('Id');
system.debug('o.Id = '+ ol);
UpdateList ul=new UpdateList();
List<order> orderList = ul.getorderslist();
system.debug('test result ='+ orderList);
system.assertEquals(orderList.size(),1);
Test.StopTest();
}
//after this method i am getting 46% code
Static TestMethod void TestselectOrder(){
Test.StartTest();
PageReference pageRef=page.PrevOrder;
Test.SetCurrentPageReference(pageRef);
ApexPages.currentPage().getParameters().put('ordersRadio',o.Id);
ApexPages.StandardController sc = new ApexPages.standardController(o);
UpdateList controller=new UpdateList();
controller.SelectOrder();
controller.UpdateOrder();
Test.StopTest();
}
//Static TestMethod void TestUpdateOrder(){
//Test.StartTest();
//PageReference pageRef=page.PrevOrder;
// Test.SetCurrentPageReference(pageRef);
//}
}
can you please help me in this // Creating Quote Line Items
qli=new QuoteLineItem(QuoteId=q.Id,Quantity=12,UnitPrice=1500,Discount=0,Description='nothing',ServiceDate=system.today());
insert qli;
i need the remaining field with some dummy value like listprice,subtotal,totalprice.
if i am writing i am getting error as writable field