Skip to content

Commit 574114d

Browse files
refactor: melhora coverage para Renavam
1 parent f206424 commit 574114d

File tree

2 files changed

+49
-15
lines changed

2 files changed

+49
-15
lines changed

src/validator-docs/Rules/Renavam.php

+12-15
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,24 @@ class Renavam extends Sanitization
99
public function validateRenavam($attribute, $renavam): bool
1010
{
1111
$renavam = $this->sanitize($renavam);
12-
$sum = 0;
1312
$renavamArray = str_split($renavam);
14-
$digitCount = 0;
13+
$digit = $this->determinarDigito($renavamArray);
1514

16-
for ($i = 5; $i >= 2; $i--) {
17-
$sum += $renavamArray[$digitCount] * $i;
18-
$digitCount++;
19-
}
20-
21-
$valor = $sum % 11;
15+
return $digit === (int) $renavamArray[4];
16+
}
2217

23-
$digit = $valor;
18+
public function determinarDigito($renavam): int
19+
{
20+
$resultante = 0;
21+
$contador = 0;
2422

25-
if ($valor == 11 || $valor == 0 || $valor >= 10) {
26-
$digit = 0;
23+
for ($indice = 5; $indice >= 2; $indice--) {
24+
$resultante += $renavam[$contador] * $indice;
25+
$contador++;
2726
}
2827

29-
if ($digit == $renavamArray[4]) {
30-
return true;
31-
}
28+
$verificador = $resultante % 11;
3229

33-
return false;
30+
return $verificador >= 10 ? 0 : $verificador;
3431
}
3532
}

tests/Rules/RenavamTest.php

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace geekcom\ValidatorDocs\Tests\Rules;
4+
5+
use geekcom\ValidatorDocs\Rules\Renavam;
6+
use geekcom\ValidatorDocs\Tests\ValidatorTestCase;
7+
8+
final class RenavamTest extends ValidatorTestCase
9+
{
10+
/**
11+
* @test
12+
*
13+
* @dataProvider renavamProvider
14+
*/
15+
public function renavamValido($renavam, $expected): void
16+
{
17+
$instance = new Renavam();
18+
19+
$atual = $instance->validateRenavam('', $renavam);
20+
21+
$this->assertSame($expected, $atual);
22+
}
23+
24+
public function renavamProvider(): array
25+
{
26+
return [
27+
'Input correto' => [
28+
'renavam' => 639884962,
29+
'expected' => true,
30+
],
31+
'Input incorreto' => [
32+
'renavam' => 11111111111,
33+
'expected' => false
34+
],
35+
];
36+
}
37+
}

0 commit comments

Comments
 (0)