br_nfe 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +5 -0
- data/.travis.yml +8 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +27 -3
- data/LICENSE +1 -1
- data/README.markdown +10 -12
- data/Rakefile +13 -0
- data/br_nfe.gemspec +18 -21
- data/lib/br_nfe/active_model_base.rb +7 -1
- data/lib/br_nfe/base.rb +175 -37
- data/lib/br_nfe/endereco.rb +7 -1
- data/lib/br_nfe/helper/have_rps.rb +1 -1
- data/lib/br_nfe/helper/values_ts/service_v1.rb +313 -0
- data/lib/br_nfe/response/service/build_response.rb +286 -0
- data/lib/br_nfe/response/service/default.rb +185 -0
- data/lib/br_nfe/{servico/response → response/service}/nota_fiscal.rb +11 -10
- data/lib/br_nfe/response/service/paths/base.rb +93 -0
- data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +22 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +25 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +25 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +25 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +31 -0
- data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +36 -0
- data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +127 -0
- data/lib/br_nfe/service/base.rb +59 -0
- data/lib/br_nfe/service/betha/base.rb +8 -0
- data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +39 -0
- data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +34 -0
- data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +32 -0
- data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +32 -0
- data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +30 -0
- data/lib/br_nfe/service/betha/v1/gateway.rb +21 -0
- data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +37 -0
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +19 -0
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +17 -0
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +17 -0
- data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +20 -0
- data/lib/br_nfe/service/concerns/rules/consulta_nfs_por_rps.rb +18 -0
- data/lib/br_nfe/service/concerns/rules/consulta_nfse.rb +29 -0
- data/lib/br_nfe/service/concerns/rules/recepcao_lote_rps.rb +50 -0
- data/lib/br_nfe/{servico → service}/intermediario.rb +1 -1
- data/lib/br_nfe/service/item.rb +70 -0
- data/lib/br_nfe/service/rps.rb +231 -0
- data/lib/br_nfe/service/sc/florianopolis/base.rb +25 -0
- data/lib/br_nfe/service/sc/florianopolis/cancellation.rb +30 -0
- data/lib/br_nfe/service/sc/florianopolis/emission_rps.rb +19 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/_address.xml.slim +21 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/_contact.xml.slim +3 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/_service_item.xml.slim +9 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/cancellation.xml.slim +6 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/inf_requisicao.xml.slim +55 -0
- data/lib/br_nfe/service/sc/gaspar/cancela_nfse.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_lote_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_nfs_por_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_nfse.rb +17 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado.rb +13 -0
- data/lib/br_nfe/service/thema/v1/base.rb +55 -0
- data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +48 -0
- data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +49 -0
- data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +48 -0
- data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +47 -0
- data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +46 -0
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +51 -0
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +30 -0
- data/lib/br_nfe/service/xml/v1/_tc_contato.xml.slim +7 -0
- data/lib/br_nfe/service/xml/v1/_tc_cpf_cnpj.xml.slim +5 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_construcao_civil.xml.slim +2 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_prestador.xml.slim +15 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_servico.xml.slim +14 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_tomador.xml.slim +15 -0
- data/lib/br_nfe/service/xml/v1/_tc_endereco.xml.slim +13 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_intermediario_servico.xml.slim +7 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +7 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_orgao_gerador.xml.slim +8 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_prestador.xml.slim +3 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_rps.xml.slim +16 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_tomador.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/_tc_inf_pedido_cancelamento.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/_tc_inf_rps.xml.slim +47 -0
- data/lib/br_nfe/service/xml/v1/_tc_lote_rps.xml.slim +9 -0
- data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/_tc_rps.xml.slim +8 -0
- data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +48 -0
- data/lib/br_nfe/service/xml/v1/servico_cancelar_nfse_envio.xml.slim +9 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_lote_rps_envio.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_envio.xml.slim +19 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_rps_envio.xml.slim +5 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_situacao_lote_rps_envio.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/servico_enviar_lote_rps_envio.xml.slim +9 -0
- data/lib/br_nfe/version.rb +2 -2
- data/lib/br_nfe/xml/_signed_info_sh1.xml.slim +9 -0
- data/lib/br_nfe/xml/signature_sh1.xml.slim +12 -0
- data/lib/br_nfe/xml/soap_env.xml.slim +3 -0
- data/lib/br_nfe.rb +72 -20
- data/test/br_nfe/base_test.rb +257 -108
- data/test/br_nfe/helper/have_intermediario_test.rb +2 -2
- data/test/br_nfe/helper/have_rps_test.rb +4 -4
- data/test/br_nfe/response/service/build_response_test.rb +377 -0
- data/test/br_nfe/response/service/default_test.rb +218 -0
- data/test/br_nfe/{servico/response → response/service}/nota_fiscal_test.rb +2 -2
- data/test/br_nfe/response/service/paths/base_test.rb +199 -0
- data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +25 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +34 -0
- data/test/br_nfe/response/service/paths/v1/tc_nfse_test.rb +122 -0
- data/test/br_nfe/service/base_test.rb +138 -0
- data/test/br_nfe/service/betha/base_test.rb +9 -0
- data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +60 -0
- data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +55 -0
- data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +55 -0
- data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +53 -0
- data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +49 -0
- data/test/br_nfe/service/betha/v1/gateway_test.rb +35 -0
- data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +84 -0
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +16 -0
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +16 -0
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +16 -0
- data/test/br_nfe/service/betha/v1/xsd/TiposNFe_v01.xsd +583 -0
- data/test/br_nfe/service/betha/v1/xsd/nfse_v01.xsd +652 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_cancelar_nfse_envio_v01.xsd +17 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_lote_rps_envio_v01.xsd +16 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_envio_v01.xsd +28 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_rps_envio_v01.xsd +16 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_situacao_lote_rps_envio_v01.xsd +16 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_enviar_lote_rps_envio_v01.xsd +17 -0
- data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema.xsd +308 -0
- data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema_v01.xsd +95 -0
- data/test/br_nfe/service/concerns/rules/cancelamento_nfs_test.rb +15 -0
- data/test/br_nfe/service/concerns/rules/consulta_nfs_por_rps_test.rb +36 -0
- data/test/br_nfe/service/concerns/rules/consulta_nfse_test.rb +42 -0
- data/test/br_nfe/{servico/base_test.rb → service/concerns/rules/recepcao_lote_rps_test.rb} +12 -4
- data/test/br_nfe/{servico → service}/intermediario_test.rb +1 -1
- data/test/br_nfe/service/item_test.rb +34 -0
- data/test/br_nfe/{servico → service}/rps_test.rb +191 -43
- data/test/br_nfe/service/sc/florianopolis/XSD/TiposNFSe_v2.0.xsd +863 -0
- data/test/br_nfe/service/sc/florianopolis/XSD/xmldsig-core-schema.xsd +309 -0
- data/test/br_nfe/service/sc/florianopolis/base_test.rb +20 -0
- data/test/br_nfe/service/sc/florianopolis/cancellation_test.rb +36 -0
- data/test/br_nfe/service/sc/florianopolis/emission_rps_test.rb +145 -0
- data/test/br_nfe/service/sc/gaspar/cancela_nfse_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/consulta_nfs_por_rps_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/consulta_nfse_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado_test.rb +22 -0
- data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_test.rb +22 -0
- data/test/br_nfe/service/thema/v1/base_test.rb +65 -0
- data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +56 -0
- data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +47 -0
- data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +50 -0
- data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +50 -0
- data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +47 -0
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +62 -0
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test_limitado.rb +50 -0
- data/test/br_nfe/service/thema/v1/xsd/nfse.xsd +656 -0
- data/test/br_nfe/service/thema/v1/xsd/xmldsig-core-schema20020212.xsd +318 -0
- data/test/br_nfe/service/xsd/v1/nfse.xsd +779 -0
- data/test/br_nfe/service/xsd/v1/xmldsig-core-schema20020212.xsd +316 -0
- data/test/cert.pfx +0 -0
- data/test/factories/base.rb +2 -0
- data/test/factories/destinatario.rb +3 -3
- data/test/factories/response/service/build_response.rb +5 -0
- data/test/factories/response/service/default.rb +10 -0
- data/test/factories/{servico/response → response/service}/nota_fiscal.rb +9 -9
- data/test/factories/service/base.rb +6 -0
- data/test/factories/service/betha/base.rb +4 -0
- data/test/factories/service/betha/v1/cancelamento_nfs.rb +9 -0
- data/test/factories/{servico → service}/betha/v1/consulta_lote_rps.rb +2 -2
- data/test/factories/{servico → service}/betha/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/betha/v1/consulta_nfse.rb +8 -0
- data/test/factories/{servico → service}/betha/v1/consulta_situacao_lote_rps.rb +2 -2
- data/test/factories/{servico → service}/betha/v1/gateway.rb +1 -1
- data/test/factories/service/betha/v1/recepcao_lote_rps.rb +8 -0
- data/test/factories/{servico → service}/intermediario.rb +2 -2
- data/test/factories/service/item.rb +12 -0
- data/test/factories/service/rps.rb +50 -0
- data/test/factories/service/sc/florianopolis/base.rb +5 -0
- data/test/factories/service/sc/florianopolis/cancellation.rb +7 -0
- data/test/factories/service/sc/florianopolis/emission_rps.rb +7 -0
- data/test/factories/service/sc/gaspar/cancela_nfse.rb +9 -0
- data/test/factories/service/sc/gaspar/consulta_lote_rps.rb +7 -0
- data/test/factories/service/sc/gaspar/consulta_nfs_por_rps.rb +6 -0
- data/test/factories/service/sc/gaspar/consulta_nfse.rb +8 -0
- data/test/factories/service/sc/gaspar/consulta_situacao_lote_rps.rb +6 -0
- data/test/factories/service/sc/gaspar/recepcao_lote_rps.rb +9 -0
- data/test/factories/service/sc/gaspar/recepcao_lote_rps_limitado.rb +9 -0
- data/test/factories/service/thema/v1/base.rb +7 -0
- data/test/factories/service/thema/v1/cancela_nfse.rb +9 -0
- data/test/factories/service/thema/v1/consulta_lote_rps.rb +7 -0
- data/test/factories/service/thema/v1/consulta_nfs_por_rps.rb +6 -0
- data/test/factories/service/thema/v1/consulta_nfse.rb +8 -0
- data/test/factories/service/thema/v1/consulta_situacao_lote_rps.rb +6 -0
- data/test/factories/service/thema/v1/recepcao_lote_rps.rb +9 -0
- data/test/factories/service/thema/v1/recepcao_lote_rps_limitado.rb +8 -0
- data/test/test_helper.rb +42 -0
- metadata +338 -121
- data/lib/br_nfe/servico/base.rb +0 -35
- data/lib/br_nfe/servico/betha/base.rb +0 -85
- data/lib/br_nfe/servico/betha/build_response.rb +0 -141
- data/lib/br_nfe/servico/betha/v1/build_response.rb +0 -121
- data/lib/br_nfe/servico/betha/v1/cancelamento_nfs.rb +0 -52
- data/lib/br_nfe/servico/betha/v1/consulta_lote_rps.rb +0 -33
- data/lib/br_nfe/servico/betha/v1/consulta_nfs_por_rps.rb +0 -37
- data/lib/br_nfe/servico/betha/v1/consulta_nfse.rb +0 -51
- data/lib/br_nfe/servico/betha/v1/consulta_situacao_lote_rps.rb +0 -18
- data/lib/br_nfe/servico/betha/v1/gateway.rb +0 -125
- data/lib/br_nfe/servico/betha/v1/recepcao_lote_rps.rb +0 -97
- data/lib/br_nfe/servico/betha/v2/build_response.rb +0 -159
- data/lib/br_nfe/servico/betha/v2/cancelamento_nfs.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/consulta_lote_rps.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/consulta_nfse_por_rps.rb +0 -27
- data/lib/br_nfe/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/gateway.rb +0 -230
- data/lib/br_nfe/servico/betha/v2/gera_nfse.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/recepcao_lote_rps.rb +0 -52
- data/lib/br_nfe/servico/betha/v2/substituicao_nfse.rb +0 -43
- data/lib/br_nfe/servico/response/default.rb +0 -34
- data/lib/br_nfe/servico/rps.rb +0 -108
- data/test/br_nfe/servico/betha/base_test.rb +0 -135
- data/test/br_nfe/servico/betha/v1/build_response_test.rb +0 -557
- data/test/br_nfe/servico/betha/v1/cancelamento_nfs_test.rb +0 -72
- data/test/br_nfe/servico/betha/v1/consulta_lote_rps_test.rb +0 -46
- data/test/br_nfe/servico/betha/v1/consulta_nfs_por_rps_test.rb +0 -68
- data/test/br_nfe/servico/betha/v1/consulta_nfse_test.rb +0 -74
- data/test/br_nfe/servico/betha/v1/consulta_situacao_lote_rps_test.rb +0 -27
- data/test/br_nfe/servico/betha/v1/gateway_test.rb +0 -151
- data/test/br_nfe/servico/betha/v1/recepcao_lote_rps_test.rb +0 -249
- data/test/br_nfe/servico/betha/v2/cancelamento_nfs_test.rb +0 -44
- data/test/br_nfe/servico/betha/v2/consulta_lote_rps_test.rb +0 -38
- data/test/br_nfe/servico/betha/v2/consulta_nfse_por_rps_test.rb +0 -36
- data/test/br_nfe/servico/betha/v2/envio_lote_rps_sincrono_test.rb +0 -51
- data/test/br_nfe/servico/betha/v2/gateway_test.rb +0 -372
- data/test/br_nfe/servico/betha/v2/gera_nfse_test.rb +0 -62
- data/test/br_nfe/servico/betha/v2/recepcao_lote_rps_test.rb +0 -108
- data/test/br_nfe/servico/betha/v2/substituicao_nfse_test.rb +0 -84
- data/test/br_nfe/servico/response/default_test.rb +0 -54
- data/test/factories/servico/base.rb +0 -5
- data/test/factories/servico/betha/base.rb +0 -5
- data/test/factories/servico/betha/v1/build_response.rb +0 -6
- data/test/factories/servico/betha/v1/cancelamento_nfs.rb +0 -7
- data/test/factories/servico/betha/v1/consulta_nfse.rb +0 -8
- data/test/factories/servico/betha/v1/recepcao_lote_rps.rb +0 -6
- data/test/factories/servico/betha/v2/cancelamento_nfs.rb +0 -7
- data/test/factories/servico/betha/v2/consulta_lote_rps.rb +0 -6
- data/test/factories/servico/betha/v2/consulta_nfse_por_rps.rb +0 -6
- data/test/factories/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -5
- data/test/factories/servico/betha/v2/gateway.rb +0 -5
- data/test/factories/servico/betha/v2/gera_nfse.rb +0 -6
- data/test/factories/servico/betha/v2/recepcao_lote_rps.rb +0 -5
- data/test/factories/servico/betha/v2/substituicao_nfse.rb +0 -8
- data/test/factories/servico/response/default.rb +0 -10
- data/test/factories/servico/rps.rb +0 -44
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RuleCancelamentoNfsTest < BrNfe::Service::Base
|
4
|
+
include BrNfe::Service::Concerns::Rules::CancelamentoNfs
|
5
|
+
end
|
6
|
+
|
7
|
+
describe BrNfe::Service::Concerns::Rules::CancelamentoNfs do
|
8
|
+
subject { RuleCancelamentoNfsTest.new(nfe_number: 1254, codigo_cancelamento: 1, emitente: emitente) }
|
9
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
10
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
11
|
+
|
12
|
+
it { must validate_presence_of(:nfe_number) }
|
13
|
+
it { must validate_presence_of(:codigo_cancelamento) }
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'br_nfe/helper/have_rps_test'
|
3
|
+
|
4
|
+
|
5
|
+
describe BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps do
|
6
|
+
class RuleConsultaNfsPorRpsTest < BrNfe::Service::Base
|
7
|
+
include BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps
|
8
|
+
end
|
9
|
+
|
10
|
+
subject { RuleConsultaNfsPorRpsTest.new(rps: rps, emitente: emitente) }
|
11
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
12
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
13
|
+
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
14
|
+
|
15
|
+
it "deve ter o o helper HaveRps incluido" do
|
16
|
+
subject.class.included_modules.must_include BrNfe::Helper::HaveRps
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "rps" do
|
20
|
+
include BrNfeTest::HelperTest::HaveRpsTest
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#validate_rps" do
|
24
|
+
it "se o RPS for inválido deve add os erros do RPS no registro" do
|
25
|
+
rps.stubs(:errors).returns(stub(full_messages: ["Erro rps"]))
|
26
|
+
rps.stubs(:valid?).returns(false)
|
27
|
+
subject.valid?.must_equal false
|
28
|
+
subject.errors.full_messages.must_include( "Rps Erro rps" )
|
29
|
+
end
|
30
|
+
it "se o RPS for válido o registro também será valido" do
|
31
|
+
rps.stubs(:valid?).returns(true)
|
32
|
+
subject.valid?.must_equal true
|
33
|
+
subject.errors.must_be_empty
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RuleConsultaNfseTest < BrNfe::Service::Base
|
4
|
+
include BrNfe::Service::Concerns::Rules::ConsultaNfse
|
5
|
+
end
|
6
|
+
|
7
|
+
describe BrNfe::Service::Concerns::Rules::ConsultaNfse do
|
8
|
+
subject { RuleConsultaNfseTest.new(nfe_number: '554', start_date: 1.month.ago, end_date: Time.now, emitente: emitente) }
|
9
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
10
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
11
|
+
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
12
|
+
|
13
|
+
it "deve ter o o helper HaveDestinatario incluido" do
|
14
|
+
subject.class.included_modules.must_include BrNfe::Helper::HaveDestinatario
|
15
|
+
end
|
16
|
+
|
17
|
+
it "deve ter o o helper HaveIntermediario incluido" do
|
18
|
+
subject.class.included_modules.must_include BrNfe::Helper::HaveIntermediario
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#start_date" do
|
22
|
+
it "o get do start_date deve retornar uma data no formato YYYY-MM-DD" do
|
23
|
+
subject.start_date = '20/05/2010'
|
24
|
+
subject.start_date.must_equal '2010-05-20'
|
25
|
+
end
|
26
|
+
it "se start_date for nil o get deve retornar em branco" do
|
27
|
+
subject.start_date = nil
|
28
|
+
subject.start_date.must_equal ''
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#end_date" do
|
33
|
+
it "o get do end_date deve retornar uma data no formato YYYY-MM-DD" do
|
34
|
+
subject.end_date = '20/08/2015'
|
35
|
+
subject.end_date.must_equal '2015-08-20'
|
36
|
+
end
|
37
|
+
it "se end_date for nil o get deve retornar em branco" do
|
38
|
+
subject.end_date = nil
|
39
|
+
subject.end_date.must_equal ''
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -1,9 +1,17 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
class RuleRecepcaoLoteRpsTest < BrNfe::Service::Base
|
4
|
+
include BrNfe::Service::Concerns::Rules::RecepcaoLoteRps
|
5
|
+
end
|
6
|
+
|
7
|
+
describe BrNfe::Service::Concerns::Rules::RecepcaoLoteRps do
|
8
|
+
subject { RuleRecepcaoLoteRpsTest.new(numero_lote_rps: 545, operacao: '1', emitente: emitente) }
|
9
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
10
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
5
11
|
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
6
|
-
|
12
|
+
|
13
|
+
it { must validate_presence_of(:numero_lote_rps) }
|
14
|
+
|
7
15
|
describe "#lote_rps" do
|
8
16
|
it "deve inicializar como um vetor vazio" do
|
9
17
|
subject.class.new.lote_rps.must_equal []
|
@@ -25,7 +33,7 @@ describe BrNfe::Servico::Base do
|
|
25
33
|
it "se não houver nenhum rps, deve add um erro" do
|
26
34
|
subject.lote_rps = []
|
27
35
|
subject.errors.full_messages.must_equal( [] )
|
28
|
-
subject.
|
36
|
+
subject.valid?.must_equal false
|
29
37
|
subject.errors.full_messages.must_equal( ["Deve conter ao menos 1 RPS"] )
|
30
38
|
end
|
31
39
|
context "deve validar o rps setando a opcao validar_recepcao_rps" do
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrNfe::Service::Item do
|
4
|
+
subject { FactoryGirl.build(:service_item) }
|
5
|
+
|
6
|
+
describe "#default_values" do
|
7
|
+
context "#quantity" do
|
8
|
+
it "valor padrão deve ser 1" do
|
9
|
+
subject.class.new.quantity.must_equal 1
|
10
|
+
end
|
11
|
+
it "posso modificar o valor" do
|
12
|
+
subject.class.new(quantity: 50.88).quantity.must_equal 50.88
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#total_value" do
|
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.total_value = nil
|
20
|
+
subject.assign_attributes(quantity: 3.5, unit_value: 10.0)
|
21
|
+
subject.total_value.must_equal 35.0
|
22
|
+
end
|
23
|
+
it "se setar um valor em total_value não deve multiplicar a quantidade com o valor unitário" do
|
24
|
+
subject.total_value = 66.0
|
25
|
+
subject.assign_attributes(quantity: 3.5, unit_value: 10.0)
|
26
|
+
subject.total_value.must_equal 66.0
|
27
|
+
end
|
28
|
+
it "se quantidade ou valor unitário forem nil deve retornar zero" do
|
29
|
+
subject.total_value = nil
|
30
|
+
subject.assign_attributes(quantity: nil, unit_value: nil)
|
31
|
+
subject.total_value.must_equal 0.0
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,37 +1,45 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
describe BrNfe::
|
3
|
+
describe BrNfe::Service::Rps do
|
4
4
|
subject { FactoryGirl.build(:br_nfe_rps) }
|
5
5
|
let(:destinatario) { FactoryGirl.build(:destinatario) }
|
6
6
|
let(:intermediario) { FactoryGirl.build(:intermediario) }
|
7
7
|
let(:condicao_pagamento) { FactoryGirl.build(:condicao_pagamento) }
|
8
|
+
let(:item_1) { FactoryGirl.build(:service_item) }
|
9
|
+
let(:item_2) { FactoryGirl.build(:service_item) }
|
8
10
|
|
9
11
|
describe "validations" do
|
10
12
|
it { must validate_presence_of(:numero) }
|
11
13
|
it { must validate_presence_of(:serie) }
|
12
14
|
it { must validate_presence_of(:tipo) }
|
15
|
+
context "Quando #validate_rps? for false os valores de RPS não devem ser obrigatórios" do
|
16
|
+
before { subject.stubs(:validate_rps?).returns(false) }
|
17
|
+
it { wont validate_presence_of(:numero) }
|
18
|
+
it { wont validate_presence_of(:serie) }
|
19
|
+
it { wont validate_presence_of(:tipo) }
|
20
|
+
end
|
13
21
|
|
14
22
|
describe "option validar_recepcao_rps" do
|
15
23
|
context "quando for true" do
|
16
24
|
before { subject.validar_recepcao_rps = true }
|
17
25
|
it { must validate_presence_of(:data_emissao) }
|
18
26
|
it { must validate_presence_of(:item_lista_servico) }
|
19
|
-
it { must validate_presence_of(:
|
27
|
+
it { must validate_presence_of(:description) }
|
20
28
|
it { must validate_presence_of(:codigo_municipio) }
|
21
|
-
it { must
|
22
|
-
it { must
|
29
|
+
it { must validate_numericality_of(:total_services).is_greater_than(0) }
|
30
|
+
it { must validate_numericality_of(:base_calculation).is_greater_than(0) }
|
23
31
|
|
24
|
-
it { must validate_numericality_of(:
|
25
|
-
it { must validate_numericality_of(:
|
32
|
+
it { must validate_numericality_of(:total_services) }
|
33
|
+
it { must validate_numericality_of(:deductions) }
|
26
34
|
it { must validate_numericality_of(:valor_pis) }
|
27
35
|
it { must validate_numericality_of(:valor_cofins) }
|
28
36
|
it { must validate_numericality_of(:valor_inss) }
|
29
37
|
it { must validate_numericality_of(:valor_ir) }
|
30
38
|
it { must validate_numericality_of(:valor_csll) }
|
31
39
|
it { must validate_numericality_of(:outras_retencoes) }
|
32
|
-
it { must validate_numericality_of(:
|
33
|
-
it { must validate_numericality_of(:
|
34
|
-
it { must validate_numericality_of(:
|
40
|
+
it { must validate_numericality_of(:total_iss) }
|
41
|
+
it { must validate_numericality_of(:iss_tax_rate) }
|
42
|
+
it { must validate_numericality_of(:base_calculation) }
|
35
43
|
it { must validate_numericality_of(:desconto_incondicionado) }
|
36
44
|
it { must validate_numericality_of(:desconto_condicionado) }
|
37
45
|
|
@@ -45,16 +53,16 @@ describe BrNfe::Servico::Rps do
|
|
45
53
|
subject.valid?
|
46
54
|
end
|
47
55
|
|
48
|
-
describe "option
|
56
|
+
describe "option iss_retained?" do
|
49
57
|
context "quando for true" do
|
50
|
-
before { subject.stubs(:
|
51
|
-
it { wont validate_presence_of(:
|
52
|
-
it { wont validate_presence_of(:
|
58
|
+
before { subject.stubs(:iss_retained?).returns(true) }
|
59
|
+
it { wont validate_presence_of(:total_iss) }
|
60
|
+
it { wont validate_presence_of(:iss_tax_rate) }
|
53
61
|
end
|
54
62
|
context "quando for false" do
|
55
|
-
before { subject.stubs(:
|
56
|
-
it { must validate_presence_of(:
|
57
|
-
it { must validate_presence_of(:
|
63
|
+
before { subject.stubs(:iss_retained?).returns(false) }
|
64
|
+
it { must validate_presence_of(:total_iss) }
|
65
|
+
it { must validate_presence_of(:iss_tax_rate) }
|
58
66
|
end
|
59
67
|
end
|
60
68
|
end
|
@@ -63,22 +71,22 @@ describe BrNfe::Servico::Rps do
|
|
63
71
|
before { subject.validar_recepcao_rps = false }
|
64
72
|
it { wont validate_presence_of(:data_emissao) }
|
65
73
|
it { wont validate_presence_of(:item_lista_servico) }
|
66
|
-
it { wont validate_presence_of(:
|
74
|
+
it { wont validate_presence_of(:description) }
|
67
75
|
it { wont validate_presence_of(:codigo_municipio) }
|
68
|
-
it { wont
|
69
|
-
it { wont
|
76
|
+
it { wont validate_numericality_of(:total_services).is_greater_than(0) }
|
77
|
+
it { wont validate_numericality_of(:base_calculation).is_greater_than(0) }
|
70
78
|
|
71
|
-
it { wont validate_numericality_of(:
|
72
|
-
it { wont validate_numericality_of(:
|
79
|
+
it { wont validate_numericality_of(:total_services) }
|
80
|
+
it { wont validate_numericality_of(:deductions) }
|
73
81
|
it { wont validate_numericality_of(:valor_pis) }
|
74
82
|
it { wont validate_numericality_of(:valor_cofins) }
|
75
83
|
it { wont validate_numericality_of(:valor_inss) }
|
76
84
|
it { wont validate_numericality_of(:valor_ir) }
|
77
85
|
it { wont validate_numericality_of(:valor_csll) }
|
78
86
|
it { wont validate_numericality_of(:outras_retencoes) }
|
79
|
-
it { wont validate_numericality_of(:
|
80
|
-
it { wont validate_numericality_of(:
|
81
|
-
it { wont validate_numericality_of(:
|
87
|
+
it { wont validate_numericality_of(:total_iss) }
|
88
|
+
it { wont validate_numericality_of(:iss_tax_rate) }
|
89
|
+
it { wont validate_numericality_of(:base_calculation) }
|
82
90
|
it { wont validate_numericality_of(:desconto_incondicionado) }
|
83
91
|
it { wont validate_numericality_of(:desconto_condicionado) }
|
84
92
|
|
@@ -92,16 +100,16 @@ describe BrNfe::Servico::Rps do
|
|
92
100
|
subject.valid?
|
93
101
|
end
|
94
102
|
|
95
|
-
describe "option
|
103
|
+
describe "option iss_retained?" do
|
96
104
|
context "quando for true" do
|
97
|
-
before { subject.stubs(:
|
98
|
-
it { wont validate_presence_of(:
|
99
|
-
it { wont validate_presence_of(:
|
105
|
+
before { subject.stubs(:iss_retained?).returns(true) }
|
106
|
+
it { wont validate_presence_of(:total_iss) }
|
107
|
+
it { wont validate_presence_of(:iss_tax_rate) }
|
100
108
|
end
|
101
109
|
context "quando for false" do
|
102
|
-
before { subject.stubs(:
|
103
|
-
it { wont validate_presence_of(:
|
104
|
-
it { wont validate_presence_of(:
|
110
|
+
before { subject.stubs(:iss_retained?).returns(false) }
|
111
|
+
it { wont validate_presence_of(:total_iss) }
|
112
|
+
it { wont validate_presence_of(:iss_tax_rate) }
|
105
113
|
end
|
106
114
|
end
|
107
115
|
end
|
@@ -109,31 +117,31 @@ describe BrNfe::Servico::Rps do
|
|
109
117
|
|
110
118
|
end
|
111
119
|
|
112
|
-
describe "#
|
120
|
+
describe "#replace_invoice?" do
|
113
121
|
before do
|
114
122
|
subject.assign_attributes(numero_substituicao: '1', serie_substituicao: '2', tipo_substituicao: '1')
|
115
123
|
end
|
116
124
|
it "true se numero_substituicao, serie_substituicao e tipo_substituicao tiver algum valor" do
|
117
|
-
subject.
|
125
|
+
subject.replace_invoice?.must_equal true
|
118
126
|
end
|
119
127
|
it "false se numero_substituicao não tiver valor" do
|
120
128
|
subject.numero_substituicao = ''
|
121
|
-
subject.
|
129
|
+
subject.replace_invoice?.must_equal false
|
122
130
|
end
|
123
131
|
it "false se serie_substituicao não tiver valor" do
|
124
132
|
subject.serie_substituicao = ''
|
125
|
-
subject.
|
133
|
+
subject.replace_invoice?.must_equal false
|
126
134
|
end
|
127
135
|
it "false se tipo_substituicao não tiver valor" do
|
128
136
|
subject.tipo_substituicao = ''
|
129
|
-
subject.
|
137
|
+
subject.replace_invoice?.must_equal false
|
130
138
|
end
|
131
139
|
end
|
132
140
|
|
133
141
|
|
134
142
|
describe "#destinatario" do
|
135
143
|
it "sempre deve retornar um objeto BrNfe::Destinatario" do
|
136
|
-
novo = BrNfe::
|
144
|
+
novo = BrNfe::Service::Rps.new
|
137
145
|
novo.destinatario.class.must_equal BrNfe::Destinatario
|
138
146
|
novo.destinatario = nil
|
139
147
|
novo.destinatario.class.must_equal BrNfe::Destinatario
|
@@ -144,7 +152,7 @@ describe BrNfe::Servico::Rps do
|
|
144
152
|
it "a classe do destinatario deve segir a configuração de BrNfe.destinatario_class" do
|
145
153
|
BrNfe.destinatario_class = BrNfe::Emitente
|
146
154
|
|
147
|
-
novo = BrNfe::
|
155
|
+
novo = BrNfe::Service::Rps.new
|
148
156
|
novo.destinatario.class.must_equal BrNfe::Emitente
|
149
157
|
novo.destinatario = nil
|
150
158
|
novo.destinatario.class.must_equal BrNfe::Emitente
|
@@ -189,7 +197,7 @@ describe BrNfe::Servico::Rps do
|
|
189
197
|
|
190
198
|
describe "#intermediario" do
|
191
199
|
it "valor padrão é nil" do
|
192
|
-
novo = BrNfe::
|
200
|
+
novo = BrNfe::Service::Rps.new
|
193
201
|
novo.intermediario.must_be_nil
|
194
202
|
novo.intermediario = 'outro valor qualquer'
|
195
203
|
novo.intermediario.must_be_nil
|
@@ -198,7 +206,7 @@ describe BrNfe::Servico::Rps do
|
|
198
206
|
it "a classe do intermediario deve segir a configuração de BrNfe.intermediario_class" do
|
199
207
|
BrNfe.intermediario_class = BrNfe::Emitente
|
200
208
|
|
201
|
-
novo = BrNfe::
|
209
|
+
novo = BrNfe::Service::Rps.new(intermediario: BrNfe::Emitente.new)
|
202
210
|
novo.intermediario.class.must_equal BrNfe::Emitente
|
203
211
|
|
204
212
|
novo.intermediario = nil
|
@@ -207,7 +215,7 @@ describe BrNfe::Servico::Rps do
|
|
207
215
|
novo.intermediario = 'outro valor qualquer'
|
208
216
|
novo.intermediario.must_be_nil
|
209
217
|
|
210
|
-
BrNfe.intermediario_class = BrNfe::
|
218
|
+
BrNfe.intermediario_class = BrNfe::Service::Intermediario
|
211
219
|
end
|
212
220
|
|
213
221
|
it "atributos pode ser atribuidos em forma de bloco" do
|
@@ -259,7 +267,7 @@ describe BrNfe::Servico::Rps do
|
|
259
267
|
|
260
268
|
describe "#condicao_pagamento" do
|
261
269
|
it "valor padrão é nil" do
|
262
|
-
novo = BrNfe::
|
270
|
+
novo = BrNfe::Service::Rps.new
|
263
271
|
novo.condicao_pagamento.must_be_nil
|
264
272
|
novo.condicao_pagamento = 'outro valor qualquer'
|
265
273
|
novo.condicao_pagamento.must_be_nil
|
@@ -268,7 +276,7 @@ describe BrNfe::Servico::Rps do
|
|
268
276
|
it "a classe do condicao_pagamento deve segir a configuração de BrNfe.condicao_pagamento_class" do
|
269
277
|
BrNfe.condicao_pagamento_class = BrNfe::Emitente
|
270
278
|
|
271
|
-
novo = BrNfe::
|
279
|
+
novo = BrNfe::Service::Rps.new(condicao_pagamento: BrNfe::Emitente.new)
|
272
280
|
novo.condicao_pagamento.class.must_equal BrNfe::Emitente
|
273
281
|
|
274
282
|
novo.condicao_pagamento = nil
|
@@ -352,4 +360,144 @@ describe BrNfe::Servico::Rps do
|
|
352
360
|
end
|
353
361
|
end
|
354
362
|
|
363
|
+
describe "#items" do
|
364
|
+
it "deve inicializar como um vetor vazio" do
|
365
|
+
subject.class.new.items.must_equal []
|
366
|
+
end
|
367
|
+
|
368
|
+
it "posso utilizar o << para adicionar valores" do
|
369
|
+
subject.items << item_1
|
370
|
+
subject.items << item_2
|
371
|
+
subject.items.must_equal [item_1,item_2]
|
372
|
+
end
|
373
|
+
|
374
|
+
it "sempre retorna um array" do
|
375
|
+
subject.items = item_2
|
376
|
+
subject.items.must_equal [item_2]
|
377
|
+
end
|
378
|
+
|
379
|
+
it "não permite adicionar outro objeto a não ser o definido pela class BrNfe.service_item_class" do
|
380
|
+
class CustomClass
|
381
|
+
end
|
382
|
+
c_class_1 = CustomClass.new
|
383
|
+
c_class_2 = CustomClass.new
|
384
|
+
BrNfe.service_item_class = CustomClass
|
385
|
+
|
386
|
+
subject.items << c_class_1
|
387
|
+
subject.items << c_class_2
|
388
|
+
subject.items << item_1
|
389
|
+
subject.items.must_equal [c_class_1, c_class_2]
|
390
|
+
|
391
|
+
subject.items = 'item_2'
|
392
|
+
subject.items.must_equal []
|
393
|
+
|
394
|
+
BrNfe.service_item_class = BrNfe::Service::Item
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
398
|
+
describe "#total_services" do
|
399
|
+
it "se não setar valor em total_services deve somar o total_value de todos os items" do
|
400
|
+
subject.total_services = nil
|
401
|
+
item_1.total_value = 55.70
|
402
|
+
item_2.total_value = 40.35
|
403
|
+
subject.items = [item_1, item_2]
|
404
|
+
|
405
|
+
subject.total_services.must_equal 96.05
|
406
|
+
end
|
407
|
+
it "se não houver itens e nem um valor setado deve retornar zero" do
|
408
|
+
subject.total_services = nil
|
409
|
+
subject.items = []
|
410
|
+
|
411
|
+
subject.total_services.must_equal 0.0
|
412
|
+
end
|
413
|
+
it "se setar um valor deve retornar esse valor e não pode somar dos itens" do
|
414
|
+
subject.total_services = 47.0
|
415
|
+
item_1.total_value = 55.70
|
416
|
+
item_2.total_value = 40.35
|
417
|
+
subject.items = [item_1, item_2]
|
418
|
+
|
419
|
+
subject.total_services.must_equal 47.0
|
420
|
+
end
|
421
|
+
end
|
422
|
+
|
423
|
+
describe "#base_calculation" do
|
424
|
+
it "se não setar valor em base_calculation deve subtratir o total_services com deductions" do
|
425
|
+
subject.assign_attributes({
|
426
|
+
base_calculation: nil,
|
427
|
+
total_services: 100.0,
|
428
|
+
deductions: 4.500000555
|
429
|
+
})
|
430
|
+
|
431
|
+
subject.base_calculation.must_equal 95.5
|
432
|
+
end
|
433
|
+
it "deve retornar zero se não houver valor em base_calculation e nem em total_services ou deductions" do
|
434
|
+
subject.assign_attributes({
|
435
|
+
base_calculation: nil,
|
436
|
+
total_services: nil,
|
437
|
+
deductions: nil
|
438
|
+
})
|
439
|
+
|
440
|
+
subject.base_calculation.must_equal 0.0
|
441
|
+
end
|
442
|
+
it "se setar um valor deve retornar esse valor e não pode celcular o total_services subtraindo as deductions" do
|
443
|
+
subject.assign_attributes({
|
444
|
+
base_calculation: 200,
|
445
|
+
total_services: 100,
|
446
|
+
deductions: 50
|
447
|
+
})
|
448
|
+
|
449
|
+
subject.base_calculation.must_equal 200
|
450
|
+
end
|
451
|
+
end
|
452
|
+
|
453
|
+
describe "#iss_tax_rate" do
|
454
|
+
it "deve pegar o valor de iss_tax_rate do primeiro item se não houver valor setado em iss_tax_rate do RPS" do
|
455
|
+
subject.iss_tax_rate = nil
|
456
|
+
item_1.iss_tax_rate = 0.3
|
457
|
+
item_2.iss_tax_rate = 0.4
|
458
|
+
subject.items = [item_2, item_1]
|
459
|
+
|
460
|
+
subject.iss_tax_rate.must_equal 0.4
|
461
|
+
end
|
462
|
+
it "Deve retornar nil se não houver itens e nem um valor setado" do
|
463
|
+
subject.iss_tax_rate = nil
|
464
|
+
subject.items = []
|
465
|
+
|
466
|
+
subject.iss_tax_rate.must_be_nil
|
467
|
+
end
|
468
|
+
it "se setar um valor deve retornar esse valor e não pode pegar dos itens" do
|
469
|
+
subject.iss_tax_rate = 0.4
|
470
|
+
item_1.total_value = 0.1
|
471
|
+
item_2.total_value = 0.2
|
472
|
+
subject.items = [item_1, item_2]
|
473
|
+
|
474
|
+
subject.iss_tax_rate.must_equal 0.4
|
475
|
+
end
|
476
|
+
end
|
477
|
+
|
478
|
+
describe "#cnae_code" do
|
479
|
+
it "deve pegar o valor de cnae_code do primeiro item se não houver valor setado em cnae_code do RPS" do
|
480
|
+
subject.cnae_code = nil
|
481
|
+
item_1.cnae_code = '11111'
|
482
|
+
item_2.cnae_code = '22222'
|
483
|
+
subject.items = [item_2, item_1]
|
484
|
+
|
485
|
+
subject.cnae_code.must_equal '22222'
|
486
|
+
end
|
487
|
+
it "Deve retornar nil se não houver itens e nem um valor setado" do
|
488
|
+
subject.cnae_code = nil
|
489
|
+
subject.items = []
|
490
|
+
|
491
|
+
subject.cnae_code.must_be_nil
|
492
|
+
end
|
493
|
+
it "se setar um valor deve retornar esse valor e não pode pegar dos itens" do
|
494
|
+
subject.cnae_code = '2'
|
495
|
+
item_1.total_value = '3'
|
496
|
+
item_2.total_value = '4'
|
497
|
+
subject.items = [item_1, item_2]
|
498
|
+
|
499
|
+
subject.cnae_code.must_equal '2'
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
355
503
|
end
|