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
data/test/br_nfe/base_test.rb
CHANGED
|
@@ -1,9 +1,38 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
|
-
require 'br_nfe/helper/have_emitente_test'
|
|
3
2
|
|
|
4
3
|
describe BrNfe::Base do
|
|
5
4
|
subject { FactoryGirl.build(:br_nfe_base, emitente: emitente) }
|
|
6
|
-
let(:emitente) { FactoryGirl.build(:
|
|
5
|
+
let(:emitente) { FactoryGirl.build(:person) }
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
BrNfe::Base.any_instance.stubs(:emitente_class).returns(BrNfe::Person)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "#ibge_code_of_issuer_city" do
|
|
12
|
+
it "se não setar um valor deve pegar o valor do codigo IBGE do endereço do emitente" do
|
|
13
|
+
subject.emitente.endereco.codigo_municipio = '12345678'
|
|
14
|
+
subject.ibge_code_of_issuer_city = nil
|
|
15
|
+
subject.ibge_code_of_issuer_city.must_equal '12345678'
|
|
16
|
+
end
|
|
17
|
+
it "se setar o valor em ibge_code_of_issuer_city não deve pegar do endereço do emitente" do
|
|
18
|
+
subject.emitente.endereco.codigo_municipio = '12345678'
|
|
19
|
+
subject.ibge_code_of_issuer_city = 78978945
|
|
20
|
+
subject.ibge_code_of_issuer_city.must_equal '78978945'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe "#ibge_code_of_issuer_uf" do
|
|
25
|
+
it "se não setar um valor deve pegar o valor do codigo IBGE do endereço do emitente" do
|
|
26
|
+
subject.emitente.endereco.codigo_ibge_uf = '42'
|
|
27
|
+
subject.ibge_code_of_issuer_uf = nil
|
|
28
|
+
subject.ibge_code_of_issuer_uf.must_equal '42'
|
|
29
|
+
end
|
|
30
|
+
it "se setar o valor em ibge_code_of_issuer_uf não deve pegar do endereço do emitente" do
|
|
31
|
+
subject.emitente.endereco.codigo_ibge_uf = '43'
|
|
32
|
+
subject.ibge_code_of_issuer_uf = 42
|
|
33
|
+
subject.ibge_code_of_issuer_uf.must_equal '42'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
7
36
|
|
|
8
37
|
describe "validations" do
|
|
9
38
|
context "obrigatoriedade do certificado" do
|
|
@@ -41,7 +70,9 @@ describe BrNfe::Base do
|
|
|
41
70
|
end
|
|
42
71
|
|
|
43
72
|
describe "#emitente" do
|
|
44
|
-
|
|
73
|
+
it "deve conter o module HaveEmitente" do
|
|
74
|
+
subject.class.included_modules.must_include BrNfe::Association::HaveEmitente
|
|
75
|
+
end
|
|
45
76
|
end
|
|
46
77
|
|
|
47
78
|
describe "#env" do
|
|
@@ -172,34 +203,78 @@ describe BrNfe::Base do
|
|
|
172
203
|
end
|
|
173
204
|
end
|
|
174
205
|
|
|
206
|
+
describe "ssl_version" do
|
|
207
|
+
it "por padrão deve retornar :SSLv3" do
|
|
208
|
+
subject.ssl_version.must_equal :SSLv3
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
describe '#ssl_request?' do
|
|
213
|
+
it "por padrão não deve instanciar o client_wsdl com ssl" do
|
|
214
|
+
subject.ssl_request?.must_equal false
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
175
218
|
describe "#client_wsdl" do
|
|
176
219
|
it "deve instanciar um Savon.client com a configuração adequada" do
|
|
177
220
|
# Stub metodos para configuração do client WSDL
|
|
178
221
|
subject.expects(:wsdl).returns('wsdl')
|
|
179
222
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
223
|
+
# Ajusto a configuração da gem para testar
|
|
224
|
+
BrNfe.stubs(:client_wsdl_log).returns('client_wsdl_log')
|
|
225
|
+
BrNfe.stubs(:client_wsdl_pretty_print_xml).returns('client_wsdl_pretty_print_xml')
|
|
226
|
+
# Não deve pegar o certificado para configurar o client
|
|
227
|
+
subject.expects(:ssl_version).never
|
|
228
|
+
subject.expects(:certificate).never
|
|
229
|
+
subject.expects(:certificate_key).never
|
|
230
|
+
subject.expects(:certificate_pkcs12_password).never
|
|
231
|
+
|
|
232
|
+
subject.instance_variable_get(:@client_wsdl).must_be_nil
|
|
233
|
+
|
|
234
|
+
client_wsdl = subject.client_wsdl
|
|
235
|
+
|
|
236
|
+
client_wsdl.globals[:wsdl].must_equal 'wsdl'
|
|
237
|
+
client_wsdl.globals[:log].must_equal 'client_wsdl_log'
|
|
238
|
+
client_wsdl.globals[:pretty_print_xml].must_equal 'client_wsdl_pretty_print_xml'
|
|
239
|
+
client_wsdl.globals[:ssl_verify_mode].must_equal :none
|
|
240
|
+
|
|
241
|
+
client_wsdl.globals[:ssl_version].must_be_nil
|
|
242
|
+
client_wsdl.globals[:ssl_cert].must_be_nil
|
|
243
|
+
client_wsdl.globals[:ssl_cert_key].must_be_nil
|
|
244
|
+
client_wsdl.globals[:ssl_cert_key_password].must_be_nil
|
|
245
|
+
|
|
246
|
+
subject.instance_variable_get(:@client_wsdl).must_equal client_wsdl
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
it "se ssl_request? for true então deve instanciar um Savon.client com a configuração de SSL" do
|
|
250
|
+
# Stub metodos para configuração do client WSDL
|
|
251
|
+
subject.expects(:wsdl).returns('wsdl')
|
|
184
252
|
|
|
185
253
|
# Ajusto a configuração da gem para testar
|
|
186
|
-
BrNfe.client_wsdl_log
|
|
187
|
-
BrNfe.client_wsdl_pretty_print_xml
|
|
254
|
+
BrNfe.stubs(:client_wsdl_log).returns('client_wsdl_log')
|
|
255
|
+
BrNfe.stubs(:client_wsdl_pretty_print_xml).returns('client_wsdl_pretty_print_xml')
|
|
256
|
+
# Não deve pegar o certificado para configurar o client
|
|
257
|
+
subject.expects(:ssl_version).returns(:TLSv1)
|
|
258
|
+
subject.expects(:certificate).returns(:certificate)
|
|
259
|
+
subject.expects(:certificate_key).returns(:certificate_key)
|
|
260
|
+
subject.expects(:certificate_pkcs12_password).returns(:certificate_pkcs12_password)
|
|
261
|
+
subject.expects(:ssl_request?).returns(true)
|
|
188
262
|
|
|
189
263
|
subject.instance_variable_get(:@client_wsdl).must_be_nil
|
|
190
264
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
265
|
+
client_wsdl = subject.client_wsdl
|
|
266
|
+
|
|
267
|
+
client_wsdl.globals[:wsdl].must_equal 'wsdl'
|
|
268
|
+
client_wsdl.globals[:log].must_equal 'client_wsdl_log'
|
|
269
|
+
client_wsdl.globals[:pretty_print_xml].must_equal 'client_wsdl_pretty_print_xml'
|
|
270
|
+
client_wsdl.globals[:ssl_verify_mode].must_equal :none
|
|
271
|
+
|
|
272
|
+
client_wsdl.globals[:ssl_version].must_equal :TLSv1
|
|
273
|
+
client_wsdl.globals[:ssl_cert].must_equal :certificate
|
|
274
|
+
client_wsdl.globals[:ssl_cert_key].must_equal :certificate_key
|
|
275
|
+
client_wsdl.globals[:ssl_cert_key_password].must_equal :certificate_pkcs12_password
|
|
276
|
+
|
|
277
|
+
subject.instance_variable_get(:@client_wsdl).must_equal client_wsdl
|
|
203
278
|
end
|
|
204
279
|
it "se ja tiver valor na variavel @client_wsdl deve manter esse valor" do
|
|
205
280
|
Savon.expects(:client).never
|
|
@@ -209,46 +284,6 @@ describe BrNfe::Base do
|
|
|
209
284
|
end
|
|
210
285
|
end
|
|
211
286
|
|
|
212
|
-
describe '#client_wsdl_ssl_verify_mode' do
|
|
213
|
-
it "se eu setar um valor deve retornar esse valor" do
|
|
214
|
-
subject.client_wsdl_ssl_verify_mode = :value_client_wsdl_ssl_verify_mode
|
|
215
|
-
subject.client_wsdl_ssl_verify_mode.must_equal :value_client_wsdl_ssl_verify_mode
|
|
216
|
-
end
|
|
217
|
-
it "se não setar nenhum valor deve retornar o valor da configuração" do
|
|
218
|
-
subject.class.new.client_wsdl_ssl_verify_mode.must_equal BrNfe.client_wsdl_ssl_verify_mode
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
describe '#client_wsdl_ssl_cert_file' do
|
|
223
|
-
it "se eu setar um valor deve retornar esse valor" do
|
|
224
|
-
subject.client_wsdl_ssl_cert_file = :value_client_wsdl_ssl_cert_file
|
|
225
|
-
subject.client_wsdl_ssl_cert_file.must_equal :value_client_wsdl_ssl_cert_file
|
|
226
|
-
end
|
|
227
|
-
it "se não setar nenhum valor deve retornar o valor da configuração" do
|
|
228
|
-
subject.class.new.client_wsdl_ssl_cert_file.must_equal BrNfe.client_wsdl_ssl_cert_file
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
describe '#client_wsdl_ssl_cert_key_file' do
|
|
233
|
-
it "se eu setar um valor deve retornar esse valor" do
|
|
234
|
-
subject.client_wsdl_ssl_cert_key_file = :value_client_wsdl_ssl_cert_key_file
|
|
235
|
-
subject.client_wsdl_ssl_cert_key_file.must_equal :value_client_wsdl_ssl_cert_key_file
|
|
236
|
-
end
|
|
237
|
-
it "se não setar nenhum valor deve retornar o valor da configuração" do
|
|
238
|
-
subject.class.new.client_wsdl_ssl_cert_key_file.must_equal BrNfe.client_wsdl_ssl_cert_key_file
|
|
239
|
-
end
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
describe '#client_wsdl_ssl_cert_key_password' do
|
|
243
|
-
it "se eu setar um valor deve retornar esse valor" do
|
|
244
|
-
subject.client_wsdl_ssl_cert_key_password = :value_client_wsdl_ssl_cert_key_password
|
|
245
|
-
subject.client_wsdl_ssl_cert_key_password.must_equal :value_client_wsdl_ssl_cert_key_password
|
|
246
|
-
end
|
|
247
|
-
it "se não setar nenhum valor deve retornar o valor da configuração" do
|
|
248
|
-
subject.class.new.client_wsdl_ssl_cert_key_password.must_equal BrNfe.client_wsdl_ssl_cert_key_password
|
|
249
|
-
end
|
|
250
|
-
end
|
|
251
|
-
|
|
252
287
|
describe "#certificate_pkcs12_value" do
|
|
253
288
|
it "se tiver algum valor setado deve retornar esse valor" do
|
|
254
289
|
subject.certificate_pkcs12_value = "algum valor"
|
|
@@ -10,6 +10,10 @@ describe BrNfe::Endereco do
|
|
|
10
10
|
it { must validate_presence_of(:codigo_municipio) }
|
|
11
11
|
it { must validate_presence_of(:uf) }
|
|
12
12
|
it { must validate_presence_of(:cep) }
|
|
13
|
+
it { must validate_inclusion_of(:codigo_ibge_uf).
|
|
14
|
+
in_array(BrNfe::Constants::CODIGO_IBGE_UF).
|
|
15
|
+
allow_blank
|
|
16
|
+
}
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
describe "#default_values" do
|
|
@@ -56,4 +60,21 @@ describe BrNfe::Endereco do
|
|
|
56
60
|
end
|
|
57
61
|
end
|
|
58
62
|
|
|
63
|
+
describe "#codigo_ibge_uf" do
|
|
64
|
+
it "se não setar nenhum valor deve pegar os primeiros 2 dígitos do código do município" do
|
|
65
|
+
subject.assign_attributes(codigo_ibge_uf: nil, codigo_municipio: 123456)
|
|
66
|
+
subject.codigo_ibge_uf.must_equal '12'
|
|
67
|
+
subject.assign_attributes(codigo_ibge_uf: nil, codigo_municipio: '65347')
|
|
68
|
+
subject.codigo_ibge_uf.must_equal '65'
|
|
69
|
+
end
|
|
70
|
+
it "se não tiver valor setado no código IBGE da cidade não da erro" do
|
|
71
|
+
subject.assign_attributes(codigo_ibge_uf: nil, codigo_municipio: nil)
|
|
72
|
+
subject.codigo_ibge_uf.must_equal ''
|
|
73
|
+
end
|
|
74
|
+
it "se setar o código ibge da uf diretamente deve desconsiderar o código do municipio" do
|
|
75
|
+
subject.assign_attributes(codigo_ibge_uf: '44', codigo_municipio: 123456)
|
|
76
|
+
subject.codigo_ibge_uf.must_equal '44'
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
59
80
|
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Person do
|
|
4
|
+
subject { FactoryGirl.build(:person, endereco: endereco) }
|
|
5
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
6
|
+
|
|
7
|
+
describe "validations" do
|
|
8
|
+
it { must validate_presence_of(:cpf_cnpj) }
|
|
9
|
+
it { must validate_presence_of(:razao_social) }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "deve ter alias attribute com cpf, cnpj e cpf_cnpj" do
|
|
13
|
+
subject.cpf_cnpj = '123'
|
|
14
|
+
subject.cpf.must_equal '123'
|
|
15
|
+
subject.cnpj.must_equal '123'
|
|
16
|
+
|
|
17
|
+
subject.cnpj = '665'
|
|
18
|
+
subject.cpf_cnpj.must_equal '665'
|
|
19
|
+
subject.cpf.must_equal '665'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe "#endereco" do
|
|
23
|
+
class OtherClassEndereco < BrNfe::ActiveModelBase
|
|
24
|
+
end
|
|
25
|
+
it "deve ter incluso o module HaveAddress" do
|
|
26
|
+
subject.class.included_modules.must_include BrNfe::Association::HaveAddress
|
|
27
|
+
end
|
|
28
|
+
it "o método endereco por padrão deve retornar um objeto da class BrNfe::Endereco" do
|
|
29
|
+
subject.endereco.must_be_kind_of BrNfe::Endereco
|
|
30
|
+
end
|
|
31
|
+
it "a classe de endereço deve derivar da configuração endereco_class" do
|
|
32
|
+
BrNfe.endereco_class.must_equal BrNfe::Endereco
|
|
33
|
+
BrNfe.endereco_class = OtherClassEndereco
|
|
34
|
+
subject.endereco.must_be_kind_of OtherClassEndereco
|
|
35
|
+
|
|
36
|
+
# É necessário voltar a configuração original para não falhar outros testes
|
|
37
|
+
BrNfe.endereco_class = BrNfe::Endereco
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "#razao_social" do
|
|
42
|
+
it "deve retornar a string em maiusculoo e sem acentos" do
|
|
43
|
+
subject.razao_social = 'ó têxtú dève vìr SÉM ÀçÊnTÕ'
|
|
44
|
+
subject.razao_social.must_equal "O TEXTU DEVE VIR SEM ACENTO"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "#nome_fantasia" do
|
|
49
|
+
it "deve retornar a string em maiusculoo e sem acentos" do
|
|
50
|
+
subject.nome_fantasia = 'ó têxtú dève vìr SÉM ÀçÊnTÕ'
|
|
51
|
+
subject.nome_fantasia.must_equal "O TEXTU DEVE VIR SEM ACENTO"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Product::Base do
|
|
4
|
+
subject { FactoryGirl.build(:product_base) }
|
|
5
|
+
|
|
6
|
+
describe "Validations" do
|
|
7
|
+
it do
|
|
8
|
+
subject.certificate_pkcs12_path = nil
|
|
9
|
+
must validate_presence_of(:certificate)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it '#ssl_request? deve ser true' do
|
|
14
|
+
subject.ssl_request?.must_equal true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#gateway' do
|
|
18
|
+
context "Estados que usam o servidor SVRS" do
|
|
19
|
+
let(:env) { SecureRandom.hex(5) }
|
|
20
|
+
it 'AC 12 - Acre' do
|
|
21
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '12', env: env
|
|
22
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
23
|
+
subject.gateway.env.must_equal env
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'AL 27 - Alagoas' do
|
|
27
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '27', env: env
|
|
28
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
29
|
+
subject.gateway.env.must_equal env
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'AP 16 - Amapá ' do
|
|
33
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '16', env: env
|
|
34
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
35
|
+
subject.gateway.env.must_equal env
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'DF 53 - Distrito Federal' do
|
|
39
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '53', env: env
|
|
40
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
41
|
+
subject.gateway.env.must_equal env
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'ES 32 - Espírito Santo' do
|
|
45
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '32', env: env
|
|
46
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
47
|
+
subject.gateway.env.must_equal env
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'PB 25 - Paraíba' do
|
|
51
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '25', env: env
|
|
52
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
53
|
+
subject.gateway.env.must_equal env
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'RJ 33 - Rio de Janeiro' do
|
|
57
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '33', env: env
|
|
58
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
59
|
+
subject.gateway.env.must_equal env
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it 'RN 24 - Rio Grande do Norte' do
|
|
63
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '24', env: env
|
|
64
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
65
|
+
subject.gateway.env.must_equal env
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'RN 43 - Rio Grande do Sul' do
|
|
69
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '43', env: env
|
|
70
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
71
|
+
subject.gateway.env.must_equal env
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'RO 11 - Rondônia' do
|
|
75
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '11', env: env
|
|
76
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
77
|
+
subject.gateway.env.must_equal env
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it 'RR 14 - Roraima' do
|
|
81
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '14', env: env
|
|
82
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
83
|
+
subject.gateway.env.must_equal env
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'SC 42 - Santa Catarina' do
|
|
87
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '42', env: env
|
|
88
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
89
|
+
subject.gateway.env.must_equal env
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'SE 28 - Sergipe' do
|
|
93
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '28', env: env
|
|
94
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
95
|
+
subject.gateway.env.must_equal env
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'TO 17 - Tocantins' do
|
|
99
|
+
subject.assign_attributes ibge_code_of_issuer_uf: '17', env: env
|
|
100
|
+
subject.gateway.must_be_kind_of BrNfe::Product::Gateway::WebServiceSVRS
|
|
101
|
+
subject.gateway.env.must_equal env
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe 'Métodos que devem ser sobrescritos' do
|
|
107
|
+
it '#url_xmlns' do
|
|
108
|
+
assert_raises RuntimeError do
|
|
109
|
+
subject.url_xmlns
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
it '#gateway_xml_version' do
|
|
113
|
+
assert_raises RuntimeError do
|
|
114
|
+
subject.gateway_xml_version
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
describe '#xml_version - deve converter a versão em valor usável no XML' do
|
|
120
|
+
it "Para versão :v3_10" do
|
|
121
|
+
subject.stubs(:gateway_xml_version).returns(:v3_10)
|
|
122
|
+
subject.xml_version.must_equal '3.10'
|
|
123
|
+
end
|
|
124
|
+
it "Para versão :v2_00" do
|
|
125
|
+
subject.stubs(:gateway_xml_version).returns(:v2_00)
|
|
126
|
+
subject.xml_version.must_equal '2.00'
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
describe "#emitente" do
|
|
131
|
+
class OtherClassEmitente < BrNfe::ActiveModelBase
|
|
132
|
+
end
|
|
133
|
+
it "deve ter incluso o module HaveEmitente" do
|
|
134
|
+
subject.class.included_modules.must_include BrNfe::Association::HaveEmitente
|
|
135
|
+
end
|
|
136
|
+
it "o método #emitente_class deve ter por padrão a class BrNfe::Product::Emitente" do
|
|
137
|
+
subject.emitente.must_be_kind_of BrNfe::Product::Emitente
|
|
138
|
+
subject.send(:emitente_class).must_equal BrNfe::Product::Emitente
|
|
139
|
+
end
|
|
140
|
+
it "a class do emitente pode ser modificada através da configuração emitente_product_class" do
|
|
141
|
+
BrNfe.emitente_product_class = OtherClassEmitente
|
|
142
|
+
subject.emitente.must_be_kind_of OtherClassEmitente
|
|
143
|
+
subject.send(:emitente_class).must_equal OtherClassEmitente
|
|
144
|
+
|
|
145
|
+
# É necessário voltar a configuração original para não falhar outros testes
|
|
146
|
+
BrNfe.emitente_product_class = BrNfe::Product::Emitente
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Product::ConsultaStatusServico do
|
|
4
|
+
subject { FactoryGirl.build(:product_consulta_status_servico) }
|
|
5
|
+
let(:gateway) { FactoryGirl.build(:product_gateway_web_service_svrs) }
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
subject.stubs(:gateway).returns(gateway)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'o método #url_xmlns deve pegar o valor do método url_xmlns_status_servico do gateway ' do
|
|
12
|
+
gateway.expects(:url_xmlns_status_servico).returns('http://teste.url_xmlns_status_servico.com')
|
|
13
|
+
subject.url_xmlns.must_equal 'http://teste.url_xmlns_status_servico.com'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'o método #wsdl deve pegar o valor do método wsdl_status_servico do gateway ' do
|
|
17
|
+
gateway.expects(:wsdl_status_servico).returns('http://teste.wsdl_status_servico.com')
|
|
18
|
+
subject.wsdl.must_equal 'http://teste.wsdl_status_servico.com'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'o método #method_wsdl deve pegar o valor do método operation_status_servico do gateway ' do
|
|
22
|
+
gateway.expects(:operation_status_servico).returns(:operation_status_servico)
|
|
23
|
+
subject.method_wsdl.must_equal :operation_status_servico
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'o método #gateway_xml_version deve pegar o valor do método version_xml_status_servico do gateway ' do
|
|
27
|
+
gateway.expects(:version_xml_status_servico).returns(:v3_20)
|
|
28
|
+
subject.gateway_xml_version.must_equal :v3_20
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe '#xml_builder' do
|
|
32
|
+
it "deve renderizar para o xml consulta_status_servico" do
|
|
33
|
+
subject.expects(:render_xml).with('consulta_status_servico').returns('<ok>1</ok>')
|
|
34
|
+
subject.xml_builder.must_equal '<ok>1</ok>'
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "Validação do XML através do XSD" do
|
|
39
|
+
let(:schemas_dir) { BrNfe.root+'/lib/br_nfe/product/xml/v3_10/XSD' }
|
|
40
|
+
def validate_schema
|
|
41
|
+
subject.stubs(:certificate).returns(nil)
|
|
42
|
+
Dir.chdir(schemas_dir) do
|
|
43
|
+
schema = Nokogiri::XML::Schema(IO.read('consStatServ_v3.10.xsd'))
|
|
44
|
+
document = Nokogiri::XML(subject.xml_builder)
|
|
45
|
+
errors = schema.validate(document)
|
|
46
|
+
errors.must_be_empty
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
it "Deve ser válido em ambiente de produção" do
|
|
50
|
+
subject.env = :production
|
|
51
|
+
validate_schema
|
|
52
|
+
end
|
|
53
|
+
it "Deve ser válido em ambiente de homologação" do
|
|
54
|
+
subject.env = :test
|
|
55
|
+
validate_schema
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Product::Emitente do
|
|
4
|
+
subject { FactoryGirl.build(:product_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::Product::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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Product::Gateway::Base do
|
|
4
|
+
subject { FactoryGirl.build(:product_gateway_base) }
|
|
5
|
+
|
|
6
|
+
describe '#env_production?' do
|
|
7
|
+
it "se env for igual a :production deve ser true" do
|
|
8
|
+
subject.env = :production
|
|
9
|
+
subject.env_production?.must_equal true
|
|
10
|
+
end
|
|
11
|
+
it "deve ser false se env for diferente a :production" do
|
|
12
|
+
subject.env = :test
|
|
13
|
+
subject.env_production?.must_equal false
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Product::Gateway::WebServiceSVRS do
|
|
4
|
+
subject { FactoryGirl.build(:product_gateway_web_service_svrs) }
|
|
5
|
+
|
|
6
|
+
it "deve herdar da class base" do
|
|
7
|
+
subject.class.superclass.must_equal BrNfe::Product::Gateway::Base
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe 'STATUS SERVIÇO' do
|
|
11
|
+
describe '#wsdl_status_servico' do
|
|
12
|
+
it "para ambiente de produção" do
|
|
13
|
+
subject.env = :production
|
|
14
|
+
subject.wsdl_status_servico.must_equal 'https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?wsdl'
|
|
15
|
+
end
|
|
16
|
+
it "para ambiente de homologação" do
|
|
17
|
+
subject.env = :test
|
|
18
|
+
subject.wsdl_status_servico.must_equal 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?wsdl'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe '#operation_status_servico' do
|
|
23
|
+
it { subject.operation_status_servico.must_equal :nfe_status_servico_nf2 }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#version_xml_status_servico' do
|
|
27
|
+
it { subject.version_xml_status_servico.must_equal :v3_10 }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe '#url_xmlns_status_servico' do
|
|
31
|
+
it { subject.url_xmlns_status_servico.must_equal 'http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2' }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class HaveIntermediarioTest < BrNfe::ActiveModelBase
|
|
4
|
+
include BrNfe::Service::Association::HaveIntermediario
|
|
5
|
+
end
|
|
6
|
+
class NewClassIntermediario < BrNfe::Person
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe HaveIntermediarioTest do
|
|
10
|
+
subject { HaveIntermediarioTest.new(intermediario: intermediario) }
|
|
11
|
+
let(:intermediario) { BrNfe::Intermediario.new }
|
|
12
|
+
|
|
13
|
+
it 'deve_iniciar_o_intermediario_com_nil' do
|
|
14
|
+
subject.class.new.intermediario.must_be_nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'se_tiver_intermediario_posso_setalo_como_nil' do
|
|
18
|
+
subject.intermediario.wont_be_nil
|
|
19
|
+
subject.intermediario = nil
|
|
20
|
+
subject.intermediario.must_be_nil
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'deve_manter_o_objeto_intermediario_se_ja_tiver' do
|
|
24
|
+
subject.intermediario.must_equal intermediario
|
|
25
|
+
intermediario.cpf_cnpj = 'nova-www'
|
|
26
|
+
subject.intermediario.cpf_cnpj.must_equal 'nova-www'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it 'Se_setar_o_intermediario_com_outra_class_deve_ignorar' do
|
|
30
|
+
subject.intermediario = 7777
|
|
31
|
+
subject.intermediario.must_equal intermediario
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'posso_setar_o_intermediario_com_um_hash_com_os_parametros_do_intermediario' do
|
|
35
|
+
intermediario.assign_attributes(cpf_cnpj: '123456', razao_social: '123465')
|
|
36
|
+
subject.intermediario = {cpf_cnpj: '99999', razao_social: '654389'}
|
|
37
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
|
38
|
+
subject.intermediario.razao_social.must_equal '654389'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'ao_setar_um_intermediario_com_um_hash_e_nao_tiver_um_intermediario_deve_instanciar_um_com_os_parametros' do
|
|
42
|
+
subject.intermediario = nil
|
|
43
|
+
subject.intermediario = {cpf_cnpj: '99999', razao_social: '654389'}
|
|
44
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
|
45
|
+
subject.intermediario.razao_social.must_equal '654389'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'posso_setar_o_intermediario_com_um_bloco' do
|
|
49
|
+
intermediario.assign_attributes(cpf_cnpj: '123456', razao_social: '11111')
|
|
50
|
+
subject.intermediario do |address|
|
|
51
|
+
address.cpf_cnpj = '99999'
|
|
52
|
+
address.razao_social = '11111'
|
|
53
|
+
end
|
|
54
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
|
55
|
+
subject.intermediario.razao_social.must_equal '11111'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'ao_setar_um_intermediario_com_um_bloco_e_nao_tiver_um_intermediario_deve_instanciar_um_com_os_parametros' do
|
|
59
|
+
subject.intermediario = nil
|
|
60
|
+
subject.intermediario do |address|
|
|
61
|
+
address.cpf_cnpj = '99999'
|
|
62
|
+
address.razao_social = '11111'
|
|
63
|
+
end
|
|
64
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
|
65
|
+
subject.intermediario.razao_social.must_equal '11111'
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'posso_mudar_o_objeto_intermediario' do
|
|
69
|
+
novo_intermediario = FactoryGirl.build(:intermediario)
|
|
70
|
+
subject.intermediario = novo_intermediario
|
|
71
|
+
subject.intermediario.must_equal novo_intermediario
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'posso_modificar_a_class_do_intermediario' do
|
|
75
|
+
BrNfe.intermediario_service_class = NewClassIntermediario
|
|
76
|
+
novo_objeto = subject.class.new(intermediario: {cpf_cnpj: '123'})
|
|
77
|
+
novo_objeto.intermediario.class.must_equal NewClassIntermediario
|
|
78
|
+
BrNfe.intermediario_service_class = BrNfe::Service::Intermediario
|
|
79
|
+
end
|
|
80
|
+
end
|