UNPKG

9.34 kBJavaScriptView Raw
1"use strict";
2
3var _findPhoneNumbers = _interopRequireWildcard(require("./findPhoneNumbers"));
4
5var _findPhoneNumbers_ = require("./findPhoneNumbers_");
6
7var _metadataMin = _interopRequireDefault(require("../metadata.min.json"));
8
9function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
11function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
12
13// This is a legacy function.
14// Use `findNumbers()` instead.
15describe('findPhoneNumbers', function () {
16 it('should find numbers', function () {
17 (0, _findPhoneNumbers["default"])('2133734253', 'US', _metadataMin["default"]).should.deep.equal([{
18 phone: '2133734253',
19 country: 'US',
20 startsAt: 0,
21 endsAt: 10
22 }]);
23 (0, _findPhoneNumbers["default"])('(213) 373-4253', 'US', _metadataMin["default"]).should.deep.equal([{
24 phone: '2133734253',
25 country: 'US',
26 startsAt: 0,
27 endsAt: 14
28 }]);
29 (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataMin["default"]).should.deep.equal([{
30 phone: '8005553535',
31 country: 'RU',
32 startsAt: 14,
33 endsAt: 32
34 }, {
35 phone: '2133734253',
36 country: 'US',
37 startsAt: 41,
38 endsAt: 55
39 }]); // Opening parenthesis issue.
40 // https://github.com/catamphetamine/libphonenumber-js/issues/252
41
42 (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\'s not even in the same country!) as written in the document.', 'US', _metadataMin["default"]).should.deep.equal([{
43 phone: '8005553535',
44 country: 'RU',
45 startsAt: 14,
46 endsAt: 32
47 }, {
48 phone: '2133734253',
49 country: 'US',
50 startsAt: 41,
51 endsAt: 55
52 }]); // No default country.
53
54 (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', _metadataMin["default"]).should.deep.equal([{
55 phone: '8005553535',
56 country: 'RU',
57 startsAt: 14,
58 endsAt: 32
59 }]); // Passing `options` and default country.
60
61 (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', 'US', {
62 leniency: 'VALID'
63 }, _metadataMin["default"]).should.deep.equal([{
64 phone: '8005553535',
65 country: 'RU',
66 startsAt: 14,
67 endsAt: 32
68 }]); // Passing `options`.
69
70 (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', {
71 leniency: 'VALID'
72 }, _metadataMin["default"]).should.deep.equal([{
73 phone: '8005553535',
74 country: 'RU',
75 startsAt: 14,
76 endsAt: 32
77 }]); // Not a phone number and a phone number.
78
79 (0, _findPhoneNumbers["default"])('Digits 12 are not a number, but +7 (800) 555-35-35 is.', {
80 leniency: 'VALID'
81 }, _metadataMin["default"]).should.deep.equal([{
82 phone: '8005553535',
83 country: 'RU',
84 startsAt: 32,
85 endsAt: 50
86 }]); // Phone number extension.
87
88 (0, _findPhoneNumbers["default"])('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', {
89 leniency: 'VALID'
90 }, _metadataMin["default"]).should.deep.equal([{
91 phone: '8005553535',
92 country: 'RU',
93 ext: '123',
94 startsAt: 37,
95 endsAt: 64
96 }]);
97 });
98 it('shouldn\'t find non-valid numbers', function () {
99 // Not a valid phone number for US.
100 (0, _findPhoneNumbers["default"])('1111111111', 'US', _metadataMin["default"]).should.deep.equal([]);
101 });
102 it('should find non-European digits', function () {
103 // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.
104 (0, _findPhoneNumbers["default"])('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', _metadataMin["default"]).should.deep.equal([{
105 country: 'GB',
106 phone: '3333333333',
107 startsAt: 14,
108 endsAt: 27
109 }]);
110 });
111 it('should iterate', function () {
112 var expected_numbers = [{
113 country: 'RU',
114 phone: '8005553535',
115 // number : '+7 (800) 555-35-35',
116 startsAt: 14,
117 endsAt: 32
118 }, {
119 country: 'US',
120 phone: '2133734253',
121 // number : '(213) 373-4253',
122 startsAt: 41,
123 endsAt: 55
124 }];
125
126 for (var _iterator = (0, _findPhoneNumbers.searchPhoneNumbers)('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataMin["default"]), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
127 var _ref;
128
129 if (_isArray) {
130 if (_i >= _iterator.length) break;
131 _ref = _iterator[_i++];
132 } else {
133 _i = _iterator.next();
134 if (_i.done) break;
135 _ref = _i.value;
136 }
137
138 var number = _ref;
139 number.should.deep.equal(expected_numbers.shift());
140 }
141
142 expected_numbers.length.should.equal(0);
143 });
144 it('should work in edge cases', function () {
145 var thrower; // No input
146
147 (0, _findPhoneNumbers["default"])('', _metadataMin["default"]).should.deep.equal([]); // No country metadata for this `require` country code
148
149 thrower = function thrower() {
150 return (0, _findPhoneNumbers["default"])('123', 'ZZ', _metadataMin["default"]);
151 };
152
153 thrower.should["throw"]('Unknown country'); // Numerical `value`
154
155 thrower = function thrower() {
156 return (0, _findPhoneNumbers["default"])(2141111111, 'US');
157 };
158
159 thrower.should["throw"]('A text for parsing must be a string.'); // // No metadata
160 // thrower = () => findNumbers('')
161 // thrower.should.throw('`metadata` argument not passed')
162 });
163 it('shouldn\'t find phone numbers which are not phone numbers', function () {
164 // A timestamp.
165 (0, _findPhoneNumbers["default"])('2012-01-02 08:00', 'US', _metadataMin["default"]).should.deep.equal([]); // A valid number (not a complete timestamp).
166
167 (0, _findPhoneNumbers["default"])('2012-01-02 08', 'US', _metadataMin["default"]).should.deep.equal([{
168 country: 'US',
169 phone: '2012010208',
170 startsAt: 0,
171 endsAt: 13
172 }]); // Invalid parens.
173
174 (0, _findPhoneNumbers["default"])('213(3734253', 'US', _metadataMin["default"]).should.deep.equal([]); // Letters after phone number.
175
176 (0, _findPhoneNumbers["default"])('2133734253a', 'US', _metadataMin["default"]).should.deep.equal([]); // Valid phone (same as the one found in the UUID below).
177
178 (0, _findPhoneNumbers["default"])('The phone number is 231354125.', 'FR', _metadataMin["default"]).should.deep.equal([{
179 country: 'FR',
180 phone: '231354125',
181 startsAt: 20,
182 endsAt: 29
183 }]); // Not a phone number (part of a UUID).
184 // Should parse in `{ extended: true }` mode.
185
186 var possibleNumbers = (0, _findPhoneNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', {
187 extended: true
188 }, _metadataMin["default"]);
189 possibleNumbers.length.should.equal(3);
190 possibleNumbers[1].country.should.equal('FR');
191 possibleNumbers[1].phone.should.equal('231354125'); // Not a phone number (part of a UUID).
192 // Shouldn't parse by default.
193
194 (0, _findPhoneNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', _metadataMin["default"]).should.deep.equal([]);
195 });
196});
197describe('PhoneNumberSearch', function () {
198 it('should search for phone numbers', function () {
199 var finder = new _findPhoneNumbers_.PhoneNumberSearch('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', {
200 defaultCountry: 'US'
201 }, _metadataMin["default"]);
202 finder.hasNext().should.equal(true);
203 finder.next().should.deep.equal({
204 country: 'RU',
205 phone: '8005553535',
206 // number : '+7 (800) 555-35-35',
207 startsAt: 14,
208 endsAt: 32
209 });
210 finder.hasNext().should.equal(true);
211 finder.next().should.deep.equal({
212 country: 'US',
213 phone: '2133734253',
214 // number : '(213) 373-4253',
215 startsAt: 41,
216 endsAt: 55
217 });
218 finder.hasNext().should.equal(false);
219 });
220 it('should search for phone numbers (no options)', function () {
221 var finder = new _findPhoneNumbers_.PhoneNumberSearch('The number is +7 (800) 555-35-35', undefined, _metadataMin["default"]);
222 finder.hasNext().should.equal(true);
223 finder.next().should.deep.equal({
224 country: 'RU',
225 phone: '8005553535',
226 // number : '+7 (800) 555-35-35',
227 startsAt: 14,
228 endsAt: 32
229 });
230 finder.hasNext().should.equal(false);
231 });
232 it('should work in edge cases', function () {
233 // No options
234 var search = new _findPhoneNumbers_.PhoneNumberSearch('', undefined, _metadataMin["default"]); // No next element
235
236 var thrower = function thrower() {
237 return search.next();
238 };
239
240 thrower.should["throw"]('No next element');
241 });
242});
243//# sourceMappingURL=findPhoneNumbers.test.js.map
\No newline at end of file