1 | "use strict";
|
2 |
|
3 | var _findNumbers = _interopRequireDefault(require("./findNumbers"));
|
4 |
|
5 | var _metadataFull = _interopRequireDefault(require("../metadata.full.json"));
|
6 |
|
7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
8 |
|
9 | describe('findNumbers', function () {
|
10 | it('should find numbers', function () {
|
11 | (0, _findNumbers["default"])('2133734253', 'US', _metadataFull["default"]).should.deep.equal([{
|
12 | phone: '2133734253',
|
13 | country: 'US',
|
14 | startsAt: 0,
|
15 | endsAt: 10
|
16 | }]);
|
17 | (0, _findNumbers["default"])('(213) 373-4253', 'US', _metadataFull["default"]).should.deep.equal([{
|
18 | phone: '2133734253',
|
19 | country: 'US',
|
20 | startsAt: 0,
|
21 | endsAt: 14
|
22 | }]);
|
23 | (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataFull["default"]).should.deep.equal([{
|
24 | phone: '8005553535',
|
25 | country: 'RU',
|
26 | startsAt: 14,
|
27 | endsAt: 32
|
28 | }, {
|
29 | phone: '2133734253',
|
30 | country: 'US',
|
31 | startsAt: 41,
|
32 | endsAt: 55
|
33 | }]);
|
34 |
|
35 |
|
36 | (0, _findNumbers["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', _metadataFull["default"]).should.deep.equal([{
|
37 | phone: '8005553535',
|
38 | country: 'RU',
|
39 | startsAt: 14,
|
40 | endsAt: 32
|
41 | }, {
|
42 | phone: '2133734253',
|
43 | country: 'US',
|
44 | startsAt: 41,
|
45 | endsAt: 55
|
46 | }]);
|
47 |
|
48 | (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', _metadataFull["default"]).should.deep.equal([{
|
49 | phone: '8005553535',
|
50 | country: 'RU',
|
51 | startsAt: 14,
|
52 | endsAt: 32
|
53 | }]);
|
54 |
|
55 | (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', 'US', {
|
56 | leniency: 'VALID'
|
57 | }, _metadataFull["default"]).should.deep.equal([{
|
58 | phone: '8005553535',
|
59 | country: 'RU',
|
60 | startsAt: 14,
|
61 | endsAt: 32
|
62 | }]);
|
63 |
|
64 | (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', {
|
65 | leniency: 'VALID'
|
66 | }, _metadataFull["default"]).should.deep.equal([{
|
67 | phone: '8005553535',
|
68 | country: 'RU',
|
69 | startsAt: 14,
|
70 | endsAt: 32
|
71 | }]);
|
72 |
|
73 | (0, _findNumbers["default"])('Digits 12 are not a number, but +7 (800) 555-35-35 is.', {
|
74 | leniency: 'VALID'
|
75 | }, _metadataFull["default"]).should.deep.equal([{
|
76 | phone: '8005553535',
|
77 | country: 'RU',
|
78 | startsAt: 32,
|
79 | endsAt: 50
|
80 | }]);
|
81 |
|
82 | (0, _findNumbers["default"])('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', {
|
83 | leniency: 'VALID'
|
84 | }, _metadataFull["default"]).should.deep.equal([{
|
85 | phone: '8005553535',
|
86 | country: 'RU',
|
87 | ext: '123',
|
88 | startsAt: 37,
|
89 | endsAt: 64
|
90 | }]);
|
91 | });
|
92 | it('should find numbers (v2)', function () {
|
93 | var phoneNumbers = (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 ext. 1234 and not (213) 373-4253 as written in the document.', 'US', {
|
94 | v2: true
|
95 | }, _metadataFull["default"]);
|
96 | phoneNumbers.length.should.equal(2);
|
97 | phoneNumbers[0].startsAt.should.equal(14);
|
98 | phoneNumbers[0].endsAt.should.equal(42);
|
99 | phoneNumbers[0].number.number.should.equal('+78005553535');
|
100 | phoneNumbers[0].number.nationalNumber.should.equal('8005553535');
|
101 | phoneNumbers[0].number.country.should.equal('RU');
|
102 | phoneNumbers[0].number.countryCallingCode.should.equal('7');
|
103 | phoneNumbers[0].number.ext.should.equal('1234');
|
104 | phoneNumbers[1].startsAt.should.equal(51);
|
105 | phoneNumbers[1].endsAt.should.equal(65);
|
106 | phoneNumbers[1].number.number.should.equal('+12133734253');
|
107 | phoneNumbers[1].number.nationalNumber.should.equal('2133734253');
|
108 | phoneNumbers[1].number.country.should.equal('US');
|
109 | phoneNumbers[1].number.countryCallingCode.should.equal('1');
|
110 | });
|
111 | it('shouldn\'t find non-valid numbers', function () {
|
112 |
|
113 | (0, _findNumbers["default"])('1111111111', 'US', _metadataFull["default"]).should.deep.equal([]);
|
114 | });
|
115 | it('should find non-European digits', function () {
|
116 |
|
117 | (0, _findNumbers["default"])('العَرَبِيَّة +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ', _metadataFull["default"]).should.deep.equal([{
|
118 | country: 'GB',
|
119 | phone: '3333333333',
|
120 | startsAt: 14,
|
121 | endsAt: 27
|
122 | }]);
|
123 | });
|
124 | it('should work in edge cases', function () {
|
125 | var thrower;
|
126 |
|
127 | (0, _findNumbers["default"])('', _metadataFull["default"]).should.deep.equal([]);
|
128 |
|
129 |
|
130 |
|
131 |
|
132 | thrower = function thrower() {
|
133 | return (0, _findNumbers["default"])(2141111111, 'US');
|
134 | };
|
135 |
|
136 | thrower.should["throw"]('A text for parsing must be a string.');
|
137 |
|
138 |
|
139 |
|
140 |
|
141 | (0, _findNumbers["default"])('').should.deep.equal([]);
|
142 | });
|
143 | it('should find international numbers when passed a non-existent default country', function () {
|
144 | var numbers = (0, _findNumbers["default"])('Phone: +7 (800) 555 35 35. National: 8 (800) 555-55-55', {
|
145 | defaultCountry: 'XX',
|
146 | v2: true
|
147 | }, _metadataFull["default"]);
|
148 | numbers.length.should.equal(1);
|
149 | numbers[0].number.nationalNumber.should.equal('8005553535');
|
150 | });
|
151 | it('shouldn\'t find phone numbers which are not phone numbers', function () {
|
152 |
|
153 | (0, _findNumbers["default"])('2012-01-02 08:00', 'US', _metadataFull["default"]).should.deep.equal([]);
|
154 |
|
155 | (0, _findNumbers["default"])('2012-01-02 08', 'US', _metadataFull["default"]).should.deep.equal([{
|
156 | country: 'US',
|
157 | phone: '2012010208',
|
158 | startsAt: 0,
|
159 | endsAt: 13
|
160 | }]);
|
161 |
|
162 | (0, _findNumbers["default"])('213(3734253', 'US', _metadataFull["default"]).should.deep.equal([]);
|
163 |
|
164 | (0, _findNumbers["default"])('2133734253a', 'US', _metadataFull["default"]).should.deep.equal([]);
|
165 |
|
166 | (0, _findNumbers["default"])('The phone number is 231354125.', 'FR', _metadataFull["default"]).should.deep.equal([{
|
167 | country: 'FR',
|
168 | phone: '231354125',
|
169 | startsAt: 20,
|
170 | endsAt: 29
|
171 | }]);
|
172 |
|
173 |
|
174 | var possibleNumbers = (0, _findNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', {
|
175 | extended: true
|
176 | }, _metadataFull["default"]);
|
177 | possibleNumbers.length.should.equal(1);
|
178 | possibleNumbers[0].country.should.equal('FR');
|
179 | possibleNumbers[0].phone.should.equal('231354125');
|
180 |
|
181 |
|
182 | (0, _findNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', _metadataFull["default"]).should.deep.equal([]);
|
183 | });
|
184 |
|
185 | it('should return correct `startsAt` and `endsAt` when matching "inner" candidates in a could-be-a-candidate substring', function () {
|
186 | (0, _findNumbers["default"])('39945926 77200596 16533084', 'ID', _metadataFull["default"]).should.deep.equal([{
|
187 | country: 'ID',
|
188 | phone: '77200596',
|
189 | startsAt: 9,
|
190 | endsAt: 17
|
191 | }]);
|
192 | });
|
193 | });
|
194 |
|
\ | No newline at end of file |