br_nfe 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +0 -1
- data/Gemfile.lock +1 -1
- data/README.markdown +264 -106
- data/lib/br_nfe/{helper → association}/have_address.rb +1 -1
- data/lib/br_nfe/{helper → association}/have_condicao_pagamento.rb +1 -1
- data/lib/br_nfe/association/have_destinatario.rb +22 -0
- data/lib/br_nfe/association/have_emitente.rb +24 -0
- data/lib/br_nfe/base.rb +37 -27
- data/lib/br_nfe/condicao_pagamento.rb +2 -0
- data/lib/br_nfe/constants.rb +33 -0
- data/lib/br_nfe/endereco.rb +10 -0
- data/lib/br_nfe/helper/string_methods.rb +4 -0
- data/lib/br_nfe/{emitente.rb → person.rb} +11 -7
- data/lib/br_nfe/product/base.rb +82 -0
- data/lib/br_nfe/product/consulta_status_servico.rb +35 -0
- data/lib/br_nfe/product/emitente.rb +8 -0
- data/lib/br_nfe/product/gateway/base.rb +62 -0
- data/lib/br_nfe/product/gateway/web_service_svrs.rb +39 -0
- data/lib/br_nfe/product/value_nf.rb +9 -0
- data/lib/br_nfe/product/xml/soap_env.xml.slim +8 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/consReciNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/consSitNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/consStatServ_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/enviNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/inutNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteConsSitNFe_v3.10.xsd +502 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteConsStatServ_v3.10.xsd +98 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteInutNFe_v3.10.xsd +193 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteNFe_v3.10.xsd +6060 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/nfe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/procInutNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/procNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retConsReciNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retConsSitNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retConsStatServ_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retEnviNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retInutNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/tiposBasico_v3.10.xsd +571 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/xmldsig-core-schema_v1.01.xsd +98 -0
- data/lib/br_nfe/product/xml/v3_10/consulta_status_servico.xml.slim +4 -0
- data/lib/br_nfe/service/association/have_intermediario.rb +26 -0
- data/lib/br_nfe/service/association/have_rps.rb +36 -0
- data/lib/br_nfe/service/base.rb +24 -20
- data/lib/br_nfe/service/betha/v1/cancela_nfse.rb +43 -0
- data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +20 -6
- data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +17 -6
- data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +16 -5
- data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +15 -6
- data/lib/br_nfe/service/betha/v1/gateway.rb +4 -0
- data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +13 -5
- data/lib/br_nfe/service/betha/v1/xml/_tc_identificacao_prestador.xml.slim +3 -0
- data/lib/br_nfe/service/betha/v1/xml/_tc_pedido_cancelamento.xml.slim +4 -0
- data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +8 -0
- data/lib/br_nfe/service/concerns/rules/consulta_nfs_por_rps.rb +1 -1
- data/lib/br_nfe/service/concerns/rules/consulta_nfse.rb +5 -2
- data/lib/br_nfe/service/concerns/values_ts/service_v1.rb +319 -0
- data/lib/br_nfe/service/destinatario.rb +7 -0
- data/lib/br_nfe/service/emitente.rb +8 -0
- data/lib/br_nfe/service/intermediario.rb +1 -12
- data/lib/br_nfe/service/item.rb +7 -7
- data/lib/br_nfe/service/response/build/base.rb +166 -0
- data/lib/br_nfe/service/response/build/cancelamento.rb +62 -0
- data/lib/br_nfe/service/response/build/consulta_lote_rps.rb +25 -0
- data/lib/br_nfe/service/response/build/consulta_nfs_por_rps.rb +25 -0
- data/lib/br_nfe/service/response/build/consulta_nfse.rb +24 -0
- data/lib/br_nfe/service/response/build/consulta_situacao_lote_rps.rb +56 -0
- data/lib/br_nfe/service/response/build/invoice_build.rb +359 -0
- data/lib/br_nfe/service/response/build/recepcao_lote_rps.rb +69 -0
- data/lib/br_nfe/service/response/cancelamento.rb +22 -0
- data/lib/br_nfe/service/response/consulta_lote_rps.rb +18 -0
- data/lib/br_nfe/service/response/consulta_nfs_por_rps.rb +10 -0
- data/lib/br_nfe/service/response/consulta_nfse.rb +10 -0
- data/lib/br_nfe/service/response/consulta_situacao_lote_rps.rb +74 -0
- data/lib/br_nfe/service/response/default.rb +93 -0
- data/lib/br_nfe/{response/service → service/response}/nota_fiscal.rb +19 -12
- data/lib/br_nfe/service/response/paths/v1/tc_nfse.rb +275 -0
- data/lib/br_nfe/service/response/recepcao_lote_rps.rb +35 -0
- data/lib/br_nfe/service/rps.rb +30 -27
- data/lib/br_nfe/service/sc/florianopolis/xml/_service_item.xml.slim +4 -4
- data/lib/br_nfe/service/sc/florianopolis/xml/inf_requisicao.xml.slim +4 -4
- data/lib/br_nfe/service/simpliss/v1/cancela_nfse.rb +16 -6
- data/lib/br_nfe/service/simpliss/v1/consulta_lote_rps.rb +20 -12
- data/lib/br_nfe/service/simpliss/v1/consulta_nfs_por_rps.rb +21 -6
- data/lib/br_nfe/service/simpliss/v1/consulta_nfse.rb +20 -6
- data/lib/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps.rb +17 -6
- data/lib/br_nfe/service/simpliss/v1/recepcao_lote_rps.rb +16 -4
- data/lib/br_nfe/service/simpliss/v1/xml/_tc_item_servico.xml.slim +2 -2
- data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +21 -19
- data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +21 -19
- data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +25 -18
- data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +20 -20
- data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +14 -20
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +11 -16
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +8 -6
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +1 -1
- data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +1 -1
- data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +11 -11
- data/lib/br_nfe/version.rb +1 -1
- data/lib/br_nfe.rb +62 -62
- data/test/br_nfe/association/have_address_test.rb +64 -0
- data/test/br_nfe/association/have_condicao_pagamento_test.rb +75 -0
- data/test/br_nfe/association/have_destinatario_test.rb +76 -0
- data/test/br_nfe/association/have_emitente_test.rb +80 -0
- data/test/br_nfe/base_test.rb +96 -61
- data/test/br_nfe/endereco_test.rb +21 -0
- data/test/br_nfe/person_test.rb +55 -0
- data/test/br_nfe/product/base_test.rb +150 -0
- data/test/br_nfe/product/consulta_status_servico_test.rb +59 -0
- data/test/br_nfe/product/emitente_test.rb +29 -0
- data/test/br_nfe/product/gateway/base_test.rb +16 -0
- data/test/br_nfe/product/gateway/web_service_svrs_test.rb +36 -0
- data/test/br_nfe/service/association/have_intermediario_test.rb +80 -0
- data/test/br_nfe/service/association/have_rps_test.rb +62 -0
- data/test/br_nfe/service/base_test.rb +42 -42
- data/test/br_nfe/service/betha/v1/cancela_nfse_test.rb +90 -0
- data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +105 -5
- data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +103 -5
- data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +114 -5
- data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +118 -5
- data/test/br_nfe/service/betha/v1/gateway_test.rb +1 -1
- data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +51 -5
- data/test/br_nfe/service/concerns/rules/cancelamento_nfs_test.rb +2 -2
- data/test/br_nfe/service/concerns/rules/consulta_nfs_por_rps_test.rb +2 -7
- data/test/br_nfe/service/concerns/rules/consulta_nfse_test.rb +24 -3
- data/test/br_nfe/service/concerns/rules/recepcao_lote_rps_test.rb +1 -1
- data/test/br_nfe/{helper → service/concerns}/values_ts/service_v1_test.rb +2 -2
- data/test/br_nfe/{destinatario_test.rb → service/destinatario_test.rb} +3 -4
- data/test/br_nfe/service/emitente_test.rb +29 -0
- data/test/br_nfe/service/item_test.rb +14 -14
- data/test/br_nfe/service/response/build/base_test.rb +80 -0
- data/test/br_nfe/{response/service → service/response}/default_test.rb +1 -82
- data/test/br_nfe/service/response/nota_fiscal_test.rb +59 -0
- data/test/br_nfe/{response/service → service/response}/paths/v1/tc_nfse_test.rb +10 -10
- data/test/br_nfe/service/rps_test.rb +107 -138
- data/test/br_nfe/service/sc/florianopolis/emission_rps_test.rb +9 -9
- data/test/br_nfe/service/simpliss/v1/base_test.rb +1 -1
- data/test/br_nfe/service/simpliss/v1/cancela_nfse_test.rb +7 -10
- data/test/br_nfe/service/simpliss/v1/consulta_lote_rps_test.rb +11 -18
- data/test/br_nfe/service/simpliss/v1/consulta_nfs_por_rps_test.rb +11 -18
- data/test/br_nfe/service/simpliss/v1/consulta_nfse_test.rb +11 -18
- data/test/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps_test.rb +7 -11
- data/test/br_nfe/service/simpliss/v1/recepcao_lote_rps_test.rb +3 -9
- data/test/br_nfe/service/thema/v1/base_test.rb +1 -1
- data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +7 -14
- data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +6 -17
- data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +6 -13
- data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +11 -18
- data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +7 -11
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_limitado_test.rb +1 -5
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +3 -9
- data/test/factories/base.rb +0 -1
- data/test/factories/{emitente.rb → person.rb} +1 -1
- data/test/factories/product/base.rb +12 -0
- data/test/factories/product/consulta_status_servico.rb +12 -0
- data/test/factories/product/emitente.rb +15 -0
- data/test/factories/product/gateway/base.rb +5 -0
- data/test/factories/product/gateway/web_service_svrs.rb +5 -0
- data/test/factories/service/betha/v1/{cancelamento_nfs.rb → cancela_nfse.rb} +2 -1
- data/test/factories/service/betha/v1/consulta_lote_rps.rb +1 -1
- data/test/factories/service/betha/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/betha/v1/consulta_nfse.rb +1 -1
- data/test/factories/service/betha/v1/consulta_situacao_lote_rps.rb +1 -1
- data/test/factories/{destinatario.rb → service/destinatario.rb} +1 -1
- data/test/factories/service/emitente.rb +15 -0
- data/test/factories/service/item.rb +4 -4
- data/test/factories/service/response/build_response.rb +5 -0
- data/test/factories/service/response/default.rb +6 -0
- data/test/factories/{response/service → service/response}/nota_fiscal.rb +8 -8
- data/test/factories/service/rps.rb +11 -11
- data/test/factories/service/sc/florianopolis/base.rb +1 -1
- data/test/factories/service/sc/florianopolis/cancellation.rb +1 -1
- data/test/factories/service/sc/florianopolis/emission_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/base.rb +1 -1
- data/test/factories/service/simpliss/v1/cancela_nfse.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_lote_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_nfse.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_situacao_lote_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/recepcao_lote_rps.rb +1 -1
- data/test/factories/service/thema/v1/base.rb +1 -1
- data/test/factories/service/thema/v1/cancela_nfse.rb +1 -1
- data/test/factories/service/thema/v1/consulta_lote_rps.rb +1 -1
- data/test/factories/service/thema/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/thema/v1/consulta_nfse.rb +1 -1
- data/test/factories/service/thema/v1/consulta_situacao_lote_rps.rb +1 -1
- data/test/factories/service/thema/v1/recepcao_lote_rps.rb +1 -1
- data/test/fixtures/service/response/betha/v1/cancela_nfse/fault.xml +17 -0
- data/test/fixtures/service/response/betha/v1/cancela_nfse/success.xml +48 -0
- data/test/fixtures/service/response/betha/v1/consulta_lote_rps/fault.xml +18 -0
- data/test/fixtures/service/response/betha/v1/consulta_lote_rps/success.xml +108 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse/fault.xml +18 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse/nfs_empty.xml +12 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse/success.xml +115 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse_por_rps/fault.xml +18 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse_por_rps/success.xml +103 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/error.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/fault.xml +17 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/success.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed_by_code_error.xml +17 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived_by_code_error.xml +17 -0
- data/test/fixtures/service/response/betha/v1/recepcao_lote_rps/error.xml +17 -0
- data/test/fixtures/service/response/betha/v1/recepcao_lote_rps/success.xml +14 -0
- metadata +160 -94
- data/lib/br_nfe/destinatario.rb +0 -26
- data/lib/br_nfe/helper/have_destinatario.rb +0 -18
- data/lib/br_nfe/helper/have_emitente.rb +0 -20
- data/lib/br_nfe/helper/have_intermediario.rb +0 -24
- data/lib/br_nfe/helper/have_rps.rb +0 -34
- data/lib/br_nfe/helper/values_ts/service_v1.rb +0 -317
- data/lib/br_nfe/response/service/build_response.rb +0 -463
- data/lib/br_nfe/response/service/default.rb +0 -185
- data/lib/br_nfe/response/service/paths/base.rb +0 -127
- data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +0 -22
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +0 -25
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +0 -25
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +0 -25
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +0 -31
- data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +0 -36
- data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +0 -271
- data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +0 -36
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +0 -23
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +0 -21
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -21
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_cancelar_nfse_resposta.rb +0 -22
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_lote_rps_resposta.rb +0 -25
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_resposta.rb +0 -25
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -25
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_situacao_lote_rps_resposta.rb +0 -31
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_enviar_lote_rps_resposta.rb +0 -36
- data/lib/br_nfe/service/thema/v1/response_paths/servico_cancelar_nfse_resposta.rb +0 -17
- data/lib/br_nfe/service/thema/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -19
- data/test/br_nfe/emitente_test.rb +0 -46
- data/test/br_nfe/helper/have_address_test.rb +0 -62
- data/test/br_nfe/helper/have_condicao_pagamento_test.rb +0 -71
- data/test/br_nfe/helper/have_destinatario_test.rb +0 -64
- data/test/br_nfe/helper/have_emitente_test.rb +0 -63
- data/test/br_nfe/helper/have_intermediario_test.rb +0 -77
- data/test/br_nfe/helper/have_rps_test.rb +0 -59
- data/test/br_nfe/response/service/build_response_test.rb +0 -205
- data/test/br_nfe/response/service/nota_fiscal_test.rb +0 -41
- data/test/br_nfe/response/service/paths/base_test.rb +0 -196
- data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +0 -25
- data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +0 -34
- data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +0 -54
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +0 -16
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +0 -16
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +0 -16
- data/test/factories/response/service/build_response.rb +0 -5
- data/test/factories/response/service/default.rb +0 -10
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
|
2
2
|
|
|
3
3
|
describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
4
4
|
subject { FactoryGirl.build(:servico_betha_consulta_nfse, emitente: emitente) }
|
|
5
|
-
let(:emitente) { FactoryGirl.build(:
|
|
5
|
+
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
|
6
6
|
|
|
7
7
|
describe "superclass" do
|
|
8
8
|
it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::Gateway }
|
|
@@ -28,10 +28,6 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
|
28
28
|
it { subject.method_wsdl.must_equal :consultar_nfse_envio }
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
it "#response_root_path" do
|
|
32
|
-
subject.response_root_path.must_equal [:consultar_nfse_envio_response]
|
|
33
|
-
end
|
|
34
|
-
|
|
35
31
|
describe "Validação do XML através do XSD" do
|
|
36
32
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
|
|
37
33
|
|
|
@@ -46,4 +42,117 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
|
46
42
|
end
|
|
47
43
|
end
|
|
48
44
|
end
|
|
45
|
+
|
|
46
|
+
it "não deve adicionar a tag InscricaoMunicipal no XML" do
|
|
47
|
+
# Se emitir uma NFS com InscricaoMunicipal 1234 e no cadastro da prefeitura
|
|
48
|
+
# a InscricaoMunicipal estiver cadastrada como 123-4, a nota vai emitir porém
|
|
49
|
+
# no momento de consultar da erro dizendo que a inscrição municipal não existe
|
|
50
|
+
# para o municipio.
|
|
51
|
+
subject.emitente.inscricao_municipal = '12345'
|
|
52
|
+
subject.emitente.cpf_cnpj = '12345678901234'
|
|
53
|
+
content_xml = Nori.new.parse(subject.content_xml).deep_transform_keys!{|k| k.to_s.underscore.to_sym}
|
|
54
|
+
prestador = content_xml[:'ns1:consultar_nfse_envio'][:prestador]
|
|
55
|
+
|
|
56
|
+
prestador[:cnpj].must_equal '12345678901234'
|
|
57
|
+
prestador[:inscricao_municipal].must_be_nil
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe "#request and set response" do
|
|
61
|
+
before { savon.mock! }
|
|
62
|
+
after { savon.unmock! }
|
|
63
|
+
|
|
64
|
+
it "Se não encontrar nenhuma NFe" do
|
|
65
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_nfse/nfs_empty.xml')
|
|
66
|
+
savon.expects(:consultar_nfse_envio).returns(fixture)
|
|
67
|
+
subject.request
|
|
68
|
+
response = subject.response
|
|
69
|
+
|
|
70
|
+
response.notas_fiscais.must_be_empty
|
|
71
|
+
response.status.must_equal :success
|
|
72
|
+
response.successful_request?.must_equal true
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
|
76
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_nfse/fault.xml')
|
|
77
|
+
|
|
78
|
+
savon.expects(:consultar_nfse_envio).returns(fixture)
|
|
79
|
+
subject.request
|
|
80
|
+
response = subject.response
|
|
81
|
+
|
|
82
|
+
response.status.must_equal :falied
|
|
83
|
+
response.error_messages.size.must_equal 1
|
|
84
|
+
response.error_messages[0][:code].must_equal 'E160'
|
|
85
|
+
response.error_messages[0][:message].must_equal 'Arquivo enviado fora da estrutura do arquivo XML de entrada.'
|
|
86
|
+
response.error_messages[0][:solution].must_equal 'Envie um arquivo dentro do schema do arquivo XML de entrada.'
|
|
87
|
+
response.successful_request?.must_equal true
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "Quando encontrar uma nota fiscal com as informações básicas preenchidas" do
|
|
91
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_nfse/success.xml')
|
|
92
|
+
savon.expects(:consultar_nfse_envio).returns(fixture)
|
|
93
|
+
subject.request
|
|
94
|
+
response = subject.response
|
|
95
|
+
|
|
96
|
+
response.notas_fiscais.size.must_equal 1
|
|
97
|
+
response.status.must_equal :success
|
|
98
|
+
response.successful_request?.must_equal true
|
|
99
|
+
|
|
100
|
+
nf = response.notas_fiscais[0]
|
|
101
|
+
nf.numero_nf.must_equal '55'
|
|
102
|
+
nf.codigo_verificacao.must_equal 'F0O08ZQ2M'
|
|
103
|
+
nf.data_emissao.must_equal DateTime.parse('2013-12-17T21:39:57.630-02:00')
|
|
104
|
+
nf.url_nf.must_equal 'http://e-gov.betha.com.br/e-nota/visualizarnotaeletronica?id=tQ12313131=='
|
|
105
|
+
nf.xml_nf[0..89].must_equal '<ConsultarNfseResposta><ListaNfse><ComplNfse><Nfse><InfNfse><Numero>55</Numero><CodigoVeri'
|
|
106
|
+
nf.rps_numero.must_equal '22'
|
|
107
|
+
nf.rps_serie.must_equal 'SN'
|
|
108
|
+
nf.rps_tipo.must_equal '1'
|
|
109
|
+
nf.rps_situacao.must_be_nil
|
|
110
|
+
nf.rps_substituido_numero.must_be_nil
|
|
111
|
+
nf.rps_substituido_serie.must_be_nil
|
|
112
|
+
nf.rps_substituido_tipo.must_be_nil
|
|
113
|
+
nf.data_emissao_rps.must_equal DateTime.parse('2013-12-17T00:00:00-02:00')
|
|
114
|
+
nf.competencia.must_equal DateTime.parse('2013-12-01T00:00:00-02:00')
|
|
115
|
+
nf.natureza_operacao.must_equal '1'
|
|
116
|
+
nf.regime_especial_tributacao.must_be_nil
|
|
117
|
+
nf.optante_simples_nacional.must_equal '1'
|
|
118
|
+
nf.incentivador_cultural.must_be_nil
|
|
119
|
+
nf.outras_informacoes.must_equal 'http://e-gov.betha.com.br/e-nota/visualizarnotaeletronica?id=tQ12313131=='
|
|
120
|
+
nf.item_lista_servico.must_equal '0102'
|
|
121
|
+
nf.cnae_code.must_equal '6202300'
|
|
122
|
+
nf.description.must_equal 'Descrição: 1 Video Institucional. 1.600,00'
|
|
123
|
+
nf.codigo_municipio.must_equal '4204202'
|
|
124
|
+
nf.valor_total_servicos.must_equal '1600'
|
|
125
|
+
nf.iss_retido.must_equal '2'
|
|
126
|
+
nf.total_iss.must_equal '0'
|
|
127
|
+
nf.base_calculo.must_equal '1600'
|
|
128
|
+
nf.iss_aliquota.must_equal '2'
|
|
129
|
+
nf.valor_liquido.must_equal '1600'
|
|
130
|
+
nf.deducoes.must_equal '0'
|
|
131
|
+
nf.valor_pis.must_equal '0.00'
|
|
132
|
+
nf.valor_cofins.must_equal '0.00'
|
|
133
|
+
nf.valor_inss.must_equal '0.00'
|
|
134
|
+
nf.valor_ir.must_equal '0.00'
|
|
135
|
+
nf.valor_csll.must_equal '0.00'
|
|
136
|
+
nf.outras_retencoes.must_be_nil
|
|
137
|
+
nf.desconto_condicionado.must_equal '0'
|
|
138
|
+
nf.desconto_incondicionado.must_equal '0'
|
|
139
|
+
nf.responsavel_retencao.must_be_nil
|
|
140
|
+
nf.numero_processo.must_be_nil
|
|
141
|
+
nf.municipio_incidencia.must_be_nil
|
|
142
|
+
nf.orgao_gerador_municipio.must_equal '4204202'
|
|
143
|
+
nf.orgao_gerador_uf.must_equal 'SC'
|
|
144
|
+
nf.cancelamento_codigo.must_be_nil
|
|
145
|
+
nf.cancelamento_numero_nf.must_be_nil
|
|
146
|
+
nf.cancelamento_cnpj.must_be_nil
|
|
147
|
+
nf.cancelamento_inscricao_municipal.must_be_nil
|
|
148
|
+
nf.cancelamento_municipio.must_be_nil
|
|
149
|
+
nf.cancelamento_sucesso.must_equal false
|
|
150
|
+
nf.cancelamento_data_hora.must_be_nil
|
|
151
|
+
nf.nfe_substituidora.must_be_nil
|
|
152
|
+
nf.codigo_obra.must_be_nil
|
|
153
|
+
nf.codigo_art.must_be_nil
|
|
154
|
+
|
|
155
|
+
nf.destinatario.cpf_cnpj.must_equal '22222222222222'
|
|
156
|
+
end
|
|
157
|
+
end
|
|
49
158
|
end
|
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
|
2
2
|
|
|
3
3
|
describe BrNfe::Service::Betha::V1::ConsultaSituacaoLoteRps do
|
|
4
4
|
subject { FactoryGirl.build(:servico_betha_consulta_situacao_lote_rps, emitente: emitente) }
|
|
5
|
-
let(:emitente) { FactoryGirl.build(:
|
|
5
|
+
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
|
6
6
|
|
|
7
7
|
describe "superclass" do
|
|
8
8
|
it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::ConsultaLoteRps }
|
|
@@ -24,10 +24,6 @@ describe BrNfe::Service::Betha::V1::ConsultaSituacaoLoteRps do
|
|
|
24
24
|
it { subject.method_wsdl.must_equal :consultar_situacao_lote_rps_envio }
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
it "#response_root_path" do
|
|
28
|
-
subject.response_root_path.must_equal [:consultar_situacao_lote_rps_envio_response]
|
|
29
|
-
end
|
|
30
|
-
|
|
31
27
|
describe "Validação do XML através do XSD" do
|
|
32
28
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
|
|
33
29
|
|
|
@@ -42,4 +38,121 @@ describe BrNfe::Service::Betha::V1::ConsultaSituacaoLoteRps do
|
|
|
42
38
|
end
|
|
43
39
|
end
|
|
44
40
|
end
|
|
41
|
+
|
|
42
|
+
it "não deve adicionar a tag InscricaoMunicipal no XML" do
|
|
43
|
+
# Se emitir uma NFS com InscricaoMunicipal 1234 e no cadastro da prefeitura
|
|
44
|
+
# a InscricaoMunicipal estiver cadastrada como 123-4, a nota vai emitir porém
|
|
45
|
+
# no momento de consultar da erro dizendo que a inscrição municipal não existe
|
|
46
|
+
# para o municipio.
|
|
47
|
+
subject.emitente.inscricao_municipal = '12345'
|
|
48
|
+
subject.emitente.cpf_cnpj = '12345678901234'
|
|
49
|
+
content_xml = Nori.new.parse(subject.content_xml).deep_transform_keys!{|k| k.to_s.underscore.to_sym}
|
|
50
|
+
prestador = content_xml[:'ns1:consultar_situacao_lote_rps_envio'][:prestador]
|
|
51
|
+
|
|
52
|
+
prestador[:cnpj].must_equal '12345678901234'
|
|
53
|
+
prestador[:inscricao_municipal].must_be_nil
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe "#request and set response" do
|
|
57
|
+
before { savon.mock! }
|
|
58
|
+
after { savon.unmock! }
|
|
59
|
+
|
|
60
|
+
it "Quando processou o RPS com sucesso deve setar a situation com :success" do
|
|
61
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/success.xml')
|
|
62
|
+
savon.expects(:consultar_situacao_lote_rps_envio).returns(fixture)
|
|
63
|
+
subject.request
|
|
64
|
+
response = subject.response
|
|
65
|
+
|
|
66
|
+
response.must_be_kind_of BrNfe::Service::Response::ConsultaSituacaoLoteRps
|
|
67
|
+
response.situation.must_equal :success
|
|
68
|
+
response.numero_lote.must_equal '10'
|
|
69
|
+
response.status.must_equal :success
|
|
70
|
+
response.successful_request?.must_equal true
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "Quando processou o RPS com erros deve setar a situation com :error" do
|
|
74
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/error.xml')
|
|
75
|
+
savon.expects(:consultar_situacao_lote_rps_envio).returns(fixture)
|
|
76
|
+
subject.request
|
|
77
|
+
response = subject.response
|
|
78
|
+
|
|
79
|
+
response.must_be_kind_of BrNfe::Service::Response::ConsultaSituacaoLoteRps
|
|
80
|
+
response.situation.must_equal :error
|
|
81
|
+
response.numero_lote.must_equal '13'
|
|
82
|
+
response.status.must_equal :success
|
|
83
|
+
response.successful_request?.must_equal true
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "Quando não processou o RPS deve setar a situation com :unprocessed" do
|
|
87
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed.xml')
|
|
88
|
+
savon.expects(:consultar_situacao_lote_rps_envio).returns(fixture)
|
|
89
|
+
subject.request
|
|
90
|
+
response = subject.response
|
|
91
|
+
|
|
92
|
+
response.must_be_kind_of BrNfe::Service::Response::ConsultaSituacaoLoteRps
|
|
93
|
+
response.situation.must_equal :unprocessed
|
|
94
|
+
response.numero_lote.must_equal '11'
|
|
95
|
+
response.status.must_equal :success
|
|
96
|
+
response.successful_request?.must_equal true
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "Quando não encontrar o RPS deve setar a situation com :unreceived" do
|
|
100
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived.xml')
|
|
101
|
+
savon.expects(:consultar_situacao_lote_rps_envio).returns(fixture)
|
|
102
|
+
subject.request
|
|
103
|
+
response = subject.response
|
|
104
|
+
|
|
105
|
+
response.must_be_kind_of BrNfe::Service::Response::ConsultaSituacaoLoteRps
|
|
106
|
+
response.situation.must_equal :unreceived
|
|
107
|
+
response.numero_lote.must_equal '12'
|
|
108
|
+
response.status.must_equal :success
|
|
109
|
+
response.successful_request?.must_equal true
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
|
113
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/fault.xml')
|
|
114
|
+
|
|
115
|
+
savon.expects(:consultar_situacao_lote_rps_envio).returns(fixture)
|
|
116
|
+
subject.request
|
|
117
|
+
response = subject.response
|
|
118
|
+
|
|
119
|
+
response.must_be_kind_of BrNfe::Service::Response::ConsultaSituacaoLoteRps
|
|
120
|
+
response.numero_lote.must_be_nil
|
|
121
|
+
response.situation.must_equal :error
|
|
122
|
+
response.status.must_equal :falied
|
|
123
|
+
response.error_messages.size.must_equal 1
|
|
124
|
+
response.error_messages[0][:code].must_equal 'E86'
|
|
125
|
+
response.error_messages[0][:message].must_equal 'Número do protocolo de recebimento do lote inexistente na base de dados.'
|
|
126
|
+
response.error_messages[0][:solution].must_equal 'Confira se o lote foi enviado e informe o número correto do protocolo de recebimento.'
|
|
127
|
+
response.successful_request?.must_equal true
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "Quando a requisição voltar com erro E4 deve definir a situação como unreceived" do
|
|
131
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived_by_code_error.xml')
|
|
132
|
+
|
|
133
|
+
savon.expects(:consultar_situacao_lote_rps_envio).returns(fixture)
|
|
134
|
+
subject.request
|
|
135
|
+
response = subject.response
|
|
136
|
+
|
|
137
|
+
response.must_be_kind_of BrNfe::Service::Response::ConsultaSituacaoLoteRps
|
|
138
|
+
response.situation.must_equal :unreceived
|
|
139
|
+
response.numero_lote.must_be_nil
|
|
140
|
+
response.status.must_equal :falied
|
|
141
|
+
response.successful_request?.must_equal true
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it "Quando a requisição voltar com erro E92 deve definir a situação como unprocessed" do
|
|
145
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed_by_code_error.xml')
|
|
146
|
+
|
|
147
|
+
savon.expects(:consultar_situacao_lote_rps_envio).returns(fixture)
|
|
148
|
+
subject.request
|
|
149
|
+
response = subject.response
|
|
150
|
+
|
|
151
|
+
response.must_be_kind_of BrNfe::Service::Response::ConsultaSituacaoLoteRps
|
|
152
|
+
response.situation.must_equal :unprocessed
|
|
153
|
+
response.numero_lote.must_be_nil
|
|
154
|
+
response.status.must_equal :falied
|
|
155
|
+
response.successful_request?.must_equal true
|
|
156
|
+
end
|
|
157
|
+
end
|
|
45
158
|
end
|
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
|
3
3
|
describe BrNfe::Service::Betha::V1::Gateway do
|
|
4
4
|
subject { FactoryGirl.build(:br_nfe_servico_betha_v1_gateway, emitente: emitente) }
|
|
5
5
|
let(:rps) { FactoryGirl.build(:br_nfe_rps, :completo) }
|
|
6
|
-
let(:emitente) { FactoryGirl.build(:
|
|
6
|
+
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
|
7
7
|
let(:intermediario) { FactoryGirl.build(:intermediario) }
|
|
8
8
|
|
|
9
9
|
describe "inheritance class" do
|
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
|
2
2
|
|
|
3
3
|
describe BrNfe::Service::Betha::V1::RecepcaoLoteRps do
|
|
4
4
|
subject { FactoryGirl.build(:br_nfe_servico_betha_recepcao_lote_rps, emitente: emitente) }
|
|
5
|
-
let(:emitente) { FactoryGirl.build(:
|
|
5
|
+
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
|
6
6
|
let(:rps_1) { FactoryGirl.build(:br_nfe_rps, valor_pis: '', valor_cofins: nil, valor_inss: nil, valor_ir: nil, valor_csll: nil) }
|
|
7
7
|
let(:rps_2) { FactoryGirl.build(:br_nfe_rps, :completo) }
|
|
8
8
|
|
|
@@ -44,10 +44,6 @@ describe BrNfe::Service::Betha::V1::RecepcaoLoteRps do
|
|
|
44
44
|
it { subject.method_wsdl.must_equal :enviar_lote_rps_envio }
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
it "#response_root_path" do
|
|
48
|
-
subject.response_root_path.must_equal [:enviar_lote_rps_envio_response]
|
|
49
|
-
end
|
|
50
|
-
|
|
51
47
|
describe "Validação do XML através do XSD" do
|
|
52
48
|
let(:rps_basico) { FactoryGirl.build(:br_nfe_rps) }
|
|
53
49
|
let(:rps_completo) { FactoryGirl.build(:br_nfe_rps, :completo) }
|
|
@@ -76,5 +72,55 @@ describe BrNfe::Service::Betha::V1::RecepcaoLoteRps do
|
|
|
76
72
|
end
|
|
77
73
|
end
|
|
78
74
|
|
|
75
|
+
it "Deve adicionar a tag InscricaoMunicipal no XML" do
|
|
76
|
+
subject.lote_rps = [rps_1]
|
|
77
|
+
# Esse test foi feito devido a sobrescrita do XML _tc_identificacao_prestador
|
|
78
|
+
subject.emitente.inscricao_municipal = '12345'
|
|
79
|
+
subject.emitente.cpf_cnpj = '12345678901234'
|
|
80
|
+
content_xml = Nori.new.parse(subject.content_xml).deep_transform_keys!{|k| k.to_s.underscore.to_sym}
|
|
81
|
+
prestador = content_xml[:'ns1:enviar_lote_rps_envio'][:lote_rps][:lista_rps][:rps][:inf_rps][:prestador]
|
|
82
|
+
|
|
83
|
+
prestador[:cnpj].must_equal '12345678901234'
|
|
84
|
+
prestador[:inscricao_municipal].must_equal '12345'
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe "#request and set response" do
|
|
88
|
+
before { savon.mock! }
|
|
89
|
+
after { savon.unmock! }
|
|
90
|
+
|
|
91
|
+
it "Quando gravou o RPS com sucesso deve setar seus valores corretamente na resposta" do
|
|
92
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/recepcao_lote_rps/success.xml')
|
|
93
|
+
|
|
94
|
+
savon.expects(:enviar_lote_rps_envio).returns(fixture)
|
|
95
|
+
subject.request
|
|
96
|
+
response = subject.response
|
|
97
|
+
|
|
98
|
+
response.must_be_kind_of BrNfe::Service::Response::RecepcaoLoteRps
|
|
99
|
+
response.protocolo.must_equal '925721130413341'
|
|
100
|
+
response.data_recebimento.must_equal Time.parse('2016-09-22T18:11:20.310-03:00')
|
|
101
|
+
response.numero_lote.must_equal '1'
|
|
102
|
+
response.status.must_equal :success
|
|
103
|
+
response.successful_request?.must_equal true
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
|
107
|
+
fixture = File.read(BrNfe.root+'/test/fixtures/service/response/betha/v1/recepcao_lote_rps/error.xml')
|
|
108
|
+
|
|
109
|
+
savon.expects(:enviar_lote_rps_envio).returns(fixture)
|
|
110
|
+
subject.request
|
|
111
|
+
response = subject.response
|
|
112
|
+
|
|
113
|
+
response.must_be_kind_of BrNfe::Service::Response::RecepcaoLoteRps
|
|
114
|
+
response.protocolo.must_be_nil
|
|
115
|
+
response.data_recebimento.must_be_nil
|
|
116
|
+
response.numero_lote.must_be_nil
|
|
117
|
+
response.status.must_equal :falied
|
|
118
|
+
response.error_messages.size.must_equal 1
|
|
119
|
+
response.error_messages[0][:code].must_equal 'E44'
|
|
120
|
+
response.error_messages[0][:message].must_equal 'CNPJ do prestador inválido'
|
|
121
|
+
response.error_messages[0][:solution].must_equal 'Informe o número do CNPJ correto do prestador.'
|
|
122
|
+
response.successful_request?.must_equal true
|
|
123
|
+
end
|
|
124
|
+
end
|
|
79
125
|
|
|
80
126
|
end
|
|
@@ -6,10 +6,10 @@ end
|
|
|
6
6
|
|
|
7
7
|
describe BrNfe::Service::Concerns::Rules::CancelamentoNfs do
|
|
8
8
|
subject { RuleCancelamentoNfsTest.new(nfe_number: 1254, codigo_cancelamento: 1, emitente: emitente) }
|
|
9
|
-
let(:emitente) { FactoryGirl.build(:
|
|
9
|
+
let(:emitente) { FactoryGirl.build(:service_emitente, endereco: endereco) }
|
|
10
10
|
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
11
11
|
|
|
12
12
|
it { must validate_presence_of(:nfe_number) }
|
|
13
13
|
it { must validate_presence_of(:codigo_cancelamento) }
|
|
14
|
-
|
|
14
|
+
it { must validate_presence_of(:codigo_ibge_municipio_prestacao) }
|
|
15
15
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
|
-
require 'br_nfe/helper/have_rps_test'
|
|
3
2
|
|
|
4
3
|
|
|
5
4
|
describe BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps do
|
|
@@ -8,16 +7,12 @@ describe BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps do
|
|
|
8
7
|
end
|
|
9
8
|
|
|
10
9
|
subject { RuleConsultaNfsPorRpsTest.new(rps: rps, emitente: emitente) }
|
|
11
|
-
let(:emitente) { FactoryGirl.build(:
|
|
10
|
+
let(:emitente) { FactoryGirl.build(:service_emitente, endereco: endereco) }
|
|
12
11
|
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
13
12
|
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
|
14
13
|
|
|
15
14
|
it "deve ter o o helper HaveRps incluido" do
|
|
16
|
-
subject.class.included_modules.must_include BrNfe::
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe "rps" do
|
|
20
|
-
include BrNfeTest::HelperTest::HaveRpsTest
|
|
15
|
+
subject.class.included_modules.must_include BrNfe::Service::Association::HaveRps
|
|
21
16
|
end
|
|
22
17
|
|
|
23
18
|
describe "#validate_rps" do
|
|
@@ -6,16 +6,16 @@ end
|
|
|
6
6
|
|
|
7
7
|
describe BrNfe::Service::Concerns::Rules::ConsultaNfse do
|
|
8
8
|
subject { RuleConsultaNfseTest.new(nfe_number: '554', start_date: 1.month.ago, end_date: Time.now, emitente: emitente) }
|
|
9
|
-
let(:emitente) { FactoryGirl.build(:
|
|
9
|
+
let(:emitente) { FactoryGirl.build(:service_emitente, endereco: endereco) }
|
|
10
10
|
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
11
11
|
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
|
12
12
|
|
|
13
13
|
it "deve ter o o helper HaveDestinatario incluido" do
|
|
14
|
-
subject.class.included_modules.must_include BrNfe::
|
|
14
|
+
subject.class.included_modules.must_include BrNfe::Association::HaveDestinatario
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it "deve ter o o helper HaveIntermediario incluido" do
|
|
18
|
-
subject.class.included_modules.must_include BrNfe::
|
|
18
|
+
subject.class.included_modules.must_include BrNfe::Service::Association::HaveIntermediario
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
describe "#start_date" do
|
|
@@ -39,4 +39,25 @@ describe BrNfe::Service::Concerns::Rules::ConsultaNfse do
|
|
|
39
39
|
subject.end_date.must_equal ''
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
|
+
|
|
43
|
+
describe "#destinatario" do
|
|
44
|
+
class OtherClassDestinatario < BrNfe::ActiveModelBase
|
|
45
|
+
end
|
|
46
|
+
it "deve ter incluso o module HaveDestinatario" do
|
|
47
|
+
subject.class.included_modules.must_include BrNfe::Association::HaveDestinatario
|
|
48
|
+
end
|
|
49
|
+
it "o método #destinatario_class deve ter por padrão a class BrNfe::Service::Destinatario" do
|
|
50
|
+
subject.destinatario.must_be_kind_of BrNfe::Service::Destinatario
|
|
51
|
+
subject.send(:destinatario_class).must_equal BrNfe::Service::Destinatario
|
|
52
|
+
end
|
|
53
|
+
it "a class do destinatario pode ser modificada através da configuração destinatario_service_class" do
|
|
54
|
+
BrNfe.destinatario_service_class = OtherClassDestinatario
|
|
55
|
+
subject.destinatario.must_be_kind_of OtherClassDestinatario
|
|
56
|
+
subject.send(:destinatario_class).must_equal OtherClassDestinatario
|
|
57
|
+
|
|
58
|
+
# É necessário voltar a configuração original para não falhar outros testes
|
|
59
|
+
BrNfe.destinatario_service_class = BrNfe::Service::Destinatario
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
42
63
|
end
|
|
@@ -6,7 +6,7 @@ end
|
|
|
6
6
|
|
|
7
7
|
describe BrNfe::Service::Concerns::Rules::RecepcaoLoteRps do
|
|
8
8
|
subject { RuleRecepcaoLoteRpsTest.new(numero_lote_rps: 545, operacao: '1', emitente: emitente) }
|
|
9
|
-
let(:emitente) { FactoryGirl.build(:
|
|
9
|
+
let(:emitente) { FactoryGirl.build(:service_emitente, endereco: endereco) }
|
|
10
10
|
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
11
11
|
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
|
12
12
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
|
-
describe BrNfe::
|
|
3
|
+
describe BrNfe::Service::Concerns::ValuesTs::ServiceV1 do
|
|
4
4
|
|
|
5
5
|
class HelperValuesTsServiceV1Test < BrNfe::ActiveModelBase
|
|
6
|
-
include BrNfe::
|
|
6
|
+
include BrNfe::Service::Concerns::ValuesTs::ServiceV1
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
subject { HelperValuesTsServiceV1Test.new }
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
|
-
require 'br_nfe/helper/have_address_test.rb'
|
|
3
2
|
|
|
4
|
-
describe BrNfe::Destinatario do
|
|
5
|
-
subject { FactoryGirl.build(:
|
|
3
|
+
describe BrNfe::Service::Destinatario do
|
|
4
|
+
subject { FactoryGirl.build(:service_destinatario, endereco: endereco) }
|
|
6
5
|
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
7
6
|
|
|
8
7
|
describe "validations" do
|
|
@@ -25,7 +24,7 @@ describe BrNfe::Destinatario do
|
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
describe "#endereco" do
|
|
28
|
-
include BrNfeTest::HelperTest::HaveAddressTest
|
|
27
|
+
# include BrNfeTest::HelperTest::HaveAddressTest
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
describe "#razao_social" do
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Service::Emitente do
|
|
4
|
+
subject { FactoryGirl.build(:service_emitente, endereco: endereco) }
|
|
5
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
6
|
+
|
|
7
|
+
it "deve herdar da classe ::Person" do
|
|
8
|
+
subject.must_be_kind_of BrNfe::Service::Emitente
|
|
9
|
+
subject.must_be_kind_of BrNfe::Person
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe "validations" do
|
|
13
|
+
it { must validate_presence_of(:inscricao_municipal) }
|
|
14
|
+
it { must validate_presence_of(:natureza_operacao) }
|
|
15
|
+
describe "valida o endereco" do
|
|
16
|
+
it "deve ser inválido se endereco for invalido" do
|
|
17
|
+
subject.endereco.stubs(:valid?).returns(false)
|
|
18
|
+
subject.endereco.stubs(:errors).returns(stub(full_messages: ["Erro 1"] ))
|
|
19
|
+
subject.valid?.must_equal false
|
|
20
|
+
subject.errors.full_messages.include?("Endereço: Erro 1").must_equal true
|
|
21
|
+
end
|
|
22
|
+
it "deve ser válido se endereco for valido" do
|
|
23
|
+
subject.endereco.stubs(:valid?).returns(true)
|
|
24
|
+
subject.valid?.must_equal true
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -4,31 +4,31 @@ describe BrNfe::Service::Item do
|
|
|
4
4
|
subject { FactoryGirl.build(:service_item) }
|
|
5
5
|
|
|
6
6
|
describe "#default_values" do
|
|
7
|
-
context "#
|
|
7
|
+
context "#quantidade" do
|
|
8
8
|
it "valor padrão deve ser 1" do
|
|
9
|
-
subject.class.new.
|
|
9
|
+
subject.class.new.quantidade.must_equal 1
|
|
10
10
|
end
|
|
11
11
|
it "posso modificar o valor" do
|
|
12
|
-
subject.class.new(
|
|
12
|
+
subject.class.new(quantidade: 50.88).quantidade.must_equal 50.88
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
describe "#
|
|
17
|
+
describe "#valor_total" do
|
|
18
18
|
it "se não for setado nenhum valor deve sempre retornar a multiplicação entre a quantidade e o valor unitário" do
|
|
19
|
-
subject.
|
|
20
|
-
subject.assign_attributes(
|
|
21
|
-
subject.
|
|
19
|
+
subject.valor_total = nil
|
|
20
|
+
subject.assign_attributes(quantidade: 3.5, valor_unitario: 10.0)
|
|
21
|
+
subject.valor_total.must_equal 35.0
|
|
22
22
|
end
|
|
23
|
-
it "se setar um valor em
|
|
24
|
-
subject.
|
|
25
|
-
subject.assign_attributes(
|
|
26
|
-
subject.
|
|
23
|
+
it "se setar um valor em valor_total não deve multiplicar a quantidade com o valor unitário" do
|
|
24
|
+
subject.valor_total = 66.0
|
|
25
|
+
subject.assign_attributes(quantidade: 3.5, valor_unitario: 10.0)
|
|
26
|
+
subject.valor_total.must_equal 66.0
|
|
27
27
|
end
|
|
28
28
|
it "se quantidade ou valor unitário forem nil deve retornar zero" do
|
|
29
|
-
subject.
|
|
30
|
-
subject.assign_attributes(
|
|
31
|
-
subject.
|
|
29
|
+
subject.valor_total = nil
|
|
30
|
+
subject.assign_attributes(quantidade: nil, valor_unitario: nil)
|
|
31
|
+
subject.valor_total.must_equal 0.0
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Service::Response::Build::Base do
|
|
4
|
+
subject { FactoryGirl.build(:service_build_response) }
|
|
5
|
+
let(:response) { FactoryGirl.build(:response_service_default) }
|
|
6
|
+
|
|
7
|
+
describe "#find_value_for_keys" do
|
|
8
|
+
let(:var_hash) { {lvl1: {lvl2: {lvl3: 'value' } } } }
|
|
9
|
+
|
|
10
|
+
it "deve retornar o valor do hash quando encontra-lo" do
|
|
11
|
+
subject.find_value_for_keys(var_hash, [:lvl1, :lvl2, :lvl3]).must_equal 'value'
|
|
12
|
+
end
|
|
13
|
+
it "Se as chaves não exisitrem deve retornar nil" do
|
|
14
|
+
subject.find_value_for_keys(var_hash, [:lvl1, :noexist, :lvl4]).must_be_nil
|
|
15
|
+
end
|
|
16
|
+
it "o valor da chave não for um hash e ainda não terminar o loop não deve dar erro" do
|
|
17
|
+
subject.find_value_for_keys(var_hash, [:lvl1, :lvl2, :lvl3, :lvl4]).must_be_nil
|
|
18
|
+
end
|
|
19
|
+
it "pode retornar um hash se o ultimo valor for Hash" do
|
|
20
|
+
subject.find_value_for_keys(var_hash, [:lvl1, :lvl2]).must_equal({lvl3: 'value'})
|
|
21
|
+
end
|
|
22
|
+
it "se não passar apenas uma chave sem array deve retorar o valor da chave" do
|
|
23
|
+
subject.find_value_for_keys(var_hash, :lvl1).must_equal({lvl2: {lvl3: 'value'}})
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "#path_with_root" do
|
|
28
|
+
it "deve concatenar o array do parametro com o Array do root path" do
|
|
29
|
+
subject.keys_root_path = [:root_path]
|
|
30
|
+
subject.path_with_root([:child, :child2]).must_equal([:root_path, :child, :child2])
|
|
31
|
+
end
|
|
32
|
+
it "se o path do params estiver em branco deve retornar nil" do
|
|
33
|
+
subject.keys_root_path = [:root_path]
|
|
34
|
+
subject.path_with_root([]).must_be_nil
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "#get_message_for_path" do
|
|
39
|
+
before do
|
|
40
|
+
subject.stubs(:savon_body).returns(:savon_body)
|
|
41
|
+
subject.stubs(:path_with_root).with(:msg_path).returns([:msg, :path])
|
|
42
|
+
end
|
|
43
|
+
it "Quando ao procurar a mensagem retornar um Hash deve buscar a msg pelo metodo get_message_for_hash" do
|
|
44
|
+
subject.expects(:find_value_for_keys).with(:savon_body, [:msg, :path]).returns({message: 'ok'}).in_sequence(sequence_1)
|
|
45
|
+
subject.expects(:get_message_for_hash).with({message: 'ok'}).returns("MSG")
|
|
46
|
+
|
|
47
|
+
subject.get_message_for_path(:msg_path).must_equal ['MSG']
|
|
48
|
+
end
|
|
49
|
+
it "Quando ao procurar a mensagem retornar um Array deve buscar as msgs do array pelo metodo get_message_for_hash" do
|
|
50
|
+
subject.expects(:find_value_for_keys).with(:savon_body, [:msg, :path]).returns([{msg: 1},{msg: 2}]).in_sequence(sequence_1)
|
|
51
|
+
subject.expects(:get_message_for_hash).with({msg: 1}).returns("MSG1").in_sequence(sequence_1)
|
|
52
|
+
subject.expects(:get_message_for_hash).with({msg: 2}).returns("MSG2").in_sequence(sequence_1)
|
|
53
|
+
|
|
54
|
+
subject.get_message_for_path(:msg_path).must_equal ['MSG1','MSG2']
|
|
55
|
+
end
|
|
56
|
+
it "Quando ao procurar a mensagem retornar uma String deve add a string na msg" do
|
|
57
|
+
subject.expects(:find_value_for_keys).with(:savon_body, [:msg, :path]).returns('MESSAGE').in_sequence(sequence_1)
|
|
58
|
+
subject.expects(:get_message_for_hash).never
|
|
59
|
+
|
|
60
|
+
subject.get_message_for_path(:msg_path).must_equal ['MESSAGE']
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe "#get_message_for_hash" do
|
|
65
|
+
it "deve retornar um Hash com :code, :message e :solution que devem ser encontradas no has do parametro" do
|
|
66
|
+
subject.stubs(:message_code_key).returns(:codigo)
|
|
67
|
+
subject.stubs(:message_msg_key).returns(:mensagem)
|
|
68
|
+
subject.stubs(:message_solution_key).returns(:solucao)
|
|
69
|
+
result = subject.get_message_for_hash({codigo: 'CODE', mensagem: 'Mensagem de erro', solucao: "Solução"})
|
|
70
|
+
result.must_equal({
|
|
71
|
+
code: 'CODE',
|
|
72
|
+
message: 'Mensagem de erro',
|
|
73
|
+
solution: 'Solução'
|
|
74
|
+
})
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
end
|