UNPKG

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.

113 lines (112 loc) 4.33 kB
// src/__tests__/synthetic-data/test-data-generator.ts import { TestDataGeneratorValidNumbers } from './test-data-generator-valid-numbers'; import { TestDataGeneratorInvalidNumbers } from './test-data-generator-invalid-numbers'; import { TestDataGeneratorRandomNumbers } from './test-data-generator-random-numbers'; import { TestDataGeneratorPropertyBased } from './test-data-generator-property-based'; import { invalidTelcos } from '../../numbering-plan/telco'; /** * Main test data generator that brings together all the specialized generators */ export class TestDataGenerator { /** * Generate a valid mobile number for a specific network code */ static generateValidNumber(networkCode) { return TestDataGeneratorValidNumbers.generateValidNumber(networkCode); } /** * Generate a valid mobile number for a specific telco */ static generateValidNumberForTelco(telco) { if (invalidTelcos.includes(telco)) { throw new Error(`Invalid Telcos cannot be used to generate valid synthetic mobile numbers. Telco name: ${telco}`); } return TestDataGeneratorValidNumbers.generateValidNumberForTelco(telco); } /** * Generate an international format number */ static generateInternationalNumber(networkCode) { return TestDataGeneratorValidNumbers.generateInternationalNumber(networkCode); } /** * Generate an international format number with plus */ static generateInternationalPlusNumber(networkCode) { return TestDataGeneratorValidNumbers.generateInternationalPlusNumber(networkCode); } /** * Generate a number with spaces */ static generateNumberWithSpaces(networkCode) { return TestDataGeneratorValidNumbers.generateNumberWithSpaces(networkCode); } /** * Generate a number with "O" instead of "0" */ static generateNumberWithO(networkCode) { return TestDataGeneratorValidNumbers.generateNumberWithO(networkCode); } /** * Generate a number with invalid length (too long or too short) */ static generateInvalidLengthNumber(networkCode, tooLong = true) { return TestDataGeneratorInvalidNumbers.generateInvalidLengthNumber(networkCode, tooLong); } /** * Generate a number with non-numeric characters */ static generateNonNumericNumber(networkCode) { return TestDataGeneratorInvalidNumbers.generateNonNumericNumber(networkCode); } /** * Generate a number with invalid network code */ static generateInvalidNetworkCodeNumber() { return TestDataGeneratorInvalidNumbers.generateInvalidNetworkCodeNumber(); } /** * Generate a valid withdrawn number in the 702 range */ static generateWithdrawn702Number() { return TestDataGeneratorInvalidNumbers.generateWithdrawn702Number(); } /** * Generate a valid returned number in the 702 range */ static generateReturned702Number() { return TestDataGeneratorInvalidNumbers.generateReturned702Number(); } /** * Generate a completely random phone number (may be valid or invalid) */ static generateRandomPhoneNumber() { return TestDataGeneratorRandomNumbers.generateRandomPhoneNumber(); } /** * Generate a comprehensive batch of valid numbers covering all telcos */ static generateValidNumberBatch(size = 50) { return TestDataGeneratorValidNumbers.generateValidNumberBatch(size); } /** * Generate a mixed batch with both valid and invalid numbers */ static generateMixedNumberBatch(size = 50, invalidRatio = 0.2) { return 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 TestDataGeneratorPropertyBased.generatePropertyBasedTest(aspect, count); } /** * Generate a comprehensive set of test cases for validation */ static generateValidationTestCases() { return TestDataGeneratorPropertyBased.generatePropertyBasedTestCases(50); } }