You need to sign in to do that
Don't have an account?
Marcio Zima.ax1538
Test class for Dynamic Related List code
Hi,
I'm trying to code an Apex test class for a Dynamic Related List that add and delete rows in a table through visualforce.
The complete code I got here:
http://visualforcemadeeasy.blogspot.com.br/2009/03/how-to-add-and-delete-row-in-datatable.html
public class AccountsController { /* I set the Account and Case Objects here for use through out the code*/ public Account acct { get; private set;} public Case[] caseItems { get; private set; } private ApexPages.StandardController controller; // constructor, loads the Account and // any cases associated with it void caseItems(id id) { acct = [SELECT Id, Name, Type, AccountNumber, Site, (SELECT Id, CaseNumber, Status, Reason,Origin, Subject FROM Cases) FROM Account where id = :id limit 1]; //Hook caseItems to the query above caseItems = acct.Cases; } //Define the id id accountid; /* A List Method to delete the Cases assigned*/ public list todelete = new list(); public AccountsController (ApexPages.StandardController c) { /* this will kickoff you main page */ controller = c; /* to get this current Account Id*/ accountid = c.getRecord().id; /*kick off the init() function*/ init(); } public AccountsController () { accountid = ApexPages.CurrentPage().getParameters().get('id'); init(); } void init() { /* load up Cases basically we defined caseitems up on top, so when the page loads then caseItems(accountId) will go through the query and list out the Items assoicated with it */ caseItems(accountid); } public PageReference save() { try { upsert caseItems; if ( todelete.size() > 0 ) { delete todelete; } caseItems(acct.id); } catch ( DmlException exc) { ApexPages.addMessages(exc); return null; } return null; } /* your Delete functionality*/ public PageReference del() { string delnumber = ApexPages.CurrentPage().getParameters().get('delnumber'); system.assert( delnumber != null ); integer gone = -1; integer i = 0; for ( i=0; i< casenumber ="="" gone =" i;">= 0) { todelete.add(caseItems.remove(gone) ); } return null; } public PageReference add() { // insert a new line, after user clicks Add Case cs = new Case( AccountId = acct.id, Subject = 'hello', Status = 'Low', Reason = 'Other',Origin='Low' ); caseItems.add ( cs ); return null; } }
My test class coverage 71%. I'm using custom objects. When I include the function del() - DELETE, it returns the following exception: System.AssertException: Assertion Failed
LineItem__c item = new LineItem__c(ObjectId__c = ag.Id); insert item; ApexPages.StandardController QContracts_Line = new ApexPages.StandardController(item); AccountsController qe = new AccountsController(QContracts_Line); ApexPages.currentPage().getParameters().put('id', item.Id); qe.add(); qe.save(); qe.del();
Does anyone knows any way to resolve this?
Remove this line from ur code..it will work. Assert used in test methods.
public PageReference del() {
system.assert( delnumber != null );
All Answers
Remove this line from ur code..it will work. Assert used in test methods.
public PageReference del() {
system.assert( delnumber != null );
Thank you very much!! Until now code coverage in this class reached 95%.
Just 2 lines not covered:
public PageReference del() {
string delname = ApexPages.CurrentPage().getParameters().get('delname');
//system.assert( delname != null );
integer gone = -1;
integer i = 0;
for ( i=0; i< caseItems.size(); i++ ) {
if (caseItems[i].Name== delname) {
gone = i;
}
}
if ( gone >= 0) {
todelete.add(caseItems.remove(gone) );
}
return null;
}
Thanks and regards,
Subra.J
Trinay Technology Solutions