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.
- package/.prettierrc +9 -0
- package/dist/jest.config.d.ts +8 -0
- package/dist/jest.config.d.ts.map +1 -0
- package/dist/jest.config.js +154 -0
- package/dist/jest.config.js.map +1 -0
- package/dist/test/_helpers/array_random.spec.d.ts +2 -0
- package/dist/test/_helpers/array_random.spec.d.ts.map +1 -0
- package/dist/test/_helpers/array_random.spec.js +13 -0
- package/dist/test/_helpers/array_random.spec.js.map +1 -0
- package/dist/test/_helpers/crc.spec.d.ts +2 -0
- package/dist/test/_helpers/crc.spec.d.ts.map +1 -0
- package/dist/test/_helpers/crc.spec.js +11 -0
- package/dist/test/_helpers/crc.spec.js.map +1 -0
- package/dist/test/carplate.spec.d.ts +2 -0
- package/dist/test/carplate.spec.d.ts.map +1 -0
- package/dist/test/carplate.spec.js +141 -0
- package/dist/test/carplate.spec.js.map +1 -0
- package/dist/test/cnh.spec.d.ts +2 -0
- package/dist/test/cnh.spec.d.ts.map +1 -0
- package/dist/test/cnh.spec.js +60 -0
- package/dist/test/cnh.spec.js.map +1 -0
- package/dist/test/cnpj.spec.d.ts +2 -0
- package/dist/test/cnpj.spec.d.ts.map +1 -0
- package/dist/test/cnpj.spec.js +105 -0
- package/dist/test/cnpj.spec.js.map +1 -0
- package/dist/test/cpf.spec.d.ts +2 -0
- package/dist/test/cpf.spec.d.ts.map +1 -0
- package/dist/test/cpf.spec.js +66 -0
- package/dist/test/cpf.spec.js.map +1 -0
- package/dist/test/index.test.d.ts +2 -0
- package/dist/test/index.test.d.ts.map +1 -0
- package/dist/test/index.test.js +77 -0
- package/dist/test/index.test.js.map +1 -0
- package/dist/test/judicial-process.spec.d.ts +2 -0
- package/dist/test/judicial-process.spec.d.ts.map +1 -0
- package/dist/test/judicial-process.spec.js +101 -0
- package/dist/test/judicial-process.spec.js.map +1 -0
- package/dist/test/nup17.spec.d.ts +2 -0
- package/dist/test/nup17.spec.d.ts.map +1 -0
- package/dist/test/nup17.spec.js +70 -0
- package/dist/test/nup17.spec.js.map +1 -0
- package/dist/test/phone.spec.d.ts +2 -0
- package/dist/test/phone.spec.d.ts.map +1 -0
- package/dist/test/phone.spec.js +67 -0
- package/dist/test/phone.spec.js.map +1 -0
- package/dist/test/pis-pasep.spec.d.ts +2 -0
- package/dist/test/pis-pasep.spec.d.ts.map +1 -0
- package/dist/test/pis-pasep.spec.js +65 -0
- package/dist/test/pis-pasep.spec.js.map +1 -0
- package/dist/test/pix-copy-paste.spec.d.ts +2 -0
- package/dist/test/pix-copy-paste.spec.d.ts.map +1 -0
- package/dist/test/pix-copy-paste.spec.js +31 -0
- package/dist/test/pix-copy-paste.spec.js.map +1 -0
- package/dist/test/pix-key.spec.d.ts +2 -0
- package/dist/test/pix-key.spec.d.ts.map +1 -0
- package/dist/test/pix-key.spec.js +36 -0
- package/dist/test/pix-key.spec.js.map +1 -0
- package/dist/test/postal-track-code.test.d.ts +2 -0
- package/dist/test/postal-track-code.test.d.ts.map +1 -0
- package/dist/test/postal-track-code.test.js +75 -0
- package/dist/test/postal-track-code.test.js.map +1 -0
- package/dist/test/renavam.spec.d.ts +2 -0
- package/dist/test/renavam.spec.d.ts.map +1 -0
- package/dist/test/renavam.spec.js +63 -0
- package/dist/test/renavam.spec.js.map +1 -0
- package/dist/test/tituloEleitor.spec.d.ts +2 -0
- package/dist/test/tituloEleitor.spec.d.ts.map +1 -0
- package/dist/test/tituloEleitor.spec.js +68 -0
- package/dist/test/tituloEleitor.spec.js.map +1 -0
- package/dist/test/utils-applyMask.test.d.ts +2 -0
- package/dist/test/utils-applyMask.test.d.ts.map +1 -0
- package/dist/test/utils-applyMask.test.js +18 -0
- package/dist/test/utils-applyMask.test.js.map +1 -0
- package/dist/test/utils-checkRepeatedSequence.test.d.ts +2 -0
- package/dist/test/utils-checkRepeatedSequence.test.d.ts.map +1 -0
- package/dist/test/utils-checkRepeatedSequence.test.js +18 -0
- package/dist/test/utils-checkRepeatedSequence.test.js.map +1 -0
- package/dist/test/utils-clearValue.test.d.ts +2 -0
- package/dist/test/utils-clearValue.test.d.ts.map +1 -0
- package/dist/test/utils-clearValue.test.js +74 -0
- package/dist/test/utils-clearValue.test.js.map +1 -0
- package/dist/test/utils-fakeNumber.test.d.ts +2 -0
- package/dist/test/utils-fakeNumber.test.d.ts.map +1 -0
- package/dist/test/utils-fakeNumber.test.js +24 -0
- package/dist/test/utils-fakeNumber.test.js.map +1 -0
- package/dist/test/utils-insertAtPosition.test.d.ts +2 -0
- package/dist/test/utils-insertAtPosition.test.d.ts.map +1 -0
- package/dist/test/utils-insertAtPosition.test.js +16 -0
- package/dist/test/utils-insertAtPosition.test.js.map +1 -0
- package/dist/test/utils-randomLetter.test.d.ts +2 -0
- package/dist/test/utils-randomLetter.test.d.ts.map +1 -0
- package/dist/test/utils-randomLetter.test.js +14 -0
- package/dist/test/utils-randomLetter.test.js.map +1 -0
- package/dist/test/utils-removeFromPosition.test.d.ts +2 -0
- package/dist/test/utils-removeFromPosition.test.d.ts.map +1 -0
- package/dist/test/utils-removeFromPosition.test.js +16 -0
- package/dist/test/utils-removeFromPosition.test.js.map +1 -0
- package/dist/test/utils-sumElementsByMultipliers.test.d.ts +2 -0
- package/dist/test/utils-sumElementsByMultipliers.test.d.ts.map +1 -0
- package/dist/test/utils-sumElementsByMultipliers.test.js +23 -0
- package/dist/test/utils-sumElementsByMultipliers.test.js.map +1 -0
- package/dist/test/utils-sumToDV.test.d.ts +2 -0
- package/dist/test/utils-sumToDV.test.d.ts.map +1 -0
- package/dist/test/utils-sumToDV.test.js +17 -0
- package/dist/test/utils-sumToDV.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/eslint.config.mjs +11 -0
- package/jest.config.ts +210 -0
- package/package.json +4 -3
- package/readme.md +3 -2
- package/test/_helpers/array_random.spec.ts +12 -0
- package/test/_helpers/crc.spec.ts +13 -0
- package/test/carplate.spec.ts +161 -0
- package/test/cnh.spec.ts +71 -0
- package/test/cnpj.spec.ts +127 -0
- package/test/cpf.spec.ts +76 -0
- package/test/index.test.ts +112 -0
- package/test/judicial-process.spec.ts +131 -0
- package/test/nup17.spec.ts +79 -0
- package/test/phone.spec.ts +75 -0
- package/test/pis-pasep.spec.ts +73 -0
- package/test/pix-copy-paste.spec.ts +37 -0
- package/test/pix-key.spec.ts +41 -0
- package/test/postal-track-code.test.ts +83 -0
- package/test/renavam.spec.ts +71 -0
- package/test/tituloEleitor.spec.ts +72 -0
- package/test/utils-applyMask.test.ts +17 -0
- package/test/utils-checkRepeatedSequence.test.ts +17 -0
- package/test/utils-clearValue.test.ts +85 -0
- package/test/utils-fakeNumber.test.ts +28 -0
- package/test/utils-insertAtPosition.test.ts +15 -0
- package/test/utils-randomLetter.test.ts +14 -0
- package/test/utils-removeFromPosition.test.ts +15 -0
- package/test/utils-sumElementsByMultipliers.test.ts +24 -0
- package/test/utils-sumToDV.test.ts +16 -0
- package/todo.md +18 -0
- package/tsconfig.json +103 -23
- package/.github/workflows/test.yml +0 -39
- package/.prettierrc.js +0 -7
- package/dist/cnh.d.ts +0 -91
- package/dist/cnh.js +0 -139
- package/dist/cnh.js.map +0 -1
- package/dist/cnh.test.d.ts +0 -1
- package/dist/cnpj.d.ts +0 -87
- package/dist/cnpj.js +0 -151
- package/dist/cnpj.js.map +0 -1
- package/dist/cnpj.test.d.ts +0 -1
- package/dist/cpf.d.ts +0 -99
- package/dist/cpf.js +0 -147
- package/dist/cpf.js.map +0 -1
- package/dist/cpf.test.d.ts +0 -1
- package/dist/data/ValidationBRError.d.ts +0 -6
- package/dist/data/ValidationBRError.js +0 -10
- package/dist/data/ValidationBRError.js.map +0 -1
- package/dist/index.d.ts +0 -21
- package/dist/index.js +0 -42
- package/dist/index.js.map +0 -1
- package/dist/index.test.d.ts +0 -1
- package/dist/judicialProcess.d.ts +0 -126
- package/dist/judicialProcess.js +0 -190
- package/dist/judicialProcess.js.map +0 -1
- package/dist/judicialProcess.test.d.ts +0 -1
- package/dist/nup17.d.ts +0 -102
- package/dist/nup17.js +0 -155
- package/dist/nup17.js.map +0 -1
- package/dist/nup17.test.d.ts +0 -1
- package/dist/pisPasep.d.ts +0 -81
- package/dist/pisPasep.js +0 -126
- package/dist/pisPasep.js.map +0 -1
- package/dist/pisPasep.test.d.ts +0 -1
- package/dist/postalCode.d.ts +0 -83
- package/dist/postalCode.js +0 -136
- package/dist/postalCode.js.map +0 -1
- package/dist/postalCode.test.d.ts +0 -1
- package/dist/renavam.d.ts +0 -75
- package/dist/renavam.js +0 -122
- package/dist/renavam.js.map +0 -1
- package/dist/renavam.test.d.ts +0 -1
- package/dist/tituloEleitor.d.ts +0 -93
- package/dist/tituloEleitor.js +0 -143
- package/dist/tituloEleitor.js.map +0 -1
- package/dist/tituloEleitor.test.d.ts +0 -1
- package/dist/utils-applyMask.test.d.ts +0 -1
- package/dist/utils-checkRepeatedSequence.test.d.ts +0 -1
- package/dist/utils-clearValue.test.d.ts +0 -1
- package/dist/utils-fakeNumber.test.d.ts +0 -1
- package/dist/utils-insertAtPosition.test.d.ts +0 -1
- package/dist/utils-invalidListGenerator.test.d.ts +0 -1
- package/dist/utils-randomLetter.test.d.ts +0 -1
- package/dist/utils-removeFromPosition.test.d.ts +0 -1
- package/dist/utils-sumElementsByMultipliers.test.d.ts +0 -1
- package/dist/utils-sumToDV.test.d.ts +0 -1
- package/dist/utils.d.ts +0 -131
- package/dist/utils.js +0 -189
- package/dist/utils.js.map +0 -1
- package/docs/Nota.COCAD.SUARA.2024.05.49.CNPJ.Alfanumerico-1.pdf +0 -0
- package/eslint.config.js +0 -82
- 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
|