We have a functionality in our managed package which is dependent on Knowledge__kav
.
So we have an object Test
which has a lookup on Knowledge
object. And a custom permission CS1
which is given to user to access Test
Now, as we cannot add any dependency to knowledge in our managed package, because it fails packaging and deployment (bug or a miss from salesforce end), we have removed lookup from Test
and removed CS1
from our package and created an unmanaged package, which does adds the lookup to Test
and also adds the CS1
.
The functionality related to Knowledge
only works after the unmanaged package has been installed.
ISSUE: How do we write test class for this in our managed package. We have used SObject
approach to determine whether Test
as a lookup as Knowledge
, if not we don't proceed and show an error message, but if has we have a lot of apex code. This needs to be covered with Unit Test. How do we cover this from managed package, also how to write a permission based test, when the PS is part of unmanaged package.
Code Snippet for Apex logic:
public static SObjectField getSObjectField(String sObjectName, String fieldName) {
SObjectType sObjectType = getSObjectType(sObjectName);
if (!sObjectFieldsByObjectNames.containsKey(sObjectName)) {
sObjectFieldsByObjectNames.put(
sObjectName,
sObjectType.getDescribe().fields.getMap()
);
}
return sObjectFieldsByObjectNames.get(sObjectName).get(fieldName);
}
SObjectField knowledgeOnTest = SObjectService.getSObjectField('Test__c', 'Knowledge__c');
if (knowledgeOnTest != null) {
// run logic
}
1GP Managed Packages
.