Skip to content

Instantly share code, notes, and snippets.

@swapnilshrikhande
Last active October 23, 2020 11:21
Show Gist options
  • Save swapnilshrikhande/ad98cc9845a6fb013b28c19a17e107f2 to your computer and use it in GitHub Desktop.
Save swapnilshrikhande/ad98cc9845a6fb013b28c19a17e107f2 to your computer and use it in GitHub Desktop.
Example to create salesforce workspace folders programmatically.
@testSetup
private static void createTestData() {
ContentWorkspace testWorkspace = new ContentWorkspace(Name='TEST CLASS', DeveloperName='TEST_CLASS');
insert testWorkspace;
}
@isTest
private static void testGetFilesList(){
ContentWorkspace testWorkspace = [Select Id from ContentWorkspace where Name = 'TEST CLASS'];
ContentFolder workspaceFolder = [Select Id from ContentFolder where Name =: testWorkspace.Id];
ContentFolder testFolderRecord = new ContentFolder(Name='TEST FOLDER', ParentContentFolderId=workspaceFolder.Id);
insert testFolderRecord;
List<ContentVersion> contentVersions = new List<ContentVersion>();
for(Integer i = 1; i <= 12; i++) {
String fileExtension = '';
Switch on i {
when 1 {
fileExtension='csv';
}
when 2 {
fileExtension='jpg';
}
when 3 {
fileExtension='gif';
}
when 4 {
fileExtension='tiff';
}
when 5 {
fileExtension='ppt';
}
when 6 {
fileExtension='xls';
}
when 7 {
fileExtension='xlsx';
}
when 8 {
fileExtension='doc';
}
when 9 {
fileExtension='docx';
}
when 10 {
fileExtension='pdf';
}
when 11 {
fileExtension='pptx';
}
when else {
fileExtension='json';
}
}
ContentVersion cv = new ContentVersion();
cv.title = 'test content'+i;
cv.VersionData = Blob.valueOf('Unit Test Attachment Body'+i);
cv.PathOnClient = 'test content'+i+'.'+fileExtension;
contentVersions.add(cv);
}
insert contentVersions;
List<ContentDocumentLink> documentLinks = new List<ContentDocumentLink>();
List<ContentFolderMember> folderMembers = new List<ContentFolderMember>();
for(ContentVersion cv : [Select Id, ContentDocumentId from ContentVersion]) {
ContentDocumentLink cdl = new ContentDocumentLink();
cdl.ContentDocumentId = cv.ContentDocumentId;
cdl.LinkedEntityId = testWorkspace.Id;
cdl.Sharetype = 'I';
documentLinks.add(cdl);
}
insert documentLinks;
for(ContentFolderMember cfm : [Select Id, ChildRecordId, ParentContentFolderId
from ContentFolderMember
where ParentContentFolderId =: workspaceFolder.Id]) {
cfm.ParentContentFolderId = testFolderRecord.Id;
folderMembers.add(cfm);
}
update folderMembers;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment