@IsTest private class FileEventQueueableHandlerTest { /* ============================================================ TEST 1 – Single ContentVersion ============================================================ */ @IsTest static void testSingleContentVersionProcessing() { System.debug('===== TEST START : Single ContentVersion ====='); // Create test Account for FirstPublishLocationId Account acc = new Account(Name = 'Test Account'); insert acc; System.debug('Inserted Account Id: ' + acc.Id); // Create ContentVersion ContentVersion cv = new ContentVersion( Title = 'TestFile', PathOnClient = 'TestFile.txt', VersionData = Blob.valueOf('This is test file content'), FirstPublishLocationId = acc.Id ); insert cv; System.debug('Inserted ContentVersion Id: ' + cv.Id); // Fetch inserted ContentVersion again to get ContentDocumentId cv = [ SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id = :cv.Id ]; System.debug('Fetched ContentDocumentId: ' + cv.ContentDocumentId); List cvIds = new List{ cv.Id }; Test.startTest(); System.enqueueJob(new FileEventQueueableHandler(cvIds)); Test.stopTest(); // Verify File_Event__c created List events = [ SELECT Id, File_Id__c, HIC_FilesME__Title__c FROM File_Event__c WHERE File_Id__c = :cv.Id ]; System.debug('Inserted File_Event__c count: ' + events.size()); System.assertEquals(1, events.size()); System.assertEquals('TestFile', events[0].HIC_FilesME__Title__c); System.debug('===== TEST END : Single ContentVersion ====='); } /* ============================================================ TEST 2 – Multiple ContentVersions (Bulk) ============================================================ */ @IsTest static void testMultipleContentVersionProcessing() { System.debug('===== TEST START : Multiple ContentVersions ====='); Account acc = new Account(Name = 'Bulk Account'); insert acc; List cvList = new List(); for (Integer i = 0; i < 3; i++) { cvList.add(new ContentVersion( Title = 'BulkFile_' + i, PathOnClient = 'BulkFile_' + i + '.txt', VersionData = Blob.valueOf('Bulk content ' + i), FirstPublishLocationId = acc.Id )); } insert cvList; System.debug('Inserted ContentVersion count: ' + cvList.size()); List cvIds = new List(); for (ContentVersion cv : cvList) { cvIds.add(cv.Id); } Test.startTest(); System.enqueueJob(new FileEventQueueableHandler(cvIds)); Test.stopTest(); List events = [ SELECT Id FROM File_Event__c WHERE HIC_FilesME__Record_Id__c = :acc.Id ]; System.debug('Inserted File_Event__c count: ' + events.size()); System.assertEquals(3, events.size()); System.debug('===== TEST END : Multiple ContentVersions ====='); } /* ============================================================ TEST 3 – Empty List ============================================================ */ @IsTest static void testEmptyListProcessing() { System.debug('===== TEST START : Empty List Scenario ====='); Test.startTest(); System.enqueueJob(new FileEventQueueableHandler(new List())); Test.stopTest(); // No records should be created List events = [ SELECT Id FROM File_Event__c ]; System.debug('File_Event__c count after empty run: ' + events.size()); System.assertEquals(0, events.size()); System.debug('===== TEST END : Empty List Scenario ====='); } }