Skip to content

Commit

Permalink
Quebrado teste de chave em varios testes para melhorar a legibilidade.
Browse files Browse the repository at this point in the history
Por padrão, usamos a biblioteca joda de data e o parser da chave usada o problematico Date do java,que foi alterado.
  • Loading branch information
diego@fincatto.com committed Jul 9, 2016
1 parent 431d0ab commit 692519a
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 35 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.fincatto.nfe310.classes;

import java.util.Arrays;

import com.fincatto.nfe310.parsers.NotaFiscalChaveParser;

import java.util.Arrays;

/**
* <h1>URLs dos serviços</h1><br>
* <a href="http://hom.nfe.fazenda.gov.br/portal/webServices.aspx?tipoConteudo=Wak0FwB7dKs=">NFE
Expand Down Expand Up @@ -1054,14 +1054,13 @@ public static NFAutorizador31 valueOfCodigoUF(final NFUnidadeFederativa uf) {

public static NFAutorizador31 valueOfChaveAcesso(final String chaveAcesso) {
final NotaFiscalChaveParser chaveParser = new NotaFiscalChaveParser(chaveAcesso);

if (chaveParser.isEmitidaContingenciaSCVRS()) {
return NFAutorizador31.SVRS;
} else if (chaveParser.isEmitidaContingenciaSCVAN()) {
return NFAutorizador31.SCAN;
} else {
return NFAutorizador31.valueOfCodigoUF(chaveParser.getNFUnidadeFederativa());
}

return NFAutorizador31.valueOfCodigoUF(chaveParser.getNFUnidadeFederativa());
}

public static NFAutorizador31 valueOfTipoEmissao(final NFTipoEmissao tpEmissao, final NFUnidadeFederativa uf) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,32 @@
package com.fincatto.nfe310.parsers;

import java.util.Date;
import java.util.GregorianCalendar;

import com.fincatto.nfe310.classes.NFModelo;
import com.fincatto.nfe310.classes.NFTipoEmissao;
import com.fincatto.nfe310.classes.NFUnidadeFederativa;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.LocalDate;

public class NotaFiscalChaveParser {

private final String chave;

public NotaFiscalChaveParser(final String chave) {
if (chave == null || chave.replaceAll("\\D", "").length() != 44) {
this.chave = StringUtils.stripToEmpty(chave).replaceAll("\\D", "");
if (this.chave.length() != 44) {
throw new IllegalArgumentException(String.format("A chave deve ter exatos 44 caracteres numericos: %s", chave));
}
this.chave = chave.replaceAll("\\D", "");
}

public NFUnidadeFederativa getNFUnidadeFederativa() {
return NFUnidadeFederativa.valueOfCodigo(this.chave.substring(0, 2));
}

public Date getDataEmissao() {
return new GregorianCalendar(this.getDataEmissaoAno(), this.getDataEmissaoMes(), 1).getTime();
public LocalDate getDataEmissao() {
return new LocalDate(this.getDataEmissaoAno(), this.getDataEmissaoMes(), 1);
}

private int getDataEmissaoMes() {
return Integer.parseInt(this.chave.substring(4, 6)) - 1;
return Integer.parseInt(this.chave.substring(4, 6));
}

private int getDataEmissaoAno() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,39 @@
package com.fincatto.nfe310.parsers;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.fincatto.nfe310.classes.NFTipoEmissao;
import com.fincatto.nfe310.classes.NFUnidadeFederativa;
import org.joda.time.LocalDate;
import org.junit.Assert;
import org.junit.Test;

import com.fincatto.nfe310.classes.NFTipoEmissao;
import com.fincatto.nfe310.classes.NFUnidadeFederativa;
import java.text.ParseException;

public class NotaFiscalChaveParserTest {


@Test(expected = IllegalArgumentException.class)
public void naoDevePermitirChaveNula() {
new NotaFiscalChaveParser(null);
}

@Test(expected = IllegalArgumentException.class)
public void naoDevePermitirChaveDeTamanhoMenor() {
new NotaFiscalChaveParser("1734119042676883974264088457913359614139959");
}

@Test(expected = IllegalArgumentException.class)
public void naoDevePermitirChaveDeTamanhoMaior() {
new NotaFiscalChaveParser("173411904267688397426408845791335961413995927");
}

@Test(expected = IllegalArgumentException.class)
public void naoDevePermitirChaveDeTamanhoMenorMesmoComEspacos() {
new NotaFiscalChaveParser("1734119042676883974264088457913359614139959 ");
}

@Test(expected = IllegalArgumentException.class)
public void naoDevePermitirChaveDeTamanhoInvalido() {
try {
new NotaFiscalChaveParser(null);
Assert.fail();
} catch (final IllegalArgumentException e) {

}
try {
new NotaFiscalChaveParser("1734119042676883974264088457913359614139959");
Assert.fail();
} catch (final IllegalArgumentException e) {
new NotaFiscalChaveParser("173411904267688397426408845791335961413995927");
Assert.fail();
}
public void naoDevePermitirChaveComLetras() {
new NotaFiscalChaveParser("1734119042676883974264088457913359614139959A");
}

@Test
Expand All @@ -36,8 +43,7 @@ public void deveObterUFDeChave() {

@Test
public void deveObterDataDeEmissaoDaChave() throws ParseException {
final Date dataEsperada = new SimpleDateFormat("yyyy/MM").parse("2015/11");
Assert.assertEquals(dataEsperada, new NotaFiscalChaveParser("42151190426768839742640884579133596141399591").getDataEmissao());
Assert.assertEquals(new LocalDate(2015, 11, 1), new NotaFiscalChaveParser("42151190426768839742640884579133596141399591").getDataEmissao());
}

@Test
Expand Down

0 comments on commit 692519a

Please sign in to comment.