nigerian-mobile-validator
Version:
The most rigorous, up-to-date library for validating Nigerian mobile numbers. Fully NCC-compliant, and security-focused, with enterprise-grade features to prevent the business risks of validation failures in regulated industries.
117 lines (116 loc) • 5.1 kB
JavaScript
;
// src/__tests__/synthetic-data/test-data-generator.ts
Object.defineProperty(exports, "__esModule", { value: true });
exports.TestDataGenerator = void 0;
const test_data_generator_valid_numbers_1 = require("./test-data-generator-valid-numbers");
const test_data_generator_invalid_numbers_1 = require("./test-data-generator-invalid-numbers");
const test_data_generator_random_numbers_1 = require("./test-data-generator-random-numbers");
const test_data_generator_property_based_1 = require("./test-data-generator-property-based");
const telco_1 = require("../../numbering-plan/telco");
/**
* Main test data generator that brings together all the specialized generators
*/
class TestDataGenerator {
/**
* Generate a valid mobile number for a specific network code
*/
static generateValidNumber(networkCode) {
return test_data_generator_valid_numbers_1.TestDataGeneratorValidNumbers.generateValidNumber(networkCode);
}
/**
* Generate a valid mobile number for a specific telco
*/
static generateValidNumberForTelco(telco) {
if (telco_1.invalidTelcos.includes(telco)) {
throw new Error(`Invalid Telcos cannot be used to generate valid synthetic mobile numbers. Telco name: ${telco}`);
}
return test_data_generator_valid_numbers_1.TestDataGeneratorValidNumbers.generateValidNumberForTelco(telco);
}
/**
* Generate an international format number
*/
static generateInternationalNumber(networkCode) {
return test_data_generator_valid_numbers_1.TestDataGeneratorValidNumbers.generateInternationalNumber(networkCode);
}
/**
* Generate an international format number with plus
*/
static generateInternationalPlusNumber(networkCode) {
return test_data_generator_valid_numbers_1.TestDataGeneratorValidNumbers.generateInternationalPlusNumber(networkCode);
}
/**
* Generate a number with spaces
*/
static generateNumberWithSpaces(networkCode) {
return test_data_generator_valid_numbers_1.TestDataGeneratorValidNumbers.generateNumberWithSpaces(networkCode);
}
/**
* Generate a number with "O" instead of "0"
*/
static generateNumberWithO(networkCode) {
return test_data_generator_valid_numbers_1.TestDataGeneratorValidNumbers.generateNumberWithO(networkCode);
}
/**
* Generate a number with invalid length (too long or too short)
*/
static generateInvalidLengthNumber(networkCode, tooLong = true) {
return test_data_generator_invalid_numbers_1.TestDataGeneratorInvalidNumbers.generateInvalidLengthNumber(networkCode, tooLong);
}
/**
* Generate a number with non-numeric characters
*/
static generateNonNumericNumber(networkCode) {
return test_data_generator_invalid_numbers_1.TestDataGeneratorInvalidNumbers.generateNonNumericNumber(networkCode);
}
/**
* Generate a number with invalid network code
*/
static generateInvalidNetworkCodeNumber() {
return test_data_generator_invalid_numbers_1.TestDataGeneratorInvalidNumbers.generateInvalidNetworkCodeNumber();
}
/**
* Generate a valid withdrawn number in the 702 range
*/
static generateWithdrawn702Number() {
return test_data_generator_invalid_numbers_1.TestDataGeneratorInvalidNumbers.generateWithdrawn702Number();
}
/**
* Generate a valid returned number in the 702 range
*/
static generateReturned702Number() {
return test_data_generator_invalid_numbers_1.TestDataGeneratorInvalidNumbers.generateReturned702Number();
}
/**
* Generate a completely random phone number (may be valid or invalid)
*/
static generateRandomPhoneNumber() {
return test_data_generator_random_numbers_1.TestDataGeneratorRandomNumbers.generateRandomPhoneNumber();
}
/**
* Generate a comprehensive batch of valid numbers covering all telcos
*/
static generateValidNumberBatch(size = 50) {
return test_data_generator_valid_numbers_1.TestDataGeneratorValidNumbers.generateValidNumberBatch(size);
}
/**
* Generate a mixed batch with both valid and invalid numbers
*/
static generateMixedNumberBatch(size = 50, invalidRatio = 0.2) {
return test_data_generator_random_numbers_1.TestDataGeneratorRandomNumbers.generateMixedNumberBatch(size, invalidRatio);
}
/**
* Generate a property-based test for a specific validation aspect
* @param aspect The validation aspect to test
* @param count Number of test cases to generate
*/
static generatePropertyBasedTest(aspect, count = 10) {
return test_data_generator_property_based_1.TestDataGeneratorPropertyBased.generatePropertyBasedTest(aspect, count);
}
/**
* Generate a comprehensive set of test cases for validation
*/
static generateValidationTestCases() {
return test_data_generator_property_based_1.TestDataGeneratorPropertyBased.generatePropertyBasedTestCases(50);
}
}
exports.TestDataGenerator = TestDataGenerator;