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 = @"3545779663VENDA DE ENERGIA ELETRICA /551545162024-05-07T20:57:34-03:002024-05-07T20:57:34-03:00123550308217111900513777004000122RAIZEN POWER COMERCIALIZADORA DE EN LTDARAIZEN POWER COMERCIALIZADORAAV BRIGADEIRO FARIA LIMA4100ITAIM BIBI3550308Sao PauloSP04538132Brasil1934238000144000559114243633912306272575007403LAVEBRAS GESTAO DE TEXTEIS S.A.R MANOEL MAIA NOBRE90FAROL2704302MACEIOAL570501201058BRASIL00000000009000000000009801024SEM GTINENERGIA ELETRICA ADQ TERC2716000007001006252MWH28.1210147.28992567834141.94SEM GTINMWH28.1210147.2899256783104/24-i5NE |01418.6103040.00100.005177.4319.00983.715177.431.0051.7799951014141.941.6568.34014141.947.60314.794141.940.000019.00007.00100.00000.00497.030.00Base FCP = 5.177,43; Aliquota FCP = 1,00; Valor FCP = 51,770.000.000.000.00497.030.000.005177.43983.7151.770.004141.940.000.000.000.000.000.0068.34314.790.005177.421418.6192828.12128.12100992174925177.420.005177.420012024-05-105177.420185177.42Valor Total FCP = 51,77Convenio 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: 316036170031603617nfe-acl@raizen.comgestao.ccee@energiasmart.com.bremerson.oliveira@elis.comflavio.delorenzo@elis.comedilene.vieira@elis.comcontasapagar@elisbrasil.comjanaina.vicente@elis.comdeodorio.souza@elis.comtaylo.silva@elis.com04/24-i5NE | 194013777004000122DEPARTAMENTO DE SOLUCOES FISCAISSOLUCOESFISCAIS@RAIZEN.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1SP_NFE_PL009_V4352405137770040001225500100005451614577966372024-05-07T20:58:01-03:00135240958388703/SFXJNKMLr4vd56iSH3TCL3X4Uw=100Autorizado o uso da NF-e "; 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); } } }