validation-br 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/test/cnh.test.js +116 -0
  2. package/dist/test/cnh.test.js.map +1 -0
  3. package/dist/test/cnpj.test.js +181 -0
  4. package/dist/test/cnpj.test.js.map +1 -0
  5. package/dist/test/cpf.test.js +136 -0
  6. package/dist/test/cpf.test.js.map +1 -0
  7. package/dist/test/index.test.js +83 -0
  8. package/dist/test/index.test.js.map +1 -0
  9. package/dist/test/judicialProcess.test.js +124 -0
  10. package/dist/test/judicialProcess.test.js.map +1 -0
  11. package/dist/test/nup17.test.js +133 -0
  12. package/dist/test/nup17.test.js.map +1 -0
  13. package/dist/test/pisPasep.test.js +135 -0
  14. package/dist/test/pisPasep.test.js.map +1 -0
  15. package/dist/test/postalCode.test.js +123 -0
  16. package/dist/test/postalCode.test.js.map +1 -0
  17. package/dist/test/renavam.test.js +91 -0
  18. package/dist/test/renavam.test.js.map +1 -0
  19. package/dist/test/tituloEleitor.test.js +118 -0
  20. package/dist/test/tituloEleitor.test.js.map +1 -0
  21. package/dist/test/utils-applyMask.test.js +15 -0
  22. package/dist/test/utils-applyMask.test.js.map +1 -0
  23. package/dist/test/utils-checkRepeatedSequence.test.js +18 -0
  24. package/dist/test/utils-checkRepeatedSequence.test.js.map +1 -0
  25. package/dist/test/utils-clearValue.test.js +59 -0
  26. package/dist/test/utils-clearValue.test.js.map +1 -0
  27. package/dist/test/utils-fakeNumber.test.js +24 -0
  28. package/dist/test/utils-fakeNumber.test.js.map +1 -0
  29. package/dist/test/utils-insertAtPosition.test.js +16 -0
  30. package/dist/test/utils-insertAtPosition.test.js.map +1 -0
  31. package/dist/test/utils-randomLetter.test.js +11 -0
  32. package/dist/test/utils-randomLetter.test.js.map +1 -0
  33. package/dist/test/utils-removeFromPosition.test.js +12 -0
  34. package/dist/test/utils-removeFromPosition.test.js.map +1 -0
  35. package/dist/test/utils-sumElementsByMultipliers.test.js +23 -0
  36. package/dist/test/utils-sumElementsByMultipliers.test.js.map +1 -0
  37. package/dist/test/utils-sumToDV.test.d.ts +1 -0
  38. package/dist/test/utils-sumToDV.test.js +14 -0
  39. package/dist/test/utils-sumToDV.test.js.map +1 -0
  40. package/jest.config.js +1 -1
  41. package/package.json +4 -3
  42. package/readme.md +216 -184
  43. package/test/cnh.test.ts +113 -0
  44. package/test/cnpj.test.ts +179 -0
  45. package/test/cpf.test.ts +124 -0
  46. package/test/index.test.ts +85 -0
  47. package/test/judicialProcess.test.ts +120 -0
  48. package/test/nup17.test.ts +127 -0
  49. package/test/pisPasep.test.ts +126 -0
  50. package/test/postalCode.test.ts +114 -0
  51. package/test/renavam.test.ts +77 -0
  52. package/test/tituloEleitor.test.ts +110 -0
  53. package/test/utils-applyMask.test.ts +13 -0
  54. package/test/utils-checkRepeatedSequence.test.ts +17 -0
  55. package/test/utils-clearValue.test.ts +69 -0
  56. package/test/utils-fakeNumber.test.ts +28 -0
  57. package/test/utils-insertAtPosition.test.ts +15 -0
  58. package/test/utils-randomLetter.test.ts +9 -0
  59. package/test/utils-removeFromPosition.test.ts +10 -0
  60. package/test/utils-sumElementsByMultipliers.test.ts +24 -0
  61. package/test/utils-sumToDV.test.ts +12 -0
  62. package/tsconfig.json +3 -3
  63. package/.github/workflows/test.yml +0 -39
  64. package/dist/cnh.d.ts +0 -91
  65. package/dist/cnh.js +0 -139
  66. package/dist/cnh.js.map +0 -1
  67. package/dist/cnpj.d.ts +0 -87
  68. package/dist/cnpj.js +0 -151
  69. package/dist/cnpj.js.map +0 -1
  70. package/dist/cpf.d.ts +0 -99
  71. package/dist/cpf.js +0 -147
  72. package/dist/cpf.js.map +0 -1
  73. package/dist/data/ValidationBRError.d.ts +0 -6
  74. package/dist/data/ValidationBRError.js +0 -10
  75. package/dist/data/ValidationBRError.js.map +0 -1
  76. package/dist/index.d.ts +0 -21
  77. package/dist/index.js +0 -42
  78. package/dist/index.js.map +0 -1
  79. package/dist/judicialProcess.d.ts +0 -126
  80. package/dist/judicialProcess.js +0 -190
  81. package/dist/judicialProcess.js.map +0 -1
  82. package/dist/nup17.d.ts +0 -102
  83. package/dist/nup17.js +0 -155
  84. package/dist/nup17.js.map +0 -1
  85. package/dist/pisPasep.d.ts +0 -81
  86. package/dist/pisPasep.js +0 -126
  87. package/dist/pisPasep.js.map +0 -1
  88. package/dist/postalCode.d.ts +0 -83
  89. package/dist/postalCode.js +0 -136
  90. package/dist/postalCode.js.map +0 -1
  91. package/dist/renavam.d.ts +0 -75
  92. package/dist/renavam.js +0 -122
  93. package/dist/renavam.js.map +0 -1
  94. package/dist/tituloEleitor.d.ts +0 -93
  95. package/dist/tituloEleitor.js +0 -143
  96. package/dist/tituloEleitor.js.map +0 -1
  97. package/dist/utils-invalidListGenerator.test.d.ts +0 -1
  98. package/dist/utils-randomLetter.test.d.ts +0 -1
  99. package/dist/utils.d.ts +0 -131
  100. package/dist/utils.js +0 -189
  101. package/dist/utils.js.map +0 -1
  102. package/docs/Nota.COCAD.SUARA.2024.05.49.CNPJ.Alfanumerico-1.pdf +0 -0
  103. /package/dist/{cnh.test.d.ts → test/cnh.test.d.ts} +0 -0
  104. /package/dist/{cnpj.test.d.ts → test/cnpj.test.d.ts} +0 -0
  105. /package/dist/{cpf.test.d.ts → test/cpf.test.d.ts} +0 -0
  106. /package/dist/{index.test.d.ts → test/index.test.d.ts} +0 -0
  107. /package/dist/{judicialProcess.test.d.ts → test/judicialProcess.test.d.ts} +0 -0
  108. /package/dist/{nup17.test.d.ts → test/nup17.test.d.ts} +0 -0
  109. /package/dist/{pisPasep.test.d.ts → test/pisPasep.test.d.ts} +0 -0
  110. /package/dist/{postalCode.test.d.ts → test/postalCode.test.d.ts} +0 -0
  111. /package/dist/{renavam.test.d.ts → test/renavam.test.d.ts} +0 -0
  112. /package/dist/{tituloEleitor.test.d.ts → test/tituloEleitor.test.d.ts} +0 -0
  113. /package/dist/{utils-applyMask.test.d.ts → test/utils-applyMask.test.d.ts} +0 -0
  114. /package/dist/{utils-checkRepeatedSequence.test.d.ts → test/utils-checkRepeatedSequence.test.d.ts} +0 -0
  115. /package/dist/{utils-clearValue.test.d.ts → test/utils-clearValue.test.d.ts} +0 -0
  116. /package/dist/{utils-fakeNumber.test.d.ts → test/utils-fakeNumber.test.d.ts} +0 -0
  117. /package/dist/{utils-insertAtPosition.test.d.ts → test/utils-insertAtPosition.test.d.ts} +0 -0
  118. /package/dist/{utils-removeFromPosition.test.d.ts → test/utils-randomLetter.test.d.ts} +0 -0
  119. /package/dist/{utils-sumElementsByMultipliers.test.d.ts → test/utils-removeFromPosition.test.d.ts} +0 -0
  120. /package/dist/{utils-sumToDV.test.d.ts → test/utils-sumElementsByMultipliers.test.d.ts} +0 -0
@@ -0,0 +1,127 @@
1
+ import isNUP17, { dv, fake, mask, normalize, validate, validateOrFail } from '../src/nup17';
2
+ import * as _nup17 from '../src/nup17';
3
+
4
+ describe('NUP17', () => {
5
+ test.each([
6
+ // Masked
7
+ '23037.001380/2021-11',
8
+ '23037.001434/2021-48',
9
+ '23037.001321/2021-42',
10
+ // String
11
+ '23037001462202165',
12
+ '23037001537202116',
13
+ '23037001086202117',
14
+ ])('isNUP17() - Números válidos', (item) => {
15
+
16
+ expect(isNUP17(item)).toBeTruthy();
17
+ expect(_nup17.validate(item)).toBeTruthy();
18
+ });
19
+
20
+ test.each([
21
+ // Masked
22
+ '23037.001380/2021-11',
23
+ '23037.001434/2021-48',
24
+ '23037.001321/2021-42',
25
+ // String
26
+ '23037001462202165',
27
+ '23037001537202116',
28
+ '23037001086202117',
29
+ ])('validate() - Números válidos', (item) => {
30
+
31
+ expect(validate(item)).toBeTruthy();
32
+
33
+ });
34
+
35
+ test.each([
36
+ // Masked
37
+ '23037001380202112',
38
+ '23037001434202142',
39
+ '23037001462202162',
40
+ '23037001537202112',
41
+ ])('validate() - Números inválidos', (item) => {
42
+
43
+ expect(validate(item)).toBeFalsy();
44
+ });
45
+
46
+ test.each([
47
+ // Masked
48
+ '23037001380202112',
49
+ '23037001434202142',
50
+ '23037001462202162',
51
+ '23037001537202112',
52
+ ])('validateOrFail() - Números inválidos', (item) => {
53
+
54
+ expect(() => validateOrFail(item)).toThrow();
55
+ });
56
+
57
+ test.each([
58
+ // Números válidos com 1 caractere a mais no final
59
+ '230370014622021650',
60
+ '230370015372021160',
61
+ '230370010862021170',
62
+ ])('validateOrFail() - Números válidos com caracteres adicionais', (item) => {
63
+ expect(() => validateOrFail(item)).toThrow();
64
+ });
65
+
66
+ test('Parâmetro não informado', () => {
67
+ expect(isNUP17('')).toBeFalsy();
68
+ expect(validate('')).toBeFalsy();
69
+ expect(() => validateOrFail('')).toThrow();
70
+ expect(() => dv('')).toThrow();
71
+ });
72
+
73
+ test.each([...Array(5)])('fake() - Gera fakes sem máscara', () => {
74
+ const nup17 = fake();
75
+ expect(validate(nup17)).toBeTruthy();
76
+ expect(nup17).toHaveLength(17);
77
+ });
78
+
79
+ test.each([...Array(5)])('fake() - Gera fakes com máscara', () => {
80
+ const nup17 = fake(true);
81
+ expect(validate(nup17)).toBeTruthy();
82
+ expect(nup17).toHaveLength(20);
83
+ });
84
+
85
+ test.each([
86
+ { num: '23037.001380/2021', expected: '11' },
87
+ { num: '23037.001434/2021', expected: '48' },
88
+ { num: '23037.001321/2021', expected: '42' },
89
+ { num: '230370014622021', expected: '65' },
90
+ { num: '230370015372021', expected: '16' },
91
+ { num: '230370010862021', expected: '17' },
92
+ ])('dv() - Verificando se o DV gerado está correto', (item) => {
93
+ const calcDv = dv(item.num);
94
+
95
+ expect(calcDv).toBe(item.expected);
96
+ expect(typeof calcDv).toBe('string');
97
+ });
98
+
99
+ test.each([
100
+ { value: '23037001380202111', expected: '23037.001380/2021-11' },
101
+ { value: '23037001434202148', expected: '23037.001434/2021-48' },
102
+ { value: '23037001321202142', expected: '23037.001321/2021-42' },
103
+ { value: '23037001462202165', expected: '23037.001462/2021-65' },
104
+ { value: '23037001537202116', expected: '23037.001537/2021-16' },
105
+ { value: '23037001086202117', expected: '23037.001086/2021-17' },
106
+ ])('mask() - Testando se a máscara foi gerada corretamente', (item) => {
107
+ const masked = mask(item.value);
108
+
109
+ expect(masked).toBe(item.expected);
110
+ expect(masked).toHaveLength(20);
111
+ });
112
+
113
+ test.each([
114
+ { value: '23037.001380/2021-11', expected: '23037001380202111', },
115
+ { value: '23037.001434/2021-48', expected: '23037001434202148', },
116
+ { value: '23037.001321/2021-42', expected: '23037001321202142', },
117
+ { value: '23037.001462/2021-65', expected: '23037001462202165', },
118
+ { value: '23037.001537/2021-16', expected: '23037001537202116', },
119
+ { value: '23037.001086/2021-17', expected: '23037001086202117', },
120
+ ])('normalize() - Deve remover a máscara corretamente', (item) => {
121
+
122
+ const normalized = normalize(item.value);
123
+
124
+ expect(normalized).toBe(item.expected);
125
+ expect(normalized).toHaveLength(17);
126
+ });
127
+ });
@@ -0,0 +1,126 @@
1
+ import isPIS, { dv, fake, mask, normalize, validate, validateOrFail } from '../src/pisPasep';
2
+ import * as _pisPasep from '../src/pisPasep';
3
+
4
+ describe('PIS', () => {
5
+ test.each([
6
+ // string
7
+ '71282677380',
8
+ '23795126955',
9
+ // integer
10
+ 50012973803,
11
+ 27890141144,
12
+ // masked
13
+ '268.27649.96-0',
14
+ '613.01862.91-7',
15
+ ])('isPIS() - Números válidos', (item) => {
16
+ expect(isPIS(item)).toBeTruthy();
17
+ expect(_pisPasep.validate(item)).toBeTruthy();
18
+ });
19
+
20
+ test.each([
21
+ // string
22
+ '71282677380',
23
+ '23795126955',
24
+ // integer
25
+ 50012973803,
26
+ 27890141144,
27
+ // masked
28
+ '268.27649.96-0',
29
+ '613.01862.91-7',
30
+ ])('validate() - Números válidos', (item) => {
31
+
32
+ expect(validate(item)).toBeTruthy();
33
+ });
34
+
35
+ test.each([
36
+ // string
37
+ '712826773809',
38
+ '237951269559',
39
+ // integer
40
+ 500129738039,
41
+ 278901411449,
42
+ // masked
43
+ '268.27649.96-09',
44
+ '613.01862.91-79',
45
+ ])('validate() - Números válidos com caracteres adicionais', (item) => {
46
+
47
+ expect(validate(item)).toBeFalsy();
48
+ });
49
+
50
+ test.each([
51
+ '712.82677.38-2',
52
+ '237.95126.95-4',
53
+ '500.12973.80-1',
54
+ '278.90141.14-9',
55
+ '268.27649.96-2',
56
+ '613.01862.91-4',
57
+ '111.11111.11-1',
58
+ ])('validate() - Números inválidos', (item) => {
59
+ expect(validate(item)).toBeFalsy();
60
+ });
61
+
62
+ test.each([
63
+ '712.82677.38-2',
64
+ '237.95126.95-4',
65
+ '500.12973.80-1',
66
+ '278.90141.14-9',
67
+ '268.27649.96-2',
68
+ '613.01862.91-4',
69
+ '111.11111.11-1',
70
+ ])('validateOrFail() - Números inválidos', (item) => {
71
+ expect(() => validateOrFail(item)).toThrow();
72
+ });
73
+
74
+ test('Parâmetro não informado', () => {
75
+ expect(isPIS('')).toBeFalsy();
76
+ expect(validate('')).toBeFalsy();
77
+ expect(() => validateOrFail('')).toThrow();
78
+ expect(() => dv('')).toThrow();
79
+ });
80
+
81
+ test.each([...Array(5)])('fake() - Gera fakes sem máscara', () => {
82
+ const pis = fake();
83
+ expect(validate(pis)).toBeTruthy();
84
+ expect(pis).toHaveLength(11);
85
+ });
86
+
87
+ test.each([...Array(5)])('fake() - Gera fakes com máscara', () => {
88
+ const pis = fake(true);
89
+ expect(validate(pis)).toBeTruthy();
90
+ expect(pis).toHaveLength(14);
91
+
92
+ });
93
+
94
+ test.each([
95
+ { value: '7128267738', expected: '0' },
96
+ { value: 2379512695, expected: '5' },
97
+ { value: '5001297380', expected: '3' },
98
+ ])('dv() - Verificando se o DV gerado está correto', (item) => {
99
+ const calcDv = dv(item.value);
100
+ expect(calcDv).toBe(item.expected);
101
+ expect(typeof calcDv).toBe('string');
102
+
103
+ });
104
+
105
+ test.each([
106
+ { value: '71282677380', expected: '712.82677.38-0' },
107
+ { value: 23795126955, expected: '237.95126.95-5' },
108
+ { value: '50012973803', expected: '500.12973.80-3' },
109
+ ])('mask() - Testando se a máscara foi gerada corretamente', (item) => {
110
+ const masked = mask(item.value);
111
+
112
+ expect(masked).toBe(item.expected);
113
+ expect(masked).toHaveLength(14);
114
+ });
115
+
116
+ test.each([
117
+ { value: '712.82677.38-0', expected: '71282677380', },
118
+ { value: '237.95126.95-5', expected: '23795126955', },
119
+ { value: '500.12973.80-3', expected: '50012973803', },
120
+ ])('normalize() - Deve remover a máscara corretamente', (item) => {
121
+ const normalized = normalize(item.value);
122
+
123
+ expect(normalized).toBe(item.expected);
124
+ expect(normalized).toHaveLength(11);
125
+ });
126
+ });
@@ -0,0 +1,114 @@
1
+ import isPostalCode, { dv, fake, normalize, mask, validate, validateOrFail } from '../src/postalCode';
2
+ import * as _postalCode from '../src/postalCode';
3
+
4
+ describe('PostalCode', () => {
5
+ test.each([
6
+ 'PN718252423BR',
7
+ 'PO925539762BR',
8
+ 'JT194690698BR',
9
+ 'SV143851674BR',
10
+ 'RG727348650CN',
11
+ 'RY747622885CN',
12
+ 'RY728187035CN',
13
+ 'RH940629235CN',
14
+ 'RY686586175CN',
15
+ 'RY648001205CN',
16
+ 'UJ776469464CN',
17
+ 'LZ667841882CN',
18
+ 'RS737783818NL',
19
+ ])('isPostalCode() - Números válidos', (item) => {
20
+
21
+ expect(isPostalCode(item)).toBeTruthy();
22
+ expect(_postalCode.validate(item)).toBeTruthy();
23
+
24
+ });
25
+
26
+ test.each([
27
+ 'PN718252423BR',
28
+ 'PO925539762BR',
29
+ 'JT194690698BR',
30
+ 'SV143851674BR',
31
+ 'RG727348650CN',
32
+ 'RY747622885CN',
33
+ 'RY728187035CN',
34
+ 'RH940629235CN',
35
+ 'RY686586175CN',
36
+ 'RY648001205CN',
37
+ 'UJ776469464CN',
38
+ 'LZ667841882CN',
39
+ 'RS737783818NL',
40
+ ])('validate() - Números válidos', (item) => {
41
+
42
+ expect(validate(item)).toBeTruthy();
43
+
44
+ });
45
+
46
+ test.each([
47
+ 'PO925524762BR',
48
+ 'JT194624698BR',
49
+ 'SV143824674BR',
50
+ 'RG727324650CN',
51
+ 'RY747624885CN',
52
+ 'RY728114035CN',
53
+ ])('validate() - Números inválidos', (item) => {
54
+ expect(validate(item)).toBeFalsy();
55
+ });
56
+
57
+ test.each([
58
+ 'PO925524762BR',
59
+ 'JT194624698BR',
60
+ 'SV143824674BR',
61
+ 'RG727324650CN',
62
+ 'RY747624885CN',
63
+ 'RY728114035CN',
64
+ ])('validateOrFail() - Números inválidos', (item) => {
65
+ expect(() => validateOrFail(item)).toThrow();
66
+ });
67
+
68
+ test('Parâmetro não informado', () => {
69
+ expect(isPostalCode('')).toBeFalsy();
70
+ expect(validate('')).toBeFalsy();
71
+ expect(() => validateOrFail('')).toThrow();
72
+ expect(() => dv('')).toThrow();
73
+ });
74
+
75
+ test.each([...Array(5)])('fake() - Gera fakes corretamente', () => {
76
+ const postalCode = fake();
77
+
78
+ expect(validate(postalCode)).toBeTruthy();
79
+ expect(postalCode).toHaveLength(13);
80
+ });
81
+
82
+ test.each([
83
+ { value: 'PN718252423BR', expected: '3' },
84
+ { value: 'PO925539762BR', expected: '2' },
85
+ { value: 'JT194690698BR', expected: '8' },
86
+ ])('dv() - Verificando se o DV gerado está correto', (item) => {
87
+ const calcDv = dv(item.value);
88
+
89
+ expect(calcDv).toBe(item.expected);
90
+ expect(typeof calcDv).toBe('string');
91
+ });
92
+
93
+ test.each([
94
+ { value: 'pn718252423br', expected: 'PN718252423BR' },
95
+ { value: 'po925539762br', expected: 'PO925539762BR' },
96
+ { value: 'jt194690698br', expected: 'JT194690698BR' },
97
+ ])('normalize() - Deve normalizar o valor inicial corretamente', (item) => {
98
+ const normalized = normalize(item.value);
99
+
100
+ expect(normalized).toBe(item.expected);
101
+ expect(normalized).toHaveLength(13);
102
+ });
103
+
104
+ test.each([
105
+ { value: 'pn718252423br', expected: 'PN718252423BR' },
106
+ { value: 'po925539762br', expected: 'PO925539762BR' },
107
+ { value: 'jt194690698br', expected: 'JT194690698BR' },
108
+ ])('mask() - Deve normalizar o valor inicial corretamente', (item) => {
109
+ const masked = mask(item.value);
110
+
111
+ expect(masked).toBe(item.expected);
112
+ expect(masked).toHaveLength(13);
113
+ });
114
+ });
@@ -0,0 +1,77 @@
1
+ import isRenavam, { dv, fake, mask, normalize, validate, validateOrFail } from '../src/renavam';
2
+
3
+
4
+ describe('Renavam', () => {
5
+ test.each([
6
+ // valores com máscara
7
+ '1952519770-3',
8
+ '3394038959-9',
9
+ // valores como inteiros
10
+ 3607626105,
11
+ 64090416160,
12
+ // valores como string sem máscara
13
+ '80499688374',
14
+ '40650543741',
15
+ ])('isRenavam() - %s deve ser um renavam válido', (renavam) => {
16
+ expect(isRenavam(renavam)).toBeTruthy();
17
+ expect(validate(renavam)).toBeTruthy();
18
+ expect(validateOrFail(renavam)).toBeTruthy();
19
+ });
20
+
21
+ test.each(['19525227703', '33940229599', '03607226105', '64090226160', '80499228374'])(
22
+ 'validate() - Números inválidos',
23
+ (renavam) => {
24
+ expect(validate(renavam)).toBeFalsy();
25
+ expect(() => validateOrFail(renavam)).toThrow();
26
+ },
27
+ );
28
+
29
+ test('Parâmetro não informado', () => {
30
+ expect(isRenavam('')).toBeFalsy();
31
+ expect(validate('')).toBeFalsy();
32
+ expect(() => validateOrFail('')).toThrow();
33
+ expect(() => dv('')).toThrow();
34
+ });
35
+
36
+ test.each([...Array(5)])('fake() - Gera fakes sem máscara', () => {
37
+ const renavam = fake();
38
+ expect(validate(renavam)).toBeTruthy();
39
+ expect(renavam).toHaveLength(11);
40
+ });
41
+
42
+ test.each([...Array(5)])('fake() - Gera fakes com máscara', () => {
43
+ const renavam = fake(true);
44
+ expect(validate(renavam)).toBeTruthy();
45
+ expect(renavam).toHaveLength(12);
46
+ });
47
+
48
+ test.each([
49
+ { value: '1952519770', expected: '3' },
50
+ { value: 952519770, expected: '6' },
51
+ { value: 52519770, expected: '2' },
52
+ ])('renavam.dv() - Verificando se o DV gerado está correto', (item) => {
53
+ const calcDv = dv(item.value);
54
+ expect(calcDv).toBe(item.expected);
55
+ expect(typeof calcDv).toBe('string');
56
+ });
57
+
58
+ test.each([
59
+ { value: '19525197703', expected: '1952519770-3' },
60
+ { value: 9525197703, expected: '0952519770-3' },
61
+ { value: 525197703, expected: '0052519770-3' },
62
+ ])('mask() - Testando se a máscara foi gerada corretamente', (item) => {
63
+ const masked = mask(item.value);
64
+ expect(masked).toBe(item.expected);
65
+ expect(masked).toHaveLength(12);
66
+ });
67
+
68
+ test.each([
69
+ { value: '1952519770-3', expected: '19525197703', },
70
+ { value: '0952519770-3', expected: '09525197703', },
71
+ { value: '0052519770-3', expected: '00525197703', },
72
+ ])('normalize() - Deve remover a máscara corretamente', (item) => {
73
+ const normalized = normalize(item.value);
74
+ expect(normalized).toBe(item.expected);
75
+ expect(normalized).toHaveLength(11);
76
+ });
77
+ });
@@ -0,0 +1,110 @@
1
+ import isTituloEleitor, { dv, fake, mask, normalize, validate, validateOrFail } from '../src/tituloEleitor';
2
+
3
+ describe('TituloEleitor', () => {
4
+ test.each([
5
+ // masked
6
+ '1023.8501.0671',
7
+ '8365 7137 1619',
8
+ // string
9
+ '153036161686',
10
+ '525028881694',
11
+ // integer
12
+ 13132331643,
13
+ 1122221333,
14
+ ])('isTituloEleitor() - Números válidos', (item) => {
15
+ expect(isTituloEleitor(item)).toBeTruthy();
16
+ expect(validate(item)).toBeTruthy();
17
+ });
18
+
19
+ test('Deve rejeitar quando a UF for maior que 28', () => {
20
+ const titulo = '1122 3344 2992';
21
+ expect(validate(titulo)).toBeFalsy();
22
+ // expect(() => validateOrFail(titulo)).toThrow()
23
+ });
24
+
25
+ test.each([
26
+ '836531371619',
27
+ '743620641660',
28
+ '153016161686',
29
+ '525078881694',
30
+ '026367681660',
31
+ '558647441635',
32
+ '222222222222',
33
+ ])('validate() - Números inválidos', (item) => {
34
+ expect(validate(item)).toBeFalsy();
35
+ });
36
+
37
+ test.each([
38
+ '836531371619',
39
+ '743620641660',
40
+ '153016161686',
41
+ '525078881694',
42
+ '026367681660',
43
+ '558647441635',
44
+ '222222222222',
45
+ ])('validateOrFail() - Números inválidos', (item) => {
46
+ expect(() => validateOrFail(item)).toThrow();
47
+ });
48
+
49
+ test('Parâmetro não informado', () => {
50
+ expect(isTituloEleitor('')).toBeFalsy();
51
+ expect(validate('')).toBeFalsy();
52
+ expect(() => validateOrFail('')).toThrow();
53
+ expect(() => dv('')).toThrow();
54
+ });
55
+
56
+ test.each([...Array(5)])('fake() - Gera fakes sem máscara', () => {
57
+ const tituloEleitor = fake();
58
+
59
+ expect(validate(tituloEleitor)).toBeTruthy();
60
+ expect(tituloEleitor).toHaveLength(12);
61
+ });
62
+
63
+ test.each([...Array(5)])('fake() - Gera fakes com máscara', () => {
64
+ const tituloEleitor = fake(true);
65
+
66
+ expect(validate(tituloEleitor)).toBeTruthy();
67
+ expect(tituloEleitor).toHaveLength(14);
68
+ });
69
+
70
+ test.each([
71
+ { value: '1023850106', expected: '71' },
72
+ { value: '8365713716', expected: '19' },
73
+ { value: '7436506416', expected: '60' },
74
+ { value: '0011222213', expected: '33' },
75
+ ])('dv() - Verificando se o DV gerado está correto', (item) => {
76
+ const calcDv = dv(item.value);
77
+
78
+ expect(calcDv).toBe(item.expected);
79
+ expect(typeof calcDv).toBe('string');
80
+ });
81
+
82
+ test.each([
83
+ { value: '102385010671', expected: '1023.8501.0671' },
84
+ { value: '836571371619', expected: '8365.7137.1619' },
85
+ { value: '743650641660', expected: '7436.5064.1660' },
86
+ { value: 11122223360, expected: '0111.2222.3360' },
87
+ { value: 1122223336, expected: '0011.2222.3336' },
88
+ ]
89
+
90
+ )('mask() - Testando se a máscara foi gerada corretamente', (item) => {
91
+ const masked = mask(item.value);
92
+
93
+ expect(masked).toBe(item.expected);
94
+ expect(masked).toHaveLength(14);
95
+ });
96
+
97
+ test.each([
98
+ { value: '1023.8501.0671', expected: '102385010671', },
99
+ { value: '8365.7137.1619', expected: '836571371619', },
100
+ { value: '7436.5064.1660', expected: '743650641660', },
101
+ { value: '0111.2222.3360', expected: '011122223360', },
102
+ { value: '0011.2222.3336', expected: '001122223336', },
103
+ ]
104
+ )('normalize() - Deve remover a máscara corretamente', (item) => {
105
+ const normalized = normalize(item.value);
106
+
107
+ expect(normalized).toBe(item.expected);
108
+ expect(normalized).toHaveLength(12);
109
+ });
110
+ });
@@ -0,0 +1,13 @@
1
+ import { applyMask } from '../src/utils';
2
+
3
+ describe('applyMask()', () => {
4
+ test.each([
5
+ { value: '123456', mask: '00000-0', expected: '12345-6' },
6
+ { value: '12345', mask: '00000-0', expected: '01234-5' },
7
+ { value: '123456789', mask: '00000-0', expected: '12345-6' },
8
+ { value: 123456789, mask: '00000-0', expected: '12345-6' },
9
+ ])('Máscara deve ser aplicada com o valor e tamanho correto', (item) => {
10
+ expect(item.expected.length).toBe(item.mask.length);
11
+ expect(applyMask(item.value, item.mask)).toBe(item.expected);
12
+ });
13
+ });
@@ -0,0 +1,17 @@
1
+ import { checkRepeatedSequence } from "../src/utils";
2
+
3
+ test.each([
4
+ '11111111',
5
+ '1111',
6
+ ])('testa se %s tem todos os valores iguais', (value) => {
7
+ expect(checkRepeatedSequence(value)).toBeTruthy();
8
+ });
9
+
10
+ test.each([
11
+ '12345678',
12
+ '11111112',
13
+ '1234',
14
+ '2111',
15
+ ])('testa se %s não tem todos os valores iguais', (value) => {
16
+ expect(checkRepeatedSequence(value)).toBeFalsy();
17
+ });
@@ -0,0 +1,69 @@
1
+ import { clearValue } from '../src/utils';
2
+
3
+ describe('clearValue()', () => {
4
+ test.each([
5
+ { value: 1234567890, size: 10, expected: '1234567890' },
6
+ { value: '1234567890', size: 10, expected: '1234567890' },
7
+ { value: '12.345.678-90', size: 10, expected: '1234567890' },
8
+ { value: '1234 5678 9012', size: 10, expected: '123456789012' },
9
+ ]
10
+ )('Deve limpar o valor - Strings do Mesmo tamanho', (item) => {
11
+ expect(clearValue(item.value, item.size)).toBe(item.expected);
12
+ });
13
+
14
+ test.each([
15
+ { value: 1234567890123, size: null, expected: '1234567890123' },
16
+ { value: '4567890', size: null, expected: '4567890' },
17
+ { value: '345.678-90', size: null, expected: '34567890' },
18
+ ])('Deve limpar os caracteres não numéricos sem verificar o tamanho da string', (item) => {
19
+ expect(clearValue(item.value, item.size)).toBe(item.expected);
20
+ });
21
+
22
+ test.each([
23
+ { value: 1234, size: 10, expected: '0000001234' },
24
+ { value: '1234', size: 10, expected: '0000001234' },
25
+ { value: '123-4', size: 10, expected: '0000001234' },
26
+ ])('Deve limpar o valor os caracteres não numéricos e completar com zeros à esquerda', (item) => {
27
+ expect(clearValue(item.value, item.size, { fillZerosAtLeft: true })).toBe(item.expected);
28
+ });
29
+
30
+ // Não completa com zeros
31
+ expect(clearValue(1234, 6, { fillZerosAtLeft: false })).toBe('1234');
32
+ expect(clearValue('1234', 6, { fillZerosAtLeft: false })).toBe('1234');
33
+
34
+ test.each([
35
+ { value: 123456789, size: 4, expected: '1234' },
36
+ { value: '1234567890', size: 4, expected: '1234' },
37
+ { value: '12.345.678-90', size: 4, expected: '1234' },
38
+ ])('Deve limpar o valor os caracteres não numéricos e remover os caracteres que passarem de size', (item) => {
39
+ expect(clearValue(item.value, item.size, { trimAtRight: true })).toBe(item.expected);
40
+ });
41
+
42
+ // Não corta à direita
43
+ expect(clearValue(12345678, 6, { trimAtRight: false })).toBe('12345678');
44
+ expect(clearValue('12345678', 6, { trimAtRight: false })).toBe('12345678');
45
+
46
+
47
+
48
+ test('Deve retornar erro se receber um valor vazio', () => {
49
+ expect(clearValue('1112', 4, { rejectEmpty: true })).toBe('1112');
50
+ expect(() => clearValue('', null, { rejectEmpty: true })).toThrow();
51
+ });
52
+
53
+ test('Deve retornar erro se receber uma sequência de números iguais', () => {
54
+ expect(clearValue('1112', 4, { rejectEqualSequence: true })).toBe('1112');
55
+ expect(() => clearValue('1111', 4, { rejectEqualSequence: true })).toThrow();
56
+ });
57
+
58
+ test('Deve retornar erro se receber um valor com mais caracteres que o máximo', () => {
59
+ expect(clearValue('1234', 4, { rejectHigherLength: true })).toBe('1234');
60
+ expect(() => clearValue('12345', 4, { rejectHigherLength: true })).toThrow();
61
+ });
62
+
63
+ test('Deve retornar o mesmo valor inicial', () => {
64
+ expect(clearValue(1234, 4)).toBe('1234');
65
+ expect(clearValue('1234', 4)).toBe('1234');
66
+ expect(clearValue(1234, 4, {})).toBe('1234');
67
+ expect(clearValue('1234', 4, {})).toBe('1234');
68
+ });
69
+ });
@@ -0,0 +1,28 @@
1
+ import { fakeNumber } from '../src/utils';
2
+
3
+ describe('fakeNumber()', () => {
4
+ test.each([...Array(10)])('forceLength = true', () => {
5
+ const num = fakeNumber(4, true);
6
+
7
+ expect(num).toHaveLength(4);
8
+ expect(typeof num).toBe('string');
9
+ expect(num).toMatch(/^[\d]+$/);
10
+ });
11
+
12
+ test.each([...Array(10)])('forceLength = false', () => {
13
+ const num = fakeNumber(4);
14
+
15
+ expect(+num).toBeLessThanOrEqual(9999);
16
+ expect(+num).toBeGreaterThanOrEqual(0);
17
+ expect(typeof num).toBe('string');
18
+ });
19
+
20
+
21
+ test.each([...Array(10)])('isAlpha = true', () => {
22
+ const num = fakeNumber(4, true, true);
23
+
24
+ expect(num).toHaveLength(4);
25
+ expect(typeof num).toBe('string');
26
+ expect(num).toMatch(/^[0-9A-Z]+$/);
27
+ });
28
+ });