validation-br 1.5.1 → 2.0.0-next-1

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 (198) hide show
  1. package/.prettierrc +9 -0
  2. package/dist/jest.config.d.ts +8 -0
  3. package/dist/jest.config.d.ts.map +1 -0
  4. package/dist/jest.config.js +154 -0
  5. package/dist/jest.config.js.map +1 -0
  6. package/dist/test/_helpers/array_random.spec.d.ts +2 -0
  7. package/dist/test/_helpers/array_random.spec.d.ts.map +1 -0
  8. package/dist/test/_helpers/array_random.spec.js +13 -0
  9. package/dist/test/_helpers/array_random.spec.js.map +1 -0
  10. package/dist/test/_helpers/crc.spec.d.ts +2 -0
  11. package/dist/test/_helpers/crc.spec.d.ts.map +1 -0
  12. package/dist/test/_helpers/crc.spec.js +11 -0
  13. package/dist/test/_helpers/crc.spec.js.map +1 -0
  14. package/dist/test/carplate.spec.d.ts +2 -0
  15. package/dist/test/carplate.spec.d.ts.map +1 -0
  16. package/dist/test/carplate.spec.js +141 -0
  17. package/dist/test/carplate.spec.js.map +1 -0
  18. package/dist/test/cnh.spec.d.ts +2 -0
  19. package/dist/test/cnh.spec.d.ts.map +1 -0
  20. package/dist/test/cnh.spec.js +60 -0
  21. package/dist/test/cnh.spec.js.map +1 -0
  22. package/dist/test/cnpj.spec.d.ts +2 -0
  23. package/dist/test/cnpj.spec.d.ts.map +1 -0
  24. package/dist/test/cnpj.spec.js +105 -0
  25. package/dist/test/cnpj.spec.js.map +1 -0
  26. package/dist/test/cpf.spec.d.ts +2 -0
  27. package/dist/test/cpf.spec.d.ts.map +1 -0
  28. package/dist/test/cpf.spec.js +66 -0
  29. package/dist/test/cpf.spec.js.map +1 -0
  30. package/dist/test/index.test.d.ts +2 -0
  31. package/dist/test/index.test.d.ts.map +1 -0
  32. package/dist/test/index.test.js +77 -0
  33. package/dist/test/index.test.js.map +1 -0
  34. package/dist/test/judicial-process.spec.d.ts +2 -0
  35. package/dist/test/judicial-process.spec.d.ts.map +1 -0
  36. package/dist/test/judicial-process.spec.js +101 -0
  37. package/dist/test/judicial-process.spec.js.map +1 -0
  38. package/dist/test/nup17.spec.d.ts +2 -0
  39. package/dist/test/nup17.spec.d.ts.map +1 -0
  40. package/dist/test/nup17.spec.js +70 -0
  41. package/dist/test/nup17.spec.js.map +1 -0
  42. package/dist/test/phone.spec.d.ts +2 -0
  43. package/dist/test/phone.spec.d.ts.map +1 -0
  44. package/dist/test/phone.spec.js +67 -0
  45. package/dist/test/phone.spec.js.map +1 -0
  46. package/dist/test/pis-pasep.spec.d.ts +2 -0
  47. package/dist/test/pis-pasep.spec.d.ts.map +1 -0
  48. package/dist/test/pis-pasep.spec.js +65 -0
  49. package/dist/test/pis-pasep.spec.js.map +1 -0
  50. package/dist/test/pix-copy-paste.spec.d.ts +2 -0
  51. package/dist/test/pix-copy-paste.spec.d.ts.map +1 -0
  52. package/dist/test/pix-copy-paste.spec.js +31 -0
  53. package/dist/test/pix-copy-paste.spec.js.map +1 -0
  54. package/dist/test/pix-key.spec.d.ts +2 -0
  55. package/dist/test/pix-key.spec.d.ts.map +1 -0
  56. package/dist/test/pix-key.spec.js +36 -0
  57. package/dist/test/pix-key.spec.js.map +1 -0
  58. package/dist/test/postal-track-code.test.d.ts +2 -0
  59. package/dist/test/postal-track-code.test.d.ts.map +1 -0
  60. package/dist/test/postal-track-code.test.js +75 -0
  61. package/dist/test/postal-track-code.test.js.map +1 -0
  62. package/dist/test/renavam.spec.d.ts +2 -0
  63. package/dist/test/renavam.spec.d.ts.map +1 -0
  64. package/dist/test/renavam.spec.js +63 -0
  65. package/dist/test/renavam.spec.js.map +1 -0
  66. package/dist/test/tituloEleitor.spec.d.ts +2 -0
  67. package/dist/test/tituloEleitor.spec.d.ts.map +1 -0
  68. package/dist/test/tituloEleitor.spec.js +68 -0
  69. package/dist/test/tituloEleitor.spec.js.map +1 -0
  70. package/dist/test/utils-applyMask.test.d.ts +2 -0
  71. package/dist/test/utils-applyMask.test.d.ts.map +1 -0
  72. package/dist/test/utils-applyMask.test.js +18 -0
  73. package/dist/test/utils-applyMask.test.js.map +1 -0
  74. package/dist/test/utils-checkRepeatedSequence.test.d.ts +2 -0
  75. package/dist/test/utils-checkRepeatedSequence.test.d.ts.map +1 -0
  76. package/dist/test/utils-checkRepeatedSequence.test.js +18 -0
  77. package/dist/test/utils-checkRepeatedSequence.test.js.map +1 -0
  78. package/dist/test/utils-clearValue.test.d.ts +2 -0
  79. package/dist/test/utils-clearValue.test.d.ts.map +1 -0
  80. package/dist/test/utils-clearValue.test.js +74 -0
  81. package/dist/test/utils-clearValue.test.js.map +1 -0
  82. package/dist/test/utils-fakeNumber.test.d.ts +2 -0
  83. package/dist/test/utils-fakeNumber.test.d.ts.map +1 -0
  84. package/dist/test/utils-fakeNumber.test.js +24 -0
  85. package/dist/test/utils-fakeNumber.test.js.map +1 -0
  86. package/dist/test/utils-insertAtPosition.test.d.ts +2 -0
  87. package/dist/test/utils-insertAtPosition.test.d.ts.map +1 -0
  88. package/dist/test/utils-insertAtPosition.test.js +16 -0
  89. package/dist/test/utils-insertAtPosition.test.js.map +1 -0
  90. package/dist/test/utils-randomLetter.test.d.ts +2 -0
  91. package/dist/test/utils-randomLetter.test.d.ts.map +1 -0
  92. package/dist/test/utils-randomLetter.test.js +14 -0
  93. package/dist/test/utils-randomLetter.test.js.map +1 -0
  94. package/dist/test/utils-removeFromPosition.test.d.ts +2 -0
  95. package/dist/test/utils-removeFromPosition.test.d.ts.map +1 -0
  96. package/dist/test/utils-removeFromPosition.test.js +16 -0
  97. package/dist/test/utils-removeFromPosition.test.js.map +1 -0
  98. package/dist/test/utils-sumElementsByMultipliers.test.d.ts +2 -0
  99. package/dist/test/utils-sumElementsByMultipliers.test.d.ts.map +1 -0
  100. package/dist/test/utils-sumElementsByMultipliers.test.js +23 -0
  101. package/dist/test/utils-sumElementsByMultipliers.test.js.map +1 -0
  102. package/dist/test/utils-sumToDV.test.d.ts +2 -0
  103. package/dist/test/utils-sumToDV.test.d.ts.map +1 -0
  104. package/dist/test/utils-sumToDV.test.js +17 -0
  105. package/dist/test/utils-sumToDV.test.js.map +1 -0
  106. package/dist/tsconfig.tsbuildinfo +1 -0
  107. package/eslint.config.mjs +11 -0
  108. package/jest.config.ts +210 -0
  109. package/package.json +4 -3
  110. package/readme.md +3 -2
  111. package/test/_helpers/array_random.spec.ts +12 -0
  112. package/test/_helpers/crc.spec.ts +13 -0
  113. package/test/carplate.spec.ts +161 -0
  114. package/test/cnh.spec.ts +71 -0
  115. package/test/cnpj.spec.ts +127 -0
  116. package/test/cpf.spec.ts +76 -0
  117. package/test/index.test.ts +112 -0
  118. package/test/judicial-process.spec.ts +131 -0
  119. package/test/nup17.spec.ts +79 -0
  120. package/test/phone.spec.ts +75 -0
  121. package/test/pis-pasep.spec.ts +73 -0
  122. package/test/pix-copy-paste.spec.ts +37 -0
  123. package/test/pix-key.spec.ts +41 -0
  124. package/test/postal-track-code.test.ts +83 -0
  125. package/test/renavam.spec.ts +71 -0
  126. package/test/tituloEleitor.spec.ts +72 -0
  127. package/test/utils-applyMask.test.ts +17 -0
  128. package/test/utils-checkRepeatedSequence.test.ts +17 -0
  129. package/test/utils-clearValue.test.ts +85 -0
  130. package/test/utils-fakeNumber.test.ts +28 -0
  131. package/test/utils-insertAtPosition.test.ts +15 -0
  132. package/test/utils-randomLetter.test.ts +14 -0
  133. package/test/utils-removeFromPosition.test.ts +15 -0
  134. package/test/utils-sumElementsByMultipliers.test.ts +24 -0
  135. package/test/utils-sumToDV.test.ts +16 -0
  136. package/todo.md +18 -0
  137. package/tsconfig.json +103 -23
  138. package/.github/workflows/test.yml +0 -39
  139. package/.prettierrc.js +0 -7
  140. package/dist/cnh.d.ts +0 -91
  141. package/dist/cnh.js +0 -139
  142. package/dist/cnh.js.map +0 -1
  143. package/dist/cnh.test.d.ts +0 -1
  144. package/dist/cnpj.d.ts +0 -87
  145. package/dist/cnpj.js +0 -151
  146. package/dist/cnpj.js.map +0 -1
  147. package/dist/cnpj.test.d.ts +0 -1
  148. package/dist/cpf.d.ts +0 -99
  149. package/dist/cpf.js +0 -147
  150. package/dist/cpf.js.map +0 -1
  151. package/dist/cpf.test.d.ts +0 -1
  152. package/dist/data/ValidationBRError.d.ts +0 -6
  153. package/dist/data/ValidationBRError.js +0 -10
  154. package/dist/data/ValidationBRError.js.map +0 -1
  155. package/dist/index.d.ts +0 -21
  156. package/dist/index.js +0 -42
  157. package/dist/index.js.map +0 -1
  158. package/dist/index.test.d.ts +0 -1
  159. package/dist/judicialProcess.d.ts +0 -126
  160. package/dist/judicialProcess.js +0 -190
  161. package/dist/judicialProcess.js.map +0 -1
  162. package/dist/judicialProcess.test.d.ts +0 -1
  163. package/dist/nup17.d.ts +0 -102
  164. package/dist/nup17.js +0 -155
  165. package/dist/nup17.js.map +0 -1
  166. package/dist/nup17.test.d.ts +0 -1
  167. package/dist/pisPasep.d.ts +0 -81
  168. package/dist/pisPasep.js +0 -126
  169. package/dist/pisPasep.js.map +0 -1
  170. package/dist/pisPasep.test.d.ts +0 -1
  171. package/dist/postalCode.d.ts +0 -83
  172. package/dist/postalCode.js +0 -136
  173. package/dist/postalCode.js.map +0 -1
  174. package/dist/postalCode.test.d.ts +0 -1
  175. package/dist/renavam.d.ts +0 -75
  176. package/dist/renavam.js +0 -122
  177. package/dist/renavam.js.map +0 -1
  178. package/dist/renavam.test.d.ts +0 -1
  179. package/dist/tituloEleitor.d.ts +0 -93
  180. package/dist/tituloEleitor.js +0 -143
  181. package/dist/tituloEleitor.js.map +0 -1
  182. package/dist/tituloEleitor.test.d.ts +0 -1
  183. package/dist/utils-applyMask.test.d.ts +0 -1
  184. package/dist/utils-checkRepeatedSequence.test.d.ts +0 -1
  185. package/dist/utils-clearValue.test.d.ts +0 -1
  186. package/dist/utils-fakeNumber.test.d.ts +0 -1
  187. package/dist/utils-insertAtPosition.test.d.ts +0 -1
  188. package/dist/utils-invalidListGenerator.test.d.ts +0 -1
  189. package/dist/utils-randomLetter.test.d.ts +0 -1
  190. package/dist/utils-removeFromPosition.test.d.ts +0 -1
  191. package/dist/utils-sumElementsByMultipliers.test.d.ts +0 -1
  192. package/dist/utils-sumToDV.test.d.ts +0 -1
  193. package/dist/utils.d.ts +0 -131
  194. package/dist/utils.js +0 -189
  195. package/dist/utils.js.map +0 -1
  196. package/docs/Nota.COCAD.SUARA.2024.05.49.CNPJ.Alfanumerico-1.pdf +0 -0
  197. package/eslint.config.js +0 -82
  198. package/jest.config.js +0 -11
@@ -0,0 +1,37 @@
1
+ // pix usado pelo 10 pila.
2
+
3
+ import { PixCopyPaste } from '../src/pix-copy-paste';
4
+
5
+ // esse pix é um pix automatico
6
+ const pixStone = `00020101021226820014br.gov.bcb.pix2560pix.stone.com.br/pix/v2/b411f5c8-e97f-4a18-af0e-fc66491748d7520400005303986540510.005802BR5925DIOGO DA SILVA SANTOS LTD6014RIO DE JANEIRO622905251e3afd7926983f8ffe086cdc16304FF60`;
7
+ const pixManual = `00020126550014BR.GOV.BCB.PIX0123alexandrepato@gmail.com0206almoco5204000053039865406100.005802BR5914Alexandre Pato6009Ipanguacu61085950800062490511PIXJS76657250300017BR.GOV.BCB.BRCODE01051.0.0630455CF`;
8
+
9
+ const cases = [
10
+ pixStone,
11
+ pixManual
12
+ ]
13
+
14
+
15
+ describe('PixCopyPaste', () => {
16
+ describe('constructor', () => {
17
+ test.each(cases)('deve estar definido', (input) => {
18
+ const pix = new PixCopyPaste(input);
19
+ expect(pix).toBeDefined();
20
+ });
21
+
22
+ test('deve lançar um erro ao injetar um caractere na terceira posição', () => {
23
+ const copyPaste = pixStone.slice(0, 4) + 'D' + pixStone.slice(4);
24
+ expect(()=>new PixCopyPaste(copyPaste)).toThrow()
25
+ });
26
+ });
27
+
28
+ describe('parse', () => {
29
+ test.each(cases)('testa o parse', (input) => {
30
+ const parse = PixCopyPaste.parse(input);
31
+
32
+ expect(parse).toBeDefined();
33
+ expect(Array.isArray(parse)).toBeTruthy();
34
+ });
35
+ });
36
+ });
37
+
@@ -0,0 +1,41 @@
1
+ import { PixKey, PixKeys } from '../src/pix-key';
2
+
3
+ describe('Pix', () => {
4
+ describe('constructor', () => {
5
+ test('deve estar definido do tipo e-mail', () => {
6
+ const key = new PixKey('klawdyo@gmail.com');
7
+ expect(key).toBeDefined();
8
+ expect(key.type).toBe(PixKeys.email);
9
+ });
10
+
11
+ test('deve estar definido do tipo cpf', () => {
12
+ const key = new PixKey('004.129.620-63');
13
+ expect(key).toBeDefined();
14
+ expect(key.type).toBe(PixKeys.cpf);
15
+ });
16
+
17
+ test('deve estar definido do tipo cnpj', () => {
18
+ const key = new PixKey('41356581000186');
19
+ expect(key).toBeDefined();
20
+ expect(key.type).toBe(PixKeys.cnpj);
21
+ });
22
+
23
+ test('deve estar definido do tipo aleatória', () => {
24
+ const key = new PixKey('01234567-0123-4567-8901-234567890123');
25
+ expect(key).toBeDefined();
26
+ expect(key.type).toBe(PixKeys.evp);
27
+ });
28
+
29
+ test('deve estar definido do tipo phone', () => {
30
+ const key = new PixKey('+5584987654321');
31
+ expect(key).toBeDefined();
32
+ expect(key.type).toBe(PixKeys.phone);
33
+ });
34
+
35
+ test('deve falhar ao receber um telefone inválido', () => {
36
+ expect(() => new PixKey('+55849876')).toThrow()
37
+ });
38
+
39
+
40
+ });
41
+ });
@@ -0,0 +1,83 @@
1
+ import { PostalTrackCode } from '../src/postal-track-code';
2
+
3
+ describe('PostalTrackCode', () => {
4
+ describe('constructor', () => {
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
+ ])('%s deve estar definido', (input) => {
20
+ expect(new PostalTrackCode(input)).toBeDefined();
21
+ });
22
+
23
+ test.each([
24
+ 'PO925524762BR', // dv inválido
25
+ 'JT194624698BR', // dv inválido
26
+ 'SV143824674BR', // dv inválido
27
+ 'RG727324650CN', // dv inválido
28
+ 'RY747624885CN', // dv inválido
29
+ 'RY728114035CN', // dv inválido
30
+ 'RY728114035', // sem letras no final
31
+ 'RY728114035N', // 1 letra no final
32
+ 'RS737783818NLL', // 3 letras no final
33
+ '737783818NL', // sem letra no começo
34
+ 'S737783818NL', // só 1 letra no começo
35
+ 'ARS737783818NL', // 3 letras no começo
36
+ 'RS73778381NL', // numero a menos
37
+ null,
38
+ undefined,
39
+ ])('%s deve lançar erro', (input) => {
40
+ expect(() => new PostalTrackCode(input as any)).toThrow();
41
+ });
42
+ });
43
+
44
+ describe('mask', () => {
45
+ test.each([
46
+ { num: 'pn718252423br', expected: 'PN718252423BR' },
47
+ { num: 'po925539762br', expected: 'PO925539762BR' },
48
+ { num: 'jt194690698br', expected: 'JT194690698BR' },
49
+ ])('Deve aplicar a máscara corretamente', (item) => {
50
+ const masked = new PostalTrackCode(item.num).mask();
51
+
52
+ expect(masked).toBe(item.expected);
53
+ expect(masked).toMatch(/^[A-Z]{2}\d{9}[A-Z]{2}$/);
54
+ });
55
+ });
56
+
57
+ describe('fake', () => {
58
+ test.each([...Array(5)])('deve gerar fakes válidos', () => {
59
+ const result = PostalTrackCode.fake();
60
+ expect(result).toBeDefined();
61
+ });
62
+ });
63
+
64
+ describe('checksum', () => {
65
+ test.each([
66
+ { num: '71825242', expected: '3' },
67
+ { num: '92553976', expected: '2' },
68
+ { num: '19469069', expected: '8' },
69
+ ])('Deve calcular o Dv corretamente', (item) => {
70
+ const calcDv = PostalTrackCode.checksum(item.num);
71
+
72
+ expect(calcDv).toBe(item.expected);
73
+ expect(typeof calcDv).toBe('string');
74
+ });
75
+
76
+ test.each(['PN718252423BR', '925539762BR', 'JT194690698'])(
77
+ 'Deve lançar erro',
78
+ (item) => {
79
+ expect(() => PostalTrackCode.checksum(item)).toThrow();
80
+ }
81
+ );
82
+ });
83
+ });
@@ -0,0 +1,71 @@
1
+ import { Renavam } from '../src/renavam';
2
+
3
+ describe('Renavam', () => {
4
+ describe('constructor', () => {
5
+ test.each([
6
+ '1952519770-3',
7
+ '3394038959-9',
8
+ '03607626105',
9
+ '64090416160',
10
+ '80499688374',
11
+ '40650543741',
12
+ ])('deve estar definido', (input) => {
13
+ expect(new Renavam(input)).toBeDefined();
14
+ });
15
+
16
+ test.each([
17
+ '19525227703',
18
+ '33940229599',
19
+ '03607226105',
20
+ '64090226160',
21
+ '80499228374',
22
+ '', // vazio
23
+ '012345678900', // caracteres a mais
24
+ '12345678', // caracteres a menos
25
+ null,
26
+ undefined,
27
+ ])('deve lançar erro', (input) => {
28
+ expect(() => new Renavam(input as any)).toThrow();
29
+ });
30
+ });
31
+
32
+ describe('mask', () => {
33
+ test.each([
34
+ { num: '03607626105', expected: '0360762610-5' },
35
+ { num: '64090416160', expected: '6409041616-0' },
36
+ { num: '80499688374', expected: '8049968837-4' },
37
+ ])('mask() - Testando se a máscara foi gerada corretamente', (item) => {
38
+ const masked = new Renavam(item.num).mask();
39
+
40
+ expect(masked).toBe(item.expected);
41
+ expect(masked).toMatch(/^\d{10}-\d{1}$/);
42
+ });
43
+ });
44
+
45
+ describe('fake', () => {
46
+ test.each([...Array(5)])('fake() - Gera fakes sem máscara', () => {
47
+ const result = Renavam.fake();
48
+ expect(result).toBeDefined();
49
+ });
50
+ });
51
+
52
+ describe('checksum', () => {
53
+ test.each([
54
+ { num: '1952519770', expected: '3' },
55
+ { num: '0952519770', expected: '6' },
56
+ { num: '0052519770', expected: '2' },
57
+ ])('Deve gerar o dv correto', (item) => {
58
+ const calcDv = Renavam.checksum(item.num);
59
+
60
+ expect(calcDv).toBe(item.expected);
61
+ expect(typeof calcDv).toBe('string');
62
+ });
63
+
64
+ test.each(['00525197701', '0052519770-1', '005251977'])(
65
+ 'deve lançar erro de dv',
66
+ (item) => {
67
+ expect(() => Renavam.checksum(item)).toThrow();
68
+ }
69
+ );
70
+ });
71
+ });
@@ -0,0 +1,72 @@
1
+ import { TituloEleitor } from "../src/tituloEleitor";
2
+
3
+ describe('TituloEleitor', () => {
4
+ describe('constructor', () => {
5
+ test.each([
6
+ // masked
7
+ '1023.8501.0671',
8
+ '8365.7137.1619',
9
+ // string
10
+ '153036161686',
11
+ '525028881694',
12
+ // integer
13
+ '011122223360',
14
+ '001122223336',
15
+ ])('deve estar definido', (input) => {
16
+ expect(new TituloEleitor(input)).toBeDefined();
17
+ });
18
+
19
+ test.each([
20
+ '836531371619',
21
+ '743620641660',
22
+ '153016161686',
23
+ '525078881694',
24
+ '026367681660',
25
+ '558647441635',
26
+ '222222222222',
27
+ '', // vazio
28
+ '012345678900', // caracteres a mais
29
+ '12345678', // caracteres a menos
30
+ null,
31
+ undefined,
32
+ ])('deve lançar erro', (input) => {
33
+ expect(() => new TituloEleitor(input as any)).toThrow();
34
+ });
35
+ });
36
+
37
+ describe('mask', () => {
38
+ test.each([
39
+ { num: '102385010671', expected: '1023.8501.0671' },
40
+ { num: '836571371619', expected: '8365.7137.1619' },
41
+ { num: '743650641660', expected: '7436.5064.1660' },
42
+ { num: '011122223360', expected: '0111.2222.3360' },
43
+ { num: '001122223336', expected: '0011.2222.3336' },
44
+ ])('mask() - Testando se a máscara foi gerada corretamente', (item) => {
45
+ const masked = new TituloEleitor(item.num).mask();
46
+
47
+ expect(masked).toBe(item.expected);
48
+ expect(masked).toMatch(/^\d{4}.\d{4}.\d{4}$/)
49
+ });
50
+ });
51
+
52
+ describe('fake', () => {
53
+ test.each([...Array(5)])('fake() - Gera fakes sem máscara', () => {
54
+ const result = TituloEleitor.fake();
55
+ expect(result).toBeDefined();
56
+ });
57
+ });
58
+
59
+ describe('checksum', () => {
60
+ test.each([
61
+ { num: '1023850106', expected: '71' },
62
+ { num: '8365713716', expected: '19' },
63
+ { num: '7436506416', expected: '60' },
64
+ { num: '0011222233', expected: '36' },
65
+ ])('dv() - Verificando se o DV gerado está correto', (item) => {
66
+ const calcDv = TituloEleitor.checksum(item.num);
67
+
68
+ expect(calcDv).toBe(item.expected);
69
+ expect(typeof calcDv).toBe('string');
70
+ });
71
+ });
72
+ });
@@ -0,0 +1,17 @@
1
+ import { applyMask } from '../src/utils'
2
+
3
+ describe('applyMask()', () => {
4
+ const items = [
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
+ ]
10
+
11
+ test('Máscara deve ser aplicada com o valor e tamanho correto', () => {
12
+ items.forEach((item) => {
13
+ expect(item.expected.length).toBe(item.mask.length)
14
+ expect(applyMask(item.value, item.mask)).toBe(item.expected)
15
+ })
16
+ })
17
+ })
@@ -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,85 @@
1
+ import { clearValue } from '../src/utils'
2
+
3
+ describe('clearValue()', () => {
4
+ test('Deve limpar o valor - Strings do Mesmo tamanho', () => {
5
+ //
6
+ const valid = [
7
+ { value: 1234567890, size: 10, expected: '1234567890' },
8
+ { value: '1234567890', size: 10, expected: '1234567890' },
9
+ { value: '12.345.678-90', size: 10, expected: '1234567890' },
10
+ ]
11
+
12
+ valid.forEach((item) => {
13
+ expect(clearValue(item.value, item.size)).toBe(item.expected)
14
+ })
15
+ })
16
+
17
+ test('Deve limpar os caracteres não numéricos sem verificar o tamanho da string', () => {
18
+ //
19
+ const valid = [
20
+ { value: 1234567890123, size: null, expected: '1234567890123' },
21
+ { value: '4567890', size: null, expected: '4567890' },
22
+ { value: '345.678-90', size: null, expected: '34567890' },
23
+ ]
24
+
25
+ valid.forEach((item) => {
26
+ expect(clearValue(item.value, item.size)).toBe(item.expected)
27
+ })
28
+ })
29
+
30
+ test('Deve limpar o valor os caracteres não numéricos e completar com zeros à esquerda', () => {
31
+ //
32
+ const valid = [
33
+ { value: 1234, size: 10, expected: '0000001234' },
34
+ { value: '1234', size: 10, expected: '0000001234' },
35
+ { value: '123-4', size: 10, expected: '0000001234' },
36
+ ]
37
+
38
+ valid.forEach((item) => {
39
+ expect(clearValue(item.value, item.size, { fillZerosAtLeft: true })).toBe(item.expected)
40
+ })
41
+
42
+ // Não completa com zeros
43
+ expect(clearValue(1234, 6, { fillZerosAtLeft: false })).toBe('1234')
44
+ expect(clearValue('1234', 6, { fillZerosAtLeft: false })).toBe('1234')
45
+ })
46
+
47
+ test('Deve limpar o valor os caracteres não numéricos e remover os caracteres que passarem de size', () => {
48
+ //
49
+ const valid = [
50
+ { value: 123456789, size: 4, expected: '1234' },
51
+ { value: '1234567890', size: 4, expected: '1234' },
52
+ { value: '12.345.678-90', size: 4, expected: '1234' },
53
+ ]
54
+
55
+ valid.forEach((item) => {
56
+ expect(clearValue(item.value, item.size, { trimAtRight: true })).toBe(item.expected)
57
+ })
58
+
59
+ // Não corta à direita
60
+ expect(clearValue(12345678, 6, { trimAtRight: false })).toBe('12345678')
61
+ expect(clearValue('12345678', 6, { trimAtRight: false })).toBe('12345678')
62
+ })
63
+
64
+ test('Deve retornar erro se receber um valor vazio', () => {
65
+ expect(clearValue('1112', 4, { rejectEmpty: true })).toBe('1112')
66
+ expect(() => clearValue('', null, { rejectEmpty: true })).toThrow()
67
+ })
68
+
69
+ test('Deve retornar erro se receber uma sequência de números iguais', () => {
70
+ expect(clearValue('1112', 4, { rejectEqualSequence: true })).toBe('1112')
71
+ expect(() => clearValue('1111', 4, { rejectEqualSequence: true })).toThrow()
72
+ })
73
+
74
+ test('Deve retornar erro se receber um valor com mais caracteres que o máximo', () => {
75
+ expect(clearValue('1234', 4, { rejectIfLonger: true })).toBe('1234')
76
+ expect(() => clearValue('12345', 4, { rejectIfLonger: true })).toThrow()
77
+ })
78
+
79
+ test('Deve retornar o mesmo valor inicial', () => {
80
+ expect(clearValue(1234, 4)).toBe('1234')
81
+ expect(clearValue('1234', 4)).toBe('1234')
82
+ expect(clearValue(1234, 4, {})).toBe('1234')
83
+ expect(clearValue('1234', 4, {})).toBe('1234')
84
+ })
85
+ })
@@ -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
+ })
@@ -0,0 +1,15 @@
1
+ import { insertAtPosition } from '../src/utils'
2
+
3
+ describe('insertAtPosition()', () => {
4
+ test('Deve inserir um caractere em uma determinada posição da string', () => {
5
+ //
6
+ const list = [
7
+ { value: 'AAABBB', insert: 'C', position: 3, expected: 'AAACBBB' },
8
+ { value: 'J Med', insert: 'Cl ', position: 2, expected: 'J Cl Med' },
9
+ ]
10
+
11
+ list.forEach((item) => {
12
+ expect(insertAtPosition(item.value, item.insert, item.position)).toBe(item.expected)
13
+ })
14
+ })
15
+ })
@@ -0,0 +1,14 @@
1
+ import { randomLetter } from '../src/utils'
2
+
3
+ describe('randomLetter()', () => {
4
+ test('forceLength = false', () => {
5
+ const list = [...Array(1000)]
6
+
7
+ list.forEach(() => {
8
+ const letter = randomLetter()
9
+
10
+ expect(letter).toMatch(/^[A-Z]{1}$/)
11
+ expect(typeof letter).toBe('string')
12
+ })
13
+ })
14
+ })
@@ -0,0 +1,15 @@
1
+ import { removeFromPosition } from '../src/utils'
2
+
3
+ describe('removeFromPosition()', () => {
4
+ test('', () => {
5
+ //
6
+ const list = [
7
+ { value: 'Jossé', start: 2, end: 3, expected: 'José' },
8
+ { value: 'Cláuudio', start: 4, end: 5, expected: 'Cláudio' },
9
+ ]
10
+
11
+ list.forEach((item) => {
12
+ expect(removeFromPosition(item.value, item.start, item.end)).toBe(item.expected)
13
+ })
14
+ })
15
+ })
@@ -0,0 +1,24 @@
1
+ import { sumElementsByMultipliers } from '../src/utils'
2
+
3
+ describe('sumElementsByMultipliers()', () => {
4
+ test('Tipo do retorno', () => {
5
+ const sum = sumElementsByMultipliers('1234', [9, 8, 7, 6])
6
+
7
+ expect(typeof sum).toBe('number')
8
+ expect(sum).toBe(70)
9
+ })
10
+
11
+ test.each([
12
+ { input: '1234', multipliers: [9, 8, 7, 6], expected: 70 },
13
+ // cnpj
14
+ { input: '112223330001', multipliers: [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2], expected: 102 },
15
+ // cpf
16
+ { input: '280012389', multipliers: [10, 9, 8, 7, 6, 5, 4, 3, 2], expected: 162 },
17
+ { input: '2800123893', multipliers: [11, 10, 9, 8, 7, 6, 5, 4, 3, 2], expected: 201 },
18
+ // titulo
19
+ ])('Valores retornados', (item) => {
20
+ const sum = sumElementsByMultipliers(item.input, item.multipliers)
21
+ expect(sum).toBe(item.expected)
22
+
23
+ })
24
+ })
@@ -0,0 +1,16 @@
1
+ import { sumToDV } from '../src/utils'
2
+
3
+ describe('sumToDV()', () => {
4
+ test('Os resultados devem ser os esperados', () => {
5
+ const list = [
6
+ { value: 102, expected: 8 },
7
+ { value: 120, expected: 1 },
8
+ { value: 162, expected: 3 },
9
+ { value: 179, expected: 8 },
10
+ ]
11
+
12
+ list.forEach((item) => {
13
+ expect(sumToDV(item.value)).toBe(item.expected)
14
+ })
15
+ })
16
+ })
package/todo.md ADDED
@@ -0,0 +1,18 @@
1
+ - [x] isCarPlate
2
+
3
+ - [x] isPhone
4
+
5
+ - https://github.com/VitorLuizC/brazilian-values/blob/master/src/validators/isPhone.ts
6
+ - https://github.com/VitorLuizC/brazilian-values/blob/master/src/validators/isDDD.ts
7
+
8
+ - [ ] Conta bancária
9
+
10
+ - [ ] isPixKey - verifica se é um dos tipos de chaves
11
+
12
+
13
+ - [ ] isCEP
14
+ - https://github.com/ogilvieira/validator-brasil/blob/main/src/isCEP.ts
15
+
16
+ - [ ] isCAEPF
17
+ - https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/caepf/legislacao
18
+ - https://github.com/VitorLuizC/brazilian-values/blob/master/src/validators/isCAEPF.ts