Text Share Online

@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
Share This: