Assist_Design/docs/integrations/salesforce/apex/SIMInventoryImporterTest.cls
tema 7139e0489d Enhance Service Pages with New FAQ Sections and Content Updates
- Added new FAQ sections to the TV Services and Public Internet Plans pages, improving user assistance and engagement.
- Updated the Onsite Support page to utilize a dedicated content component for better organization and maintainability.
- Included device compatibility information in the SIM Plans content, enhancing user clarity on service offerings.
- Improved the structure and functionality of FAQ items across various service pages for a more interactive user experience.
2026-01-20 11:43:51 +09:00

210 lines
9.3 KiB
OpenEdge ABL

/**
* Test class for SIMInventoryImporter
* Provides code coverage for deployment to production.
*
* @author Customer Portal Team
* @version 1.1
*/
@isTest
private class SIMInventoryImporterTest {
/**
* Helper method to create a ContentVersion (file) for testing
*/
private static String createTestFile(String csvContent) {
ContentVersion cv = new ContentVersion();
cv.Title = 'Test SIM Import';
cv.PathOnClient = 'test_sims.csv';
cv.VersionData = Blob.valueOf(csvContent);
insert cv;
// Get the ContentDocumentId
cv = [SELECT ContentDocumentId FROM ContentVersion WHERE Id = :cv.Id];
return cv.ContentDocumentId;
}
@isTest
static void testSuccessfulImport() {
// Prepare test CSV content (matches ASI_N6_PASI format - no header row)
String csvContent = '1,02000002470001,PT0220024700010,PASI,20251229,,,,\n' +
'2,02000002470002,PT0220024700020,PASI,20251229,,,,\n' +
'3,02000002470003,PT0220024700030,PASI,20251229,,,,';
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
System.assertEquals(1, results.size(), 'Should return one result');
System.assertEquals(true, results[0].success, 'Import should succeed');
System.assertEquals(3, results[0].recordsCreated, 'Should create 3 records');
System.assertEquals(0, results[0].recordsFailed, 'Should have no failures');
// Verify records were created correctly
List<SIM_Inventory__c> sims = [
SELECT Phone_Number__c, PT_Number__c, OEM_ID__c, Status__c, SIM_Type__c, Batch_Date__c
FROM SIM_Inventory__c
ORDER BY Phone_Number__c
];
System.assertEquals(3, sims.size(), 'Should have 3 SIM records');
System.assertEquals('02000002470001', sims[0].Phone_Number__c);
System.assertEquals('PT0220024700010', sims[0].PT_Number__c);
System.assertEquals('PASI', sims[0].OEM_ID__c);
System.assertEquals('Available', sims[0].Status__c);
System.assertEquals('Physical SIM', sims[0].SIM_Type__c);
System.assertEquals(Date.newInstance(2025, 12, 29), sims[0].Batch_Date__c);
}
@isTest
static void testDuplicateDetectionInDatabase() {
// Create existing record
insert new SIM_Inventory__c(
Name = '02000002470001',
Phone_Number__c = '02000002470001',
PT_Number__c = 'PT0220024700010',
Status__c = 'Available',
SIM_Type__c = 'Physical SIM'
);
// Try to import same phone number
String csvContent = '1,02000002470001,PT0220024700010,PASI,20251229,,,,';
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
System.assertEquals(0, results[0].recordsCreated, 'Should not create duplicate');
System.assertEquals(1, results[0].recordsFailed, 'Should report 1 failure');
System.assert(results[0].errorMessages.contains('already exists'), 'Should mention duplicate');
}
@isTest
static void testDuplicateDetectionInCSV() {
// CSV with duplicate phone numbers
String csvContent = '1,02000002470001,PT0220024700010,PASI,20251229,,,,\n' +
'2,02000002470001,PT0220024700010,PASI,20251229,,,,';
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
System.assertEquals(1, results[0].recordsCreated, 'Should create first record only');
System.assertEquals(1, results[0].recordsFailed, 'Should fail on duplicate');
}
@isTest
static void testEmptyPhoneNumber() {
String csvContent = '1,,PT0220024700010,PASI,20251229,,,,';
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
System.assertEquals(0, results[0].recordsCreated, 'Should not create record without phone');
System.assertEquals(1, results[0].recordsFailed, 'Should report failure');
}
@isTest
static void testEmptyFile() {
String csvContent = '';
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
System.assertEquals(0, results[0].recordsCreated, 'Should create no records');
System.assertEquals(0, results[0].recordsFailed, 'Should have no failures for empty file');
}
@isTest
static void testAlwaysPhysicalSIM() {
// Verify that all imported SIMs are set to Physical SIM type
String csvContent = '1,02000002470001,PT0220024700010,PASI,20251229,,,,';
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
SIM_Inventory__c sim = [SELECT SIM_Type__c FROM SIM_Inventory__c LIMIT 1];
System.assertEquals('Physical SIM', sim.SIM_Type__c, 'Should always be Physical SIM');
}
@isTest
static void testLargeImport() {
// Test with 50 records (matches real CSV file size)
String csvContent = '';
for (Integer i = 1; i <= 50; i++) {
String phoneNum = '0200000247' + String.valueOf(i).leftPad(4, '0');
String ptNum = 'PT022002470' + String.valueOf(i).leftPad(4, '0') + '0';
csvContent += i + ',' + phoneNum + ',' + ptNum + ',PASI,20251229,,,,\n';
}
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
System.assertEquals(50, results[0].recordsCreated, 'Should create all 50 records');
System.assertEquals(0, results[0].recordsFailed, 'Should have no failures');
Integer count = [SELECT COUNT() FROM SIM_Inventory__c];
System.assertEquals(50, count, 'Database should have 50 records');
}
@isTest
static void testInvalidDateFormat() {
// Invalid date format should not fail the import, just leave date null
String csvContent = '1,02000002470001,PT0220024700010,PASI,invalid_date,,,,';
String contentDocId = createTestFile(csvContent);
SIMInventoryImporter.ImportRequest request = new SIMInventoryImporter.ImportRequest();
request.contentDocumentIds = new List<String>{ contentDocId };
Test.startTest();
List<SIMInventoryImporter.ImportResult> results =
SIMInventoryImporter.importFromCSV(new List<SIMInventoryImporter.ImportRequest>{ request });
Test.stopTest();
System.assertEquals(1, results[0].recordsCreated, 'Should still create record');
SIM_Inventory__c sim = [SELECT Batch_Date__c FROM SIM_Inventory__c LIMIT 1];
System.assertEquals(null, sim.Batch_Date__c, 'Date should be null for invalid format');
}
}