{"version":3,"sources":["../source/getNumberType.test.js"],"names":["getNumberType","parameters","push","metadata","_getNumberType","apply","describe","it","should","equal","checkNumberLength","undefined","thrower","phone","country","type","something","number","_metadata","Metadata"],"mappings":"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","sourcesContent":["import metadata from '../metadata.full'\r\nimport Metadata from './metadata'\r\nimport { checkNumberLengthForType } from './getNumberType_'\r\nimport _getNumberType from './getNumberType'\r\n\r\nfunction getNumberType(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _getNumberType.apply(this, parameters)\r\n}\r\n\r\ndescribe('getNumberType', () => {\r\n\tit('should infer phone number type MOBILE', () => {\r\n\t\tgetNumberType('9150000000', 'RU').should.equal('MOBILE')\r\n\t\tgetNumberType('7912345678', 'GB').should.equal('MOBILE')\r\n\t\tgetNumberType('51234567', 'EE').should.equal('MOBILE')\r\n\t})\r\n\r\n\tit('should infer phone number types', () => {\r\n\t\tgetNumberType('88005553535', 'RU').should.equal('TOLL_FREE')\r\n\t\tgetNumberType('8005553535', 'RU').should.equal('TOLL_FREE')\r\n\t\tgetNumberType('4957777777', 'RU').should.equal('FIXED_LINE')\r\n\t\tgetNumberType('8030000000', 'RU').should.equal('PREMIUM_RATE')\r\n\r\n\t\tgetNumberType('2133734253', 'US').should.equal('FIXED_LINE_OR_MOBILE')\r\n\t\tgetNumberType('5002345678', 'US').should.equal('PERSONAL_NUMBER')\r\n\t})\r\n\r\n\tit('should work when no country is passed', () => {\r\n\t\tgetNumberType('+79150000000').should.equal('MOBILE')\r\n\t})\r\n\r\n\tit('should return FIXED_LINE_OR_MOBILE when there is ambiguity', () => {\r\n\t\t// (no such country in the metadata, therefore no unit test for this `if`)\r\n\t})\r\n\r\n\tit('should check phone number length', () => {\r\n\t\t// Too short.\r\n\t\tcheckNumberLength('800555353', 'FIXED_LINE', 'RU').should.equal('TOO_SHORT')\r\n\t\t// Normal.\r\n\t\tcheckNumberLength('8005553535', 'FIXED_LINE', 'RU').should.equal('IS_POSSIBLE')\r\n\t\t// Too long.\r\n\t\tcheckNumberLength('80055535355', 'FIXED_LINE', 'RU').should.equal('TOO_LONG')\r\n\r\n\t\t// No such type.\r\n\t\tcheckNumberLength('169454850', 'VOIP', 'AC').should.equal('INVALID_LENGTH')\r\n\t\t// No such possible length.\r\n\t\tcheckNumberLength('1694548', undefined, 'AD').should.equal('INVALID_LENGTH')\r\n\r\n\t\t// FIXED_LINE_OR_MOBILE\r\n\t\tcheckNumberLength('1694548', 'FIXED_LINE_OR_MOBILE', 'AD').should.equal('INVALID_LENGTH')\r\n\t\t// No mobile phones.\r\n\t\tcheckNumberLength('8123', 'FIXED_LINE_OR_MOBILE', 'TA').should.equal('IS_POSSIBLE')\r\n\t\t// No \"possible lengths\" for \"mobile\".\r\n\t\tcheckNumberLength('81234567', 'FIXED_LINE_OR_MOBILE', 'SZ').should.equal('IS_POSSIBLE')\r\n\t})\r\n\r\n\tit('should work in edge cases', function() {\r\n\t\tlet thrower\r\n\r\n\t\t// // No metadata\r\n\t\t// thrower = () => _getNumberType({ phone: '+78005553535' })\r\n\t\t// thrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Parsed phone number\r\n\t\tgetNumberType({ phone: '8005553535', country: 'RU' }).should.equal('TOLL_FREE')\r\n\r\n\t\t// Invalid phone number\r\n\t\ttype(getNumberType('123', 'RU')).should.equal('undefined')\r\n\r\n\t\t// Invalid country\r\n\t\tthrower = () => getNumberType({ phone: '8005553535', country: 'RUS' })\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => getNumberType(89150000000, 'RU')\r\n\t\tthrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t\t// When `options` argument is passed.\r\n\t\tgetNumberType('8005553535', 'RU', {}).should.equal('TOLL_FREE')\r\n\t\tgetNumberType('+78005553535', {}).should.equal('TOLL_FREE')\r\n\t\tgetNumberType({ phone: '8005553535', country: 'RU' }, {}).should.equal('TOLL_FREE')\r\n\t})\r\n})\r\n\r\nfunction type(something) {\r\n\treturn typeof something\r\n}\r\n\r\nfunction checkNumberLength(number, type, country) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.country(country)\r\n\treturn checkNumberLengthForType(number, type, _metadata)\r\n}"],"file":"getNumberType.test.js"}