- 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.
210 lines
9.3 KiB
OpenEdge ABL
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');
|
|
}
|
|
}
|