You need to sign in to do that
Don't have an account?
bouscal
Not enough coverage testing controller extension
Here's my code, page, extension & test. No coverage for the entire list of attachments.
Extension:
Test:
Any direction is appreciated!
Extension:
public class CaseListController { private final Case cas; private String sortOrder = 'CreatedDate'; public Case cCas; public Case pCas; public Id theParent; public CaseListController(ApexPages.StandardController stdController) { this.cas = (Case)stdController.getRecord(); cCas=[SELECT id, parentid, casenumber FROM case WHERE id=:cas.id]; pCas=[SELECT id FROM case WHERE id=:cCas.ParentId]; theParent=pCas.id; System.debug('The Parent Record is: ' + theParent); } public List<Attachment> getAttachments() { List<Attachment> results; If(theParent != null){ results = Database.query( 'SELECT Id, parentid, parent.name, name, CreatedDate, ContentType, ownerid ' + 'FROM Attachment ' + ' WHERE parentid =:theParent ' + 'ORDER BY ' + sortOrder + ' DESC ' + 'LIMIT 10' ); } return results; } }Page:
<apex:page standardcontroller="Case" extensions="CaseListController" sidebar="false" showHeader="false" > <apex:form > <apex:pageBlock title="Parent Attachments" id="attachments_list"> <apex:pageBlockTable value="{! attachments }" var="at"> <apex:column headervalue="File"> <apex:outputLink value="/servlet/servlet.FileDownload?file={! at.id}" target="_blank">{! at.Name} </apex:outputLink> </apex:column> <apex:column value="{! at.contenttype }"/> <apex:column value="{! at.createddate }"/> <apex:column value="{! at.ownerid }"/> <apex:column value="{! at.parent.name }" headerValue="Case"/> </apex:pageBlockTable> </apex:pageBlock> </apex:form> </apex:page>
Test:
@isTest public class CaseListController_Test { public static testMethod void testMyController() { Account testAccount = new Account(); testAccount.Name='Test Account'; testAccount.Phone='(999) 999-9999'; Case ParentCase = new Case(); ParentCase.AccountId = testAccount.id; ParentCase.RecordTypeId='012L000000073y2'; ParentCase.Reason__c='Move User'; ParentCase.Subject = 'Test Parent Case'; ParentCase.Description = 'Test Parent Case'; insert ParentCase; Case ChildCase = new Case(); ChildCase.AccountId = testAccount.id; ChildCase.ParentId = ParentCase.id; ChildCase.RecordTypeId='012L000000073y2'; ChildCase.Reason__c='Move User'; ChildCase.Subject = 'Test Parent Case'; ChildCase.Description = 'Test Parent Case'; insert ChildCase; Attachment atch = new Attachment(); Blob bodyBlb=Blob.valueOf('test body'); atch.Name='test attachment'; atch.parentid=ParentCase.Id; atch.Body=bodyBlb; insert atch; Test.startTest(); PageReference pageRef = Page.ParentCaseAttachments; pageRef.getParameters().put('Id',ChildCase.Id); Test.setCurrentPage(pageRef); ApexPages.StandardController sc = new ApexPages.StandardController(ChildCase); CaseListController ext = new CaseListController(sc); Test.stopTest(); } }
Any direction is appreciated!
I found all below issue in your code
1) You need to insert Account record. testAccount
2) You need to call getAttachments(); method in test class.
3) Remove Hard Coded recordTypeId and you can try below code for same
ParentCase.RecordTypeId=Schema.SObjectType.Case.getRecordTypeInfosByName().get('NameOfRecordType').getRecordTypeId();
4) Add Assert in Test class as well
Try below code
Let us know if this will help you
All Answers
I found all below issue in your code
1) You need to insert Account record. testAccount
2) You need to call getAttachments(); method in test class.
3) Remove Hard Coded recordTypeId and you can try below code for same
ParentCase.RecordTypeId=Schema.SObjectType.Case.getRecordTypeInfosByName().get('NameOfRecordType').getRecordTypeId();
4) Add Assert in Test class as well
Try below code
Let us know if this will help you
Amit, inserting the account was certainly the first issue. I'll chalk that up to lack of experience.
I'm not done with it yet but that's put me on the right path, thank you! Now to handle an empty list.