function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
swathiswathi 

Test coverage for the custom knowledgearticle template class

public class articletemplatectrl
{

public string descp{get;set;}
public boolean errormsg{Get;set;}
public boolean displayfeedback{Get;set;}
public boolean displayclose{get;set;}
public string val{get;set;}
public string faqname{Get;set;}
public string errorname{Get;set;}
public string howtoname{Get;set;}
public string formname{get;set;}
public id aid;
public KnowledgeArticleVersion kv1{get;set;}
public articletemplatectrl (ApexPages.KnowledgeArticleVersionStandardController controller)
{
aid=controller.getId();
for(KnowledgeArticleVersion kv:[select id,KnowledgeArticleId,title,articletype,ArticleNumber from KnowledgeArticleVersion where KnowledgeArticleId=:aid and PublishStatus = 'online' and Language = 'en_US' limit 1])
kv1=kv;
if(kv1.articletype=='FAQ__kav')
{
FAQ__kav fk=[select id,Attachment__Name__s,ArticleNumber from FAQ__kav where PublishStatus ='online' and Language = 'en_US' and ArticleNumber=:kv1.articlenumber limit 1];
faqname=fk.Attachment__Name__s;
}

if(kv1.articletype=='Error__kav')
{
Error__kav ek=[select id,Attachment__Name__s,ArticleNumber from Error__kav where PublishStatus ='online' and Language = 'en_US' and ArticleNumber=:kv1.articlenumber limit 1];
errorname=ek.Attachment__Name__s;
}
if(kv1.articletype=='How_To__kav')
{
How_To__kav hk=[select id,Attachment__Name__s,ArticleNumber from How_To__kav where PublishStatus ='online' and Language = 'en_US' and ArticleNumber=:kv1.articlenumber limit 1];
howtoname=hk.Attachment__Name__s;
}
if(kv1.articletype=='Forms__kav')
{
Forms__kav hk=[select id,Attachment__Name__s,ArticleNumber from Forms__kav where PublishStatus ='online' and Language = 'en_US' and ArticleNumber=:kv1.articlenumber limit 1];
formname=hk.Attachment__Name__s;
}
}


public id getaid()
{
return aid;
}
public void feedback()
{
descp='';
displayfeedback=true;

}
public pagereference back()
{
//displayclose=false;
pagereference p= new pagereference('/apex/vfsearch');
return p;
}
public void submit()
{
displayfeedback=false;
displayclose=true;
recordtype r=[select id,name,sobjecttype from recordtype where name=:'Knowledge Articles Feedback' and sobjecttype=:'Article_Feedback__c' limit 1];
try{
if(val!=null || descp!=''){
Article_Feedback__c afeed= new Article_Feedback__c();
afeed.recordtypeid=r.id;
afeed.Comment__c=descp;
afeed.Article_Name__c=kv1.title;
afeed.Was_this_information_is_helpful__c=val;
insert afeed;}
}
Catch(Exception e){}
}

}

 

Test coverage:

 

@isTest
private class articletemplatectrlTestClass {
static testMethod void articletemplatemethod(){
Recordtype r= [select id,name,sobjecttype from recordtype where name=:'Internal' and sobjecttype=:'Contact' limit 1];
account a=new account(name='test');
insert a;
contact c= new contact(accountid=a.id,lastname='abc',email='abc@deloitte.com',recordtypeid=r.id);
insert c;
FAQ__kav f= new FAQ__kav(title='test',UrlName='abc');
insert f;
ApexPages.KnowledgeArticleVersionStandardController cc= new ApexPages.KnowledgeArticleVersionStandardController (f);
articletemplatectrl atc= new articletemplatectrl (cc); // getting error at this point
atc.aid=f.id;
for(KnowledgeArticleVersion kv:[select id,KnowledgeArticleId,title,articletype,ArticleNumber from KnowledgeArticleVersion where KnowledgeArticleId=:f.id and PublishStatus = 'online' and Language = 'en_US' limit 1])
if(kv.articletype=='FAQ__kav')
atc.faqname='test';
atc.getaid();
atc.feedback();
atc.back();
atc.submit();
}
}

Can anyone help me in writting the testcoverage for this class. I am getting attempt de- reference null object error. I tried in different ways but I am not able to resolve it. Please help me out.

kranjankranjan
Hi Swathi,

I think you have not created a KnowledgeArticleVersion record in test coverage and in the constructor you are retrieving the same and then using its fields. These must be causing the null error. You should create a KnowledgeArticleVersion record as required in your class constructor and then you should be able to get rid of this error.

Regards