public Result GerarNotaFiscal(Pedido pedido) { var notaFiscal = MontarNotaFiscal(pedido); var result = _writer.Record(notaFiscal.NumeroNotaFiscal.ToString(), notaFiscal); if (result) { var idNotaFiscal = _notaFiscalRepository.InsertNotaFiscal(notaFiscal.NumeroNotaFiscal, notaFiscal.Serie, notaFiscal.NomeCliente, notaFiscal.EstadoDestino, notaFiscal.EstadoOrigem); foreach (var item in notaFiscal.ItensDaNotaFiscal) { _notaFiscalRepository.InsertNotaFiscalItem(idNotaFiscal, item.Cfop, item.TipoIcms, item.BaseIcms, item.AliquotaIcms, item.ValorIcms, item.NomeProduto, item.CodigoProduto, item.BaseIpi, item.AliquotaIpi, item.ValorIpi, item.Desconto); } } return(new Result() { Status = result, Message = result ? "Operação efetuada com sucesso" : "Erro ao efetuar a operação" }); }
public void GerarNotaFiscal_HavingGeneratedAValidXml_ShouldPersistNotaFiscalInDataBase() { // arrange var pedido = A.Dummy <Pedido>(); pedido.ItensDoPedido.Add(A.Dummy <PedidoItem>()); A.CallTo(() => _xmlWriter.Record(A <string> .Ignored, A <NotaFiscal> .Ignored)).Returns(true); A.CallTo(() => _notaFiscalRepository.GetNextIdNotaFiscal()).Returns(A.Dummy <int>()); A.CallTo(() => _notaFiscalRepository.GetLastIdNotaFiscalItem()).Returns(A.Dummy <int>()); A.CallTo(() => _notaFiscalRepository.InsertNotaFiscal(A <int> .Ignored, A <int> .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).Returns(1); A.CallTo(() => _notaFiscalRepository.InsertNotaFiscalItem(A <int> .Ignored, A <string> .Ignored, A <string> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored, A <string> .Ignored, A <string> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored)); // act var notaFiscalService = new NotaFiscalService(_xmlWriter, _notaFiscalRepository); var result = notaFiscalService.GerarNotaFiscal(pedido); // assert A.CallTo(() => _xmlWriter.Record(A <string> .Ignored, A <NotaFiscal> .Ignored)) .MustHaveHappenedOnceExactly(); A.CallTo(() => _notaFiscalRepository.GetNextIdNotaFiscal()).MustHaveHappenedOnceExactly(); A.CallTo(() => _notaFiscalRepository.GetLastIdNotaFiscalItem()).MustHaveHappenedOnceExactly(); A.CallTo(() => _notaFiscalRepository.InsertNotaFiscal(A <int> .Ignored, A <int> .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => _notaFiscalRepository.InsertNotaFiscalItem(A <int> .Ignored, A <string> .Ignored, A <string> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored, A <string> .Ignored, A <string> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored)).MustHaveHappenedOnceOrMore(); Assert.IsTrue(result.Status); }