Clean up phone number formatting (#1015)

This commit is contained in:
Fahim Faisaal
2022-05-16 22:48:16 +06:00
committed by GitHub
parent f736217341
commit c865654f27
2 changed files with 21 additions and 30 deletions

View File

@ -1,17 +1,16 @@
// function that takes 10 digits and returns a string of the formatted phone number /**
// e.g.: 1234567890 -> (123) 456-7890 * @description - function that takes 10 digits and returns a string of the formatted phone number e.g.: 1234567890 -> (123) 456-7890
* @param {string} phoneNumber
const formatPhoneNumber = (numbers) => { * @returns {string} - Format to (XXX) XXX-XXXX pattern
const numbersString = numbers.toString() */
if ((numbersString.length !== 10) || isNaN(numbersString)) { const formatPhoneNumber = (phoneNumber) => {
if ((phoneNumber.length !== 10) || isNaN(phoneNumber)) {
// return "Invalid phone number." // return "Invalid phone number."
throw new TypeError('Invalid phone number.') throw new TypeError('Invalid phone number!')
} }
const arr = '(XXX) XXX-XXXX'.split('')
Array.from(numbersString).forEach(n => { let index = 0
arr[arr.indexOf('X')] = n return '(XXX) XXX-XXXX'.replace(/X/g, () => phoneNumber[index++])
})
return arr.join('')
} }
export { formatPhoneNumber } export default formatPhoneNumber

View File

@ -1,23 +1,15 @@
import { formatPhoneNumber } from '../FormatPhoneNumber' import formatPhoneNumber from '../FormatPhoneNumber'
describe('PhoneNumberFormatting', () => { describe('Testing the formatPhoneNumber functions', () => {
it('expects to return the formatted phone number', () => { it('expects to throw a type error', () => {
expect(formatPhoneNumber('1234567890')).toEqual('(123) 456-7890') expect(() => formatPhoneNumber('1234567')).toThrow('Invalid phone number!')
expect(() => formatPhoneNumber('123456text')).toThrow('Invalid phone number!')
expect(() => formatPhoneNumber(12345)).toThrow('Invalid phone number!')
}) })
it('expects to return the formatted phone number', () => { it('expects to return the formatted phone number', () => {
expect(formatPhoneNumber(1234567890)).toEqual('(123) 456-7890') expect(formatPhoneNumber('1234567890')).toEqual('(123) 456-7890')
}) expect(formatPhoneNumber('2124323322')).toEqual('(212) 432-3322')
expect(formatPhoneNumber('1721543455')).toEqual('(172) 154-3455')
it('expects to throw a type error', () => {
expect(() => { formatPhoneNumber('1234567') }).toThrow('Invalid phone number.')
})
it('expects to throw a type error', () => {
expect(() => { formatPhoneNumber('123456text') }).toThrow('Invalid phone number.')
})
it('expects to throw a type error', () => {
expect(() => { formatPhoneNumber(12345) }).toThrow('Invalid phone number.')
}) })
}) })