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
Hassan CASSIMHassan CASSIM 

I need help to write the test class of the following code that delete an attachments/files when a checkbox is true on a Case

I'm not developer unfortunately , thanks a lot if you can help.
Here is the code of the trigger that actually working, just need the test class :

trigger DeleteContentDocumentLink on Case (Before Update,After Update, Before Delete) {
 public Set<Id> CaseSetId = new Set<Id>();
 List<Case> csToUpdt = new List<Case>();

 if(Trigger.isAfter && Trigger.isUpdate){
    for(Case cs:Trigger.New){
        if(cs.TECH_DeleteFiles__c== True){
            CaseSetId.add(cs.Id);
        }
    }
    If(CaseSetId.size()>0){
        List<ContentDocumentLink> casAttmtList = [SELECT ContentDocumentId FROM ContentDocumentLink where LinkedEntityId in ( SELECT Id FROM Case WHERE TECH_DeleteFiles__c = TRUE ) and LinkedEntity.Type='Case'];
        Integer count=0;
        for (ContentDocumentLink x : casAttmtList) {    
            List<ContentDocument> casFiles = [SELECT Title FROM ContentDocument WHERE Id = :casAttmtList[count].ContentDocumentId ];
            delete casFiles;
            count++;
            }
    }
}}

Thanks a lot
Best Answer chosen by Hassan CASSIM
CharuDuttCharuDutt
Hii Hassan
Try Below Test Class
@isTest 
 public Class CaseAttchTest { 
 @isTest
 public Static Void unitTest(){


Account acc = new Account(Name='Test Account');
Insert acc;

Case c = new Case();
c.Origin = 'Web';
c.Status = 'New';
C.Subject = 'Test Subject';
c.AccountId = Acc.id;
insert c;

c.TECH_DeleteFiles__c = true;
update c;
 

ContentVersion cv = new ContentVersion();
cv.Title = 'Test Document';
cv.PathOnClient = 'TestDocument.pdf';
cv.VersionData = Blob.valueOf('Test Content');
cv.IsMajorVersion = true;
Insert cv;
 

Id conDocId = [SELECT ContentDocumentId FROM ContentVersion WHERE Id =:cv.Id].ContentDocumentId;
 

ContentDocumentLink cdl = New ContentDocumentLink();
cdl.LinkedEntityId = c.Id;
cdl.ContentDocumentId = conDocId;
cdl.shareType = 'V';
Insert cdl;
 }
 }
Please Mark It As Best Answer If It Helps
Thank You!

All Answers

CharuDuttCharuDutt
Hii Hassan
Try Below Test Class
@isTest 
 public Class CaseAttchTest { 
 @isTest
 public Static Void unitTest(){


Account acc = new Account(Name='Test Account');
Insert acc;

Case c = new Case();
c.Origin = 'Web';
c.Status = 'New';
C.Subject = 'Test Subject';
c.AccountId = Acc.id;
insert c;

c.TECH_DeleteFiles__c = true;
update c;
 

ContentVersion cv = new ContentVersion();
cv.Title = 'Test Document';
cv.PathOnClient = 'TestDocument.pdf';
cv.VersionData = Blob.valueOf('Test Content');
cv.IsMajorVersion = true;
Insert cv;
 

Id conDocId = [SELECT ContentDocumentId FROM ContentVersion WHERE Id =:cv.Id].ContentDocumentId;
 

ContentDocumentLink cdl = New ContentDocumentLink();
cdl.LinkedEntityId = c.Id;
cdl.ContentDocumentId = conDocId;
cdl.shareType = 'V';
Insert cdl;
 }
 }
Please Mark It As Best Answer If It Helps
Thank You!
This was selected as the best answer
Hassan CASSIMHassan CASSIM
Hi Charu,

Working so well , thanks a lot you are the best !

Hassan