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
Jonathan Wolff 7Jonathan Wolff 7 

Very urgent: Working test class for ContentDocument Trigger

Hello, I build a trigger, but nobody could help me with the test class. I have a picklist called Dokumentenklasse that is on Content Version. In this picklist there are 3 values ('Geschäftsbrief', 'Vertragsdokument' and 'Wichtige Dokumentation oder Entscheidung') when these values are selected the file can't be deleted.

Please help me with the code of the testclass and try it out too. I had 0% with the last classes I used. The trigger code:


trigger DokumentenklasseDelete on ContentDocument (before delete) {       
    map<id,ContentDocument> documentMap = new map<id,ContentDocument>([SELECT id,(SELECT Id,FileType,Dokumentenklasse__c from ContentVersions) from ContentDocument where id IN :trigger.old]);          

  for(ContentDocument con : Trigger.old){          

  List<ContentVersion> versionList = documentMap.get(con.Id).ContentVersions;         

if (versionList.size() > 0) {        

for (contentVersion cv : versionList) {                   

if(cv.Dokumentenklasse__c =='Geschäftsbrief' || cv.Dokumentenklasse__c == 'Vertragsdokument' || cv.Dokumentenklasse__c == 'Wichtige Dokumentation oder Entscheidung' ) {                         
    con.adderror('ERROR: Dokumente der Dokumentenklassen "Geschäftsbrief", "Vertragsdokument", "Wichtige Dokumentation oder Entscheidung" dürfen aus rechtlichen Gründen vor Ablauf der Aufbewahrungsfrist nicht gelöscht werden.');                    

 }              

    }            

 }                    

  } }
Best Answer chosen by Jonathan Wolff 7
Maharajan CMaharajan C
Hi Jonathan,

Please try the below test class:
 
@isTest
public class DokumentenklasseDeleteTest {
    @isTest static void testDokumentenklasseDelete(){
        ContentVersion cv = new ContentVersion();
        cv.Title = 'Test Document';
        cv.PathOnClient = 'TestDocument.snote';
        cv.VersionData = Blob.valueOf('Test Content');
        cv.IsMajorVersion = true;
        cv.Dokumentenklasse__c = 'Vertragsdokument';
        Insert cv;
        
        List<ContentDocument> cdList = [SELECT Id, Title, LatestPublishedVersionId FROM ContentDocument];
        System.assertEquals(cdList.size(), 1);
        
        Test.startTest();
        Database.DeleteResult[] result = Database.delete(cdList, false);
        Test.stopTest();
    }
}

Thanks,
Maharajan.C