• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

reactivando / validations-br / 17666336700

12 Sep 2025 06:19AM UTC coverage: 92.345%. First build
17666336700

Pull #48

github

web-flow
Merge b64264acb into fada38131
Pull Request #48: fix(validations): Correct validation logic and test data

182 of 216 branches covered (84.26%)

Branch coverage included in aggregate %.

55 of 61 new or added lines in 8 files covered. (90.16%)

578 of 607 relevant lines covered (95.22%)

12.64 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.08
/src/validations/validateCNH.ts
1
import { isRepeated } from './utils';
10✔
2

3
/**
4
 * The function `validateCNH` validates a Brazilian driver's license number (CNH).
5
 * @param {string} value - The `value` parameter is a string that represents the CNH (Carteira Nacional
6
 * de Habilitação) number to be validated. It can be formatted with or without punctuation.
7
 * @returns The function `validateCNH` returns a boolean value, indicating whether the provided CNH is
8
 * valid or not.
9
 */
10
export function validateCNH(value: string) {
10✔
11
  const cnh = String(value).replace(/\D/g, '');
10✔
12

13
  if (cnh.length !== 11 || isRepeated(cnh)) {
10✔
14
    return false;
6✔
15
  }
16

17
  let v = 0;
4✔
18
  let j = 9;
4✔
19
  for (let i = 0; i < 9; ++i) {
4✔
20
    v += parseInt(cnh.charAt(i), 10) * j--;
36✔
21
  }
22

23
  let dv1 = v % 11;
4✔
24
  let dsc = 0;
4✔
25
  if (dv1 >= 10) {
4!
NEW
26
    dv1 = 0;
×
27
    dsc = 2;
×
28
  }
29

30
  v = 0;
4✔
31
  j = 1;
4✔
32
  for (let i = 0; i < 9; ++i) {
4✔
33
    v += parseInt(cnh.charAt(i), 10) * j++;
36✔
34
  }
35

36
  let dv2 = v % 11;
4✔
37
  if (dv2 >= 10) {
4!
NEW
38
    dv2 = 0;
×
39
  }
40

41
  dv2 -= dsc;
4✔
42

43
  if (dv2 < 0) {
4!
NEW
44
    dv2 += 11;
×
45
  }
46

47
  return (
4✔
48
    dv1 === parseInt(cnh.charAt(9), 10) && dv2 === parseInt(cnh.charAt(10), 10)
5✔
49
  );
50
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc