You need to sign in to do that
Don't have an account?
SIVA KUMAR 507
How to write test class for below code ? please help me
Hi team,
Apex Class:
----------------
public class AskEDD_ArticleAction {
@InvocableMethod
public static List<FlowOutputs> updateArticleTypeForDataCategories(List<FlowInputs> articleType)
{
List<Knowledge__kav> lstArticleType = [SELECT Id, Title, AskEDD_Category__c FROM Knowledge__kav WHERE Id =:articleType[0].recordId AND (PublishStatus = 'draft' OR Approval_Status__c = 'Pending Approval')];
List<Knowledge__DataCategorySelection> lstDC = [SELECT ParentId, DataCategoryName FROM Knowledge__DataCategorySelection
WHERE ParentId =:articleType[0].recordId];
List<FlowOutputs> outputlist = new List<FlowOutputs>();
FlowOutputs output = new FlowOutputs();
Map<Id, String> datacategoryNameMap = new Map<Id, String>();
for(Knowledge__DataCategorySelection dcObj:lstDC)
{
if(datacategoryNameMap.containsKey(dcObj.ParentId))
{
String str = datacategoryNameMap.get(dcObj.ParentId);
datacategoryNameMap.put(dcObj.ParentId, str + ',' + dcObj.DataCategoryName);
}
else
{
datacategoryNameMap.put(dcObj.ParentId, dcObj.DataCategoryName);
}
}
for(Knowledge__kav artObj:lstArticleType)
{
if(datacategoryNameMap.containsKey(artObj.Id))
{
artObj.AskEDD_Category__c = datacategoryNameMap.get(artObj.Id);
if (String.isEmpty(artObj.AskEDD_Category__c)){
output.noCategory = true;
outputlist.add(output);
return outputlist;
}
else {
output.noCategory = false;
outputlist.add(output);
}
// output.categoryString = artObj.AskEDD_Category__c;
}
}
// update lstArticleType;
return outputlist;
}
public class FlowInputs {
@InvocableVariable
public string recordId;
}
public class FlowOutputs {
@InvocableVariable
public boolean noCategory;
}
}
Apex Class:
----------------
public class AskEDD_ArticleAction {
@InvocableMethod
public static List<FlowOutputs> updateArticleTypeForDataCategories(List<FlowInputs> articleType)
{
List<Knowledge__kav> lstArticleType = [SELECT Id, Title, AskEDD_Category__c FROM Knowledge__kav WHERE Id =:articleType[0].recordId AND (PublishStatus = 'draft' OR Approval_Status__c = 'Pending Approval')];
List<Knowledge__DataCategorySelection> lstDC = [SELECT ParentId, DataCategoryName FROM Knowledge__DataCategorySelection
WHERE ParentId =:articleType[0].recordId];
List<FlowOutputs> outputlist = new List<FlowOutputs>();
FlowOutputs output = new FlowOutputs();
Map<Id, String> datacategoryNameMap = new Map<Id, String>();
for(Knowledge__DataCategorySelection dcObj:lstDC)
{
if(datacategoryNameMap.containsKey(dcObj.ParentId))
{
String str = datacategoryNameMap.get(dcObj.ParentId);
datacategoryNameMap.put(dcObj.ParentId, str + ',' + dcObj.DataCategoryName);
}
else
{
datacategoryNameMap.put(dcObj.ParentId, dcObj.DataCategoryName);
}
}
for(Knowledge__kav artObj:lstArticleType)
{
if(datacategoryNameMap.containsKey(artObj.Id))
{
artObj.AskEDD_Category__c = datacategoryNameMap.get(artObj.Id);
if (String.isEmpty(artObj.AskEDD_Category__c)){
output.noCategory = true;
outputlist.add(output);
return outputlist;
}
else {
output.noCategory = false;
outputlist.add(output);
}
// output.categoryString = artObj.AskEDD_Category__c;
}
}
// update lstArticleType;
return outputlist;
}
public class FlowInputs {
@InvocableVariable
public string recordId;
}
public class FlowOutputs {
@InvocableVariable
public boolean noCategory;
}
}
Check this test class:-
In case you find any other issue please mention.
If you find your Solution then mark this as the best answer.
Thanks and Regards
Suraj Tripathi