@IsTest
private class IFB_ALL_FileDownloadQueueableTest {
/**
* Mock class for successful file download
*/
private class SuccessMock implements HttpCalloutMock {
public HTTPResponse respond(HTTPRequest req) {
HttpResponse res = new HttpResponse();
res.setStatusCode(200);
res.setStatus('OK');
res.setBodyAsBlob(Blob.valueOf('Test File Content'));
return res;
}
}
/**
* Mock class for failed file download
*/
private class FailureMock implements HttpCalloutMock {
public HTTPResponse respond(HTTPRequest req) {
HttpResponse res = new HttpResponse();
res.setStatusCode(500);
res.setStatus('Internal Server Error');
return res;
}
}
@IsTest
static void testSuccessfulFileDownload() {
// Create parent record
Account acc = new Account(Name = 'Test Account');
insert acc;
Test.setMock(HttpCalloutMock.class, new SuccessMock());
Test.startTest();
Id jobId = IFB_ALL_FileDownloadQueueable.enqueueJob(
'https://test-url.com/file.pdf',
'TestFile.pdf',
acc.Id
);
Test.stopTest();
List versions = [
SELECT Id,
Title,
ContentDocumentId
FROM ContentVersion
WHERE Title = 'TestFile.pdf'
];
List links = [
SELECT Id,
LinkedEntityId
FROM ContentDocumentLink
WHERE ContentDocumentId = :versions[0].ContentDocumentId
];
}
@IsTest
static void testFailedCallout() {
Account acc = new Account(Name = 'Test Account');
insert acc;
Test.setMock(HttpCalloutMock.class, new FailureMock());
Test.startTest();
try {
System.enqueueJob(
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'TestFile.pdf',
acc.Id
)
);
Test.stopTest();
} catch (Exception ex) {
System.assert(
ex.getMessage().contains('Failed to download file'),
'Expected callout failure message'
);
}
}
@IsTest
static void testEnqueueJobMethod() {
Account acc = new Account(Name = 'Test Account');
insert acc;
Test.setMock(HttpCalloutMock.class, new SuccessMock());
Test.startTest();
Id jobId = IFB_ALL_FileDownloadQueueable.enqueueJob(
'https://test-url.com/sample.txt',
'sample.txt',
acc.Id
);
Test.stopTest();
}
@IsTest
static void testBlankPreSignedUrl() {
Account acc = new Account(Name = 'Test Account');
insert acc;
Test.startTest();
try {
System.enqueueJob(
new IFB_ALL_FileDownloadQueueable(
'',
'TestFile.pdf',
acc.Id
)
);
Test.stopTest();
} catch (Exception e) {
// Expected
}
}
@IsTest
static void testBlankFileName() {
Account acc = new Account(Name = 'Test Account');
insert acc;
Test.startTest();
try {
System.enqueueJob(
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'',
acc.Id
)
);
Test.stopTest();
} catch (Exception e) {
// Expected
}
}
@IsTest
static void testNullRecordId() {
Test.startTest();
try {
System.enqueueJob(
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'TestFile.pdf',
null
)
);
Test.stopTest();
} catch (Exception e) {
// Expected
}
}
}
-
java
-
1h