@IsTest
private class IFB_ALL_FileDownloadQueueableTest {
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;
}
}
private class FailureMock implements HttpCalloutMock {
public HttpResponse respond(HttpRequest req) {
HttpResponse res = new HttpResponse();
res.setStatusCode(500);
res.setStatus('Internal Server Error');
return res;
}
}
private static Document_Detail__c createDocDetail(loan_application__c loan) {
Document_Detail__c doc = new Document_Detail__c();
doc.Document_Name__c = 'PAN Card';
doc.Document_Type__c = 'KYC';
doc.loan_Application__c = loan.Id;
insert doc;
return doc;
}
private static Integration_Message__c createIntegrationMsg(Id loanId,Id accId) {
Integration_Message__c msg = new Integration_Message__c();
msg.Reference_Id__c = loanId;
msg.Applicant_Id__c = accId;
msg.Document_Id__c = '{DOC123}';
insert msg;
return msg;
}
@IsTest
static void testSuccessfulDownload() {
Applicant__c acc = new Applicant__c(Name='Test Account');
insert acc;
loan_application__c loan = new loan_application__C();
loan.Business_Unit__c = 'MEL';
insert loan;
Document_Detail__c docDetail = createDocDetail(loan);
Integration_Message__c intMsg = createIntegrationMsg(loan.Id, acc.Id);
Test.setMock(HttpCalloutMock.class, new SuccessMock());
Test.startTest();
System.enqueueJob(
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'TestFile.pdf',
acc.Id,
null,
docDetail,
intMsg
)
);
Test.stopTest();
List<ContentVersion> cvList = [
SELECT Id,
Title,
Document_Name__c,
Document_Type__c,
Loan_Application__c,
Applicant__c,
FileNet_Unique_Id__c
FROM ContentVersion
WHERE Title = 'TestFile.pdf'
];
System.assertEquals(1, cvList.size());
}
@IsTest
static void testSuccessfulDownloadWithExistingDocument() {
Applicant__c acc = new Applicant__c(Name='Test Account');
insert acc;
loan_application__c loan = new loan_application__C();
loan.Business_Unit__c = 'MEL';
insert loan;
Document_Detail__c docDetail = createDocDetail(loan);
Integration_Message__c intMsg = createIntegrationMsg(loan.Id, acc.Id);
ContentVersion existingVersion = new ContentVersion(
Title='Existing',
PathOnClient='Existing.pdf',
VersionData=Blob.valueOf('Existing File')
);
insert existingVersion;
existingVersion = [
SELECT Id, ContentDocumentId
FROM ContentVersion
WHERE Id = :existingVersion.Id
];
ContentDocumentLink cdl = new ContentDocumentLink(
LinkedEntityId = acc.Id,
ContentDocumentId = existingVersion.ContentDocumentId,
ShareType = 'V'
);
insert cdl;
Test.setMock(HttpCalloutMock.class, new SuccessMock());
Test.startTest();
System.enqueueJob(
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'TestFile.pdf',
acc.Id,
cdl,
docDetail,
intMsg
)
);
Test.stopTest();
List<ContentVersion> versions = [
SELECT Id, ContentDocumentId
FROM ContentVersion
WHERE ContentDocumentId = :existingVersion.ContentDocumentId
];
System.assert(versions.size() > 1);
}
@IsTest
static void testFailedCallout() {
Applicant__c acc = new Applicant__c(Name='Test');
insert acc;
loan_application__c loan = new loan_application__C();
loan.Business_Unit__c = 'MEL';
insert loan;
Document_Detail__c docDetail = createDocDetail(loan);
Integration_Message__c intMsg = createIntegrationMsg(loan.Id, acc.Id);
Test.setMock(HttpCalloutMock.class, new FailureMock());
Test.startTest();
try {
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'TestFile.pdf',
acc.Id,
null,
docDetail,
intMsg
).execute(null);
} catch (Exception e) {
// Expected
}
Test.stopTest();
}
@IsTest
static void testBlankPreSignedUrl() {
try {
new IFB_ALL_FileDownloadQueueable(
'',
'TestFile.pdf',
UserInfo.getUserId(),
null,
null,
null
).execute(null);
} catch (Exception e) {
// expected
}
}
@IsTest
static void testBlankFileName() {
try {
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'',
UserInfo.getUserId(),
null,
null,
null
).execute(null);
} catch (Exception e) {
// expected
}
}
@IsTest
static void testNullRecordId() {
try {
new IFB_ALL_FileDownloadQueueable(
'https://test-url.com/file.pdf',
'TestFile.pdf',
null,
null,
null,
null
).execute(null);
} catch (Exception e) {
// expected
}
}
}
-
java
-
1h