Skip to content

Commit 127149c

Browse files
committed
fix(cep): formato esperado
Added tests to validate cep
1 parent 8b39ac6 commit 127149c

9 files changed

Lines changed: 63 additions & 22 deletions

File tree

src/NetDevPack.Brasil/Documentos/CNPJ.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class Cnpj
1111

1212
public Cnpj(string numero)
1313
{
14-
Numero = numero.OnlyNumbers(numero);
14+
Numero = numero.OnlyNumbers();
1515
if (!EstaValido()) throw new DomainException("CNPJ Invalido");
1616
}
1717

src/NetDevPack.Brasil/Documentos/Cpf.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class Cpf
1111

1212
public Cpf(string numero)
1313
{
14-
Numero = numero.OnlyNumbers(numero);
14+
Numero = numero.OnlyNumbers();
1515
if (!EstaValido()) throw new DomainException("CPF Invalido");
1616
}
1717

src/NetDevPack.Brasil/Documentos/Validacao/CnpjValidador.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using System.Collections.Generic;
2-
using NetDevPack.Utilities;
1+
using NetDevPack.Utilities;
2+
using System.Collections.Generic;
33

44
namespace NetDevPack.Brasil.Documentos.Validacao
55
{
@@ -21,7 +21,7 @@ public class CnpjValidador
2121
"99999999999999"
2222
};
2323

24-
public CnpjValidador(string cnpj) => _cpnjTratado = cnpj.OnlyNumbers(cnpj);
24+
public CnpjValidador(string cnpj) => _cpnjTratado = cnpj.OnlyNumbers();
2525

2626
public bool EstaValido()
2727
{

src/NetDevPack.Brasil/Documentos/Validacao/CpfValidador.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using System.Collections.Generic;
2-
using NetDevPack.Utilities;
1+
using NetDevPack.Utilities;
2+
using System.Collections.Generic;
33

44
namespace NetDevPack.Brasil.Documentos.Validacao
55
{
@@ -21,7 +21,7 @@ public class CpfValidador
2121
"99999999999"
2222
};
2323

24-
public CpfValidador(string numero) => _cpfTratado = numero.OnlyNumbers(numero);
24+
public CpfValidador(string numero) => _cpfTratado = numero.OnlyNumbers();
2525

2626
public bool EstaValido()
2727
{

src/NetDevPack.Brasil/Localizacao/Cep.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
using System;
2-
using NetDevPack.Brasil.Localizacao.Validacao;
1+
using NetDevPack.Brasil.Localizacao.Validacao;
32
using NetDevPack.Domain;
4-
using NetDevPack.Utilities;
3+
using System;
54

65
namespace NetDevPack.Brasil.Localizacao
76
{
@@ -63,13 +62,10 @@ public class Cep : IEquatable<Cep>
6362
/// <exception cref="DomainException">CEP (Código de Endereçamento Postal) inválido.</exception>
6463
public Cep(string codigo)
6564
{
66-
Codigo = codigo?.OnlyNumbers(codigo);
67-
_validador = new CepValidador(Codigo);
68-
if (!EstaValido())
69-
{
70-
throw new DomainException("CEP Inválido");
71-
}
72-
PreencherEstrutura();
65+
Codigo = codigo;
66+
_validador = new CepValidador(codigo);
67+
if (EstaValido())
68+
PreencherEstrutura();
7369
}
7470

7571
/// <inheritdoc/>

src/NetDevPack.Brasil/Localizacao/Validacao/CepValidador.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using NetDevPack.Utilities;
2+
using System.Text.RegularExpressions;
23

34
namespace NetDevPack.Brasil.Localizacao.Validacao
45
{
@@ -16,19 +17,27 @@ public class CepValidador
1617
/// </summary>
1718
private readonly string _cepTratado;
1819

20+
private readonly string _cepOriginal;
21+
22+
private readonly Regex _formatoEsperado = new Regex(@"^(\d{5}-\d{3})|(\d{8})$", RegexOptions.Compiled);
23+
1924
/// <summary>
2025
/// Inicializa uma instância da classe <see cref="CepValidador"/>.
2126
/// </summary>
2227
/// <param name="codigo">O CEP (Código de Endereçamento Postal).</param>
23-
public CepValidador(string codigo) => _cepTratado = codigo.OnlyNumbers(codigo);
28+
public CepValidador(string codigo)
29+
{
30+
_cepTratado = codigo.OnlyNumbers();
31+
_cepOriginal = codigo;
32+
}
2433

2534
/// <summary>
2635
/// Verifica se o CEP atende o critério de tamanho definido.
2736
/// </summary>
2837
/// <returns><see cref="true"/> se o CEP atende o critério de tamanho definido; caso contrário, <see cref="false"/>.</returns>
2938
public bool EstaValido()
3039
{
31-
return PossuiTamanhoValido();
40+
return PossuiTamanhoValido() && _formatoEsperado.IsMatch(_cepOriginal);
3241
}
3342

3443
/// <summary>

src/NetDevPack.Brasil/NetDevPack.Brasil.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</PropertyGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="NetDevPack" Version="5.0.3" />
21+
<PackageReference Include="NetDevPack" Version="5.1.1" />
2222
</ItemGroup>
2323

2424
<ItemGroup>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using FluentAssertions;
2+
using NetDevPack.Brasil.Localizacao;
3+
using Xunit;
4+
5+
namespace NetDevPack.Brasil.Tests.Localizacao
6+
{
7+
public class CepTests
8+
{
9+
10+
[Theory]
11+
[InlineData("87970-000")]
12+
[InlineData("86039-215")]
13+
[InlineData("01000-000")]
14+
[InlineData("01000000")]
15+
[InlineData("87970000")]
16+
[InlineData("86039215")]
17+
public void Should_Validate_Ceps(string codigo)
18+
{
19+
var cep = new Cep(codigo);
20+
cep.EstaValido().Should().BeTrue();
21+
}
22+
23+
[Theory]
24+
[InlineData("87970O00")]
25+
[InlineData("860321o5")]
26+
[InlineData("0100000")]
27+
[InlineData("01-00000")]
28+
[InlineData("879aoe700^0-0")]
29+
[InlineData("8603a9215")]
30+
public void Should_Not_Validate_Ceps(string codigo)
31+
{
32+
var cep = new Cep(codigo);
33+
cep.EstaValido().Should().BeFalse();
34+
}
35+
}
36+
}

tests/NetDevPack.Brasil.Tests/NetDevPack.Brasil.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net5.0</TargetFramework>

0 commit comments

Comments
 (0)