- Added ComplianceNFs.Infrastructure.Tests project to the solution. - Implemented unit tests for AccessDbRepository, ArchivingService, AttachmentRepository, InvoiceIngestionService, MailListener, MonitorViewModel, and Worker. - Enhanced existing tests with additional assertions and mock setups. - Updated TODOs and roadmap documentation to reflect changes in service implementations and testing coverage. - Modified ComplianceNFs.sln to include new test project and adjust solution properties.
36 lines
11 KiB
C#
36 lines
11 KiB
C#
using System.IO;
|
|
using ComplianceNFs.Infrastructure.Parsers;
|
|
using ComplianceNFs.Core.Entities;
|
|
using Xunit;
|
|
|
|
namespace ComplianceNFs.Infrastructure.Tests
|
|
{
|
|
public class XmlParserTests
|
|
{
|
|
[Fact]
|
|
public void Parse_ValidXml_ReturnsParsedInvoice()
|
|
{
|
|
// Arrange
|
|
var xml = @"<?xml version=""1.0"" encoding=""utf-8""?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""4.00""><NFe xmlns=""http://www.portalfiscal.inf.br/nfe""><infNFe Id=""NFe35240513777004000122550010000545161457796637"" versao=""4.00""><ide><cUF>35</cUF><cNF>45779663</cNF><natOp>VENDA DE ENERGIA ELETRICA /</natOp><mod>55</mod><serie>1</serie><nNF>54516</nNF><dhEmi>2024-05-07T20:57:34-03:00</dhEmi><dhSaiEnt>2024-05-07T20:57:34-03:00</dhSaiEnt><tpNF>1</tpNF><idDest>2</idDest><cMunFG>3550308</cMunFG><tpImp>2</tpImp><tpEmis>1</tpEmis><cDV>7</cDV><tpAmb>1</tpAmb><finNFe>1</finNFe><indFinal>1</indFinal><indPres>9</indPres><indIntermed>0</indIntermed><procEmi>0</procEmi><verProc>5</verProc></ide><emit><CNPJ>13777004000122</CNPJ><xNome>RAIZEN POWER COMERCIALIZADORA DE EN LTDA</xNome><xFant>RAIZEN POWER COMERCIALIZADORA</xFant><enderEmit><xLgr>AV BRIGADEIRO FARIA LIMA</xLgr><nro>4100</nro><xBairro>ITAIM BIBI</xBairro><cMun>3550308</cMun><xMun>Sao Paulo</xMun><UF>SP</UF><CEP>04538132</CEP><xPais>Brasil</xPais><fone>1934238000</fone></enderEmit><IE>144000559114</IE><IEST>243633912</IEST><CRT>3</CRT></emit><dest><CNPJ>06272575007403</CNPJ><xNome>LAVEBRAS GESTAO DE TEXTEIS S.A.</xNome><enderDest><xLgr>R MANOEL MAIA NOBRE</xLgr><nro>90</nro><xBairro>FAROL</xBairro><cMun>2704302</cMun><xMun>MACEIO</xMun><UF>AL</UF><CEP>57050120</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>0000000000</fone></enderDest><indIEDest>9</indIEDest></dest><det nItem=""1""><prod><cProd>000000000009801024</cProd><cEAN>SEM GTIN</cEAN><xProd>ENERGIA ELETRICA ADQ TERC</xProd><NCM>27160000</NCM><CEST>0700100</CEST><CFOP>6252</CFOP><uCom>MWH</uCom><qCom>28.1210</qCom><vUnCom>147.2899256783</vUnCom><vProd>4141.94</vProd><cEANTrib>SEM GTIN</cEANTrib><uTrib>MWH</uTrib><qTrib>28.1210</qTrib><vUnTrib>147.2899256783</vUnTrib><indTot>1</indTot><xPed>04/24-i5NE |</xPed><nItemPed>0</nItemPed></prod><imposto><vTotTrib>1418.61</vTotTrib><ICMS><ICMS30><orig>0</orig><CST>30</CST><modBCST>4</modBCST><pMVAST>0.00</pMVAST><pRedBCST>100.00</pRedBCST><vBCST>5177.43</vBCST><pICMSST>19.00</pICMSST><vICMSST>983.71</vICMSST><vBCFCPST>5177.43</vBCFCPST><pFCPST>1.00</pFCPST><vFCPST>51.77</vFCPST></ICMS30></ICMS><IPI><cEnq>999</cEnq><IPINT><CST>51</CST></IPINT></IPI><PIS><PISAliq><CST>01</CST><vBC>4141.94</vBC><pPIS>1.65</pPIS><vPIS>68.34</vPIS></PISAliq></PIS><COFINS><COFINSAliq><CST>01</CST><vBC>4141.94</vBC><pCOFINS>7.60</pCOFINS><vCOFINS>314.79</vCOFINS></COFINSAliq></COFINS><ICMSUFDest><vBCUFDest>4141.94</vBCUFDest><pFCPUFDest>0.0000</pFCPUFDest><pICMSUFDest>19.0000</pICMSUFDest><pICMSInter>7.00</pICMSInter><pICMSInterPart>100.0000</pICMSInterPart><vFCPUFDest>0.00</vFCPUFDest><vICMSUFDest>497.03</vICMSUFDest><vICMSUFRemet>0.00</vICMSUFRemet></ICMSUFDest></imposto><infAdProd>Base FCP = 5.177,43; Aliquota FCP = 1,00; Valor FCP = 51,77</infAdProd></det><total><ICMSTot><vBC>0.00</vBC><vICMS>0.00</vICMS><vICMSDeson>0.00</vICMSDeson><vFCPUFDest>0.00</vFCPUFDest><vICMSUFDest>497.03</vICMSUFDest><vICMSUFRemet>0.00</vICMSUFRemet><vFCP>0.00</vFCP><vBCST>5177.43</vBCST><vST>983.71</vST><vFCPST>51.77</vFCPST><vFCPSTRet>0.00</vFCPSTRet><vProd>4141.94</vProd><vFrete>0.00</vFrete><vSeg>0.00</vSeg><vDesc>0.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vIPIDevol>0.00</vIPIDevol><vPIS>68.34</vPIS><vCOFINS>314.79</vCOFINS><vOutro>0.00</vOutro><vNF>5177.42</vNF><vTotTrib>1418.61</vTotTrib></ICMSTot></total><transp><modFrete>9</modFrete><vol><qVol>28</qVol><pesoL>28.121</pesoL><pesoB>28.121</pesoB></vol></transp><cobr><fat><nFat>0099217492</nFat><vOrig>5177.42</vOrig><vDesc>0.00</vDesc><vLiq>5177.42</vLiq></fat><dup><nDup>001</nDup><dVenc>2024-05-10</dVenc><vDup>5177.42</vDup></dup></cobr><pag><detPag><indPag>0</indPag><tPag>18</tPag><vPag>5177.42</vPag></detPag></pag><infAdic><infAdFisco>Valor Total FCP = 51,77</infAdFisco><infCpl>Convenio 83/2000 - Decreto 35.245/91, Cap. II, Secao II, Arts 73 e 74 - Nao Incidencia de Artigo 7, Inciso VI do RICMS/SP. PRODUTOS COM ALIQUOTA ZERO DE IPI CONF. TIPI IMPOSTOS FEDERAIS: 383,13 4.141,94 497,03 Ordem de Venda: 51667085 Cond. Pagamento: DU07 DADOS PARA PAGAMENTO: BANCO SANTANDER; AGENCIA 0285; CONTA 13007006-2. Pedido cliente: 04/24-i5NE | 1940 Remessa: 804601777 Fatura: 99217492 Doc.Num: 31603617</infCpl><obsCont xCampo=""DOCNUM""><xTexto>0031603617</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>nfe-acl@raizen.com</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>gestao.ccee@energiasmart.com.br</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>emerson.oliveira@elis.com</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>flavio.delorenzo@elis.com</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>edilene.vieira@elis.com</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>contasapagar@elisbrasil.com</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>janaina.vicente@elis.com</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>deodorio.souza@elis.com</xTexto></obsCont><obsCont xCampo=""emailDestinatarioNFe""><xTexto>taylo.silva@elis.com</xTexto></obsCont></infAdic><compra><xPed>04/24-i5NE | 1940</xPed></compra><infRespTec><CNPJ>13777004000122</CNPJ><xContato>DEPARTAMENTO DE SOLUCOES FISCAIS</xContato><email>SOLUCOESFISCAIS@RAIZEN.COM</email><fone>1934238000</fone></infRespTec></infNFe><Signature xmlns=""http://www.w3.org/2000/09/xmldsig#""><SignedInfo><CanonicalizationMethod Algorithm=""http://www.w3.org/TR/2001/REC-xml-c14n-20010315""/><SignatureMethod Algorithm=""http://www.w3.org/2000/09/xmldsig#rsa-sha1""/><Reference URI=""#NFe35240513777004000122550010000545161457796637""><Transforms><Transform Algorithm=""http://www.w3.org/2000/09/xmldsig#enveloped-signature""/><Transform Algorithm=""http://www.w3.org/TR/2001/REC-xml-c14n-20010315""/></Transforms><DigestMethod Algorithm=""http://www.w3.org/2000/09/xmldsig#sha1""/><DigestValue>/SFXJNKMLr4vd56iSH3TCL3X4Uw=</DigestValue></Reference></SignedInfo><SignatureValue>E2ACU4BegkJ1PtoRslPh0BBJRhNnc9l+zdrfH65VNDH8UwkWsnn4HHGnD+qIh5ZkGZPNjd6tZ6ftnbBtgnubvkg4mfWS/FFJznTg0sqIjzJ6a1xkBCz56KwkiCSJeAdxjyg8WIXD/juVbe5/AOSiEw+7zemU0no+o2ajdomEHgyBR6rnzn1trmTN5MELxCo5bWmTkYSTSCww98j2KeXbEvsqAVkcjjkXeWsQJr2BHYFQ+CuUToG9H1UkNk/QZ/0tLHAiGUh7YOOMDYpfa/ePNUnuEcK79joGQC1NIf7XzPuXXCr0KlM22yASDQorSS9w8dKe7WEyW+wVRXP1hrBOww==</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></NFe><protNFe versao=""4.00""><infProt><tpAmb>1</tpAmb><verAplic>SP_NFE_PL009_V4</verAplic><chNFe>35240513777004000122550010000545161457796637</chNFe><dhRecbto>2024-05-07T20:58:01-03:00</dhRecbto><nProt>135240958388703</nProt><digVal>/SFXJNKMLr4vd56iSH3TCL3X4Uw=</digVal><cStat>100</cStat><xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe></nfeProc> ";
|
|
var parser = new XmlParser();
|
|
using var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml));
|
|
|
|
// Act
|
|
var result = parser.Parse(stream);
|
|
|
|
// Assert
|
|
Assert.Equal("06272575007403", result.CnpjComp);
|
|
Assert.Equal("13777004000122", result.CnpjVend);
|
|
Assert.Equal(28.1210m, result.MontNF);
|
|
Assert.Equal(147.2899256783m, result.PrecNF);
|
|
Assert.Equal(5177.42m, result.ValorFinalComImpostos);
|
|
Assert.Equal("LAVEBRAS GESTAO DE TEXTEIS S.A.", result.RsComp);
|
|
Assert.Equal("RAIZEN POWER COMERCIALIZADORA DE EN LTDA", result.RsVend);
|
|
Assert.Equal("54516", result.NumeroNF);
|
|
Assert.Equal(0.19m, result.IcmsNF);
|
|
Assert.Equal("AL", result.UfComp);
|
|
Assert.Equal("SP", result.UfVend);
|
|
}
|
|
}
|
|
}
|