br_nfe 1.1.0 → 2.0.0

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.
Files changed (257) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +16 -0
  5. data/Gemfile.lock +27 -3
  6. data/LICENSE +1 -1
  7. data/README.markdown +10 -12
  8. data/Rakefile +13 -0
  9. data/br_nfe.gemspec +18 -21
  10. data/lib/br_nfe/active_model_base.rb +7 -1
  11. data/lib/br_nfe/base.rb +175 -37
  12. data/lib/br_nfe/endereco.rb +7 -1
  13. data/lib/br_nfe/helper/have_rps.rb +1 -1
  14. data/lib/br_nfe/helper/values_ts/service_v1.rb +313 -0
  15. data/lib/br_nfe/response/service/build_response.rb +286 -0
  16. data/lib/br_nfe/response/service/default.rb +185 -0
  17. data/lib/br_nfe/{servico/response → response/service}/nota_fiscal.rb +11 -10
  18. data/lib/br_nfe/response/service/paths/base.rb +93 -0
  19. data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +22 -0
  20. data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +25 -0
  21. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +25 -0
  22. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +25 -0
  23. data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +31 -0
  24. data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +36 -0
  25. data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +127 -0
  26. data/lib/br_nfe/service/base.rb +59 -0
  27. data/lib/br_nfe/service/betha/base.rb +8 -0
  28. data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +39 -0
  29. data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +34 -0
  30. data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +32 -0
  31. data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +32 -0
  32. data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +30 -0
  33. data/lib/br_nfe/service/betha/v1/gateway.rb +21 -0
  34. data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +37 -0
  35. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +19 -0
  36. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +17 -0
  37. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +17 -0
  38. data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +20 -0
  39. data/lib/br_nfe/service/concerns/rules/consulta_nfs_por_rps.rb +18 -0
  40. data/lib/br_nfe/service/concerns/rules/consulta_nfse.rb +29 -0
  41. data/lib/br_nfe/service/concerns/rules/recepcao_lote_rps.rb +50 -0
  42. data/lib/br_nfe/{servico → service}/intermediario.rb +1 -1
  43. data/lib/br_nfe/service/item.rb +70 -0
  44. data/lib/br_nfe/service/rps.rb +231 -0
  45. data/lib/br_nfe/service/sc/florianopolis/base.rb +25 -0
  46. data/lib/br_nfe/service/sc/florianopolis/cancellation.rb +30 -0
  47. data/lib/br_nfe/service/sc/florianopolis/emission_rps.rb +19 -0
  48. data/lib/br_nfe/service/sc/florianopolis/xml/_address.xml.slim +21 -0
  49. data/lib/br_nfe/service/sc/florianopolis/xml/_contact.xml.slim +3 -0
  50. data/lib/br_nfe/service/sc/florianopolis/xml/_service_item.xml.slim +9 -0
  51. data/lib/br_nfe/service/sc/florianopolis/xml/cancellation.xml.slim +6 -0
  52. data/lib/br_nfe/service/sc/florianopolis/xml/inf_requisicao.xml.slim +55 -0
  53. data/lib/br_nfe/service/sc/gaspar/cancela_nfse.rb +13 -0
  54. data/lib/br_nfe/service/sc/gaspar/consulta_lote_rps.rb +13 -0
  55. data/lib/br_nfe/service/sc/gaspar/consulta_nfs_por_rps.rb +13 -0
  56. data/lib/br_nfe/service/sc/gaspar/consulta_nfse.rb +17 -0
  57. data/lib/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps.rb +13 -0
  58. data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps.rb +13 -0
  59. data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado.rb +13 -0
  60. data/lib/br_nfe/service/thema/v1/base.rb +55 -0
  61. data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +48 -0
  62. data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +49 -0
  63. data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +48 -0
  64. data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +47 -0
  65. data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +46 -0
  66. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +51 -0
  67. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +30 -0
  68. data/lib/br_nfe/service/xml/v1/_tc_contato.xml.slim +7 -0
  69. data/lib/br_nfe/service/xml/v1/_tc_cpf_cnpj.xml.slim +5 -0
  70. data/lib/br_nfe/service/xml/v1/_tc_dados_construcao_civil.xml.slim +2 -0
  71. data/lib/br_nfe/service/xml/v1/_tc_dados_prestador.xml.slim +15 -0
  72. data/lib/br_nfe/service/xml/v1/_tc_dados_servico.xml.slim +14 -0
  73. data/lib/br_nfe/service/xml/v1/_tc_dados_tomador.xml.slim +15 -0
  74. data/lib/br_nfe/service/xml/v1/_tc_endereco.xml.slim +13 -0
  75. data/lib/br_nfe/service/xml/v1/_tc_identificacao_intermediario_servico.xml.slim +7 -0
  76. data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +7 -0
  77. data/lib/br_nfe/service/xml/v1/_tc_identificacao_orgao_gerador.xml.slim +8 -0
  78. data/lib/br_nfe/service/xml/v1/_tc_identificacao_prestador.xml.slim +3 -0
  79. data/lib/br_nfe/service/xml/v1/_tc_identificacao_rps.xml.slim +16 -0
  80. data/lib/br_nfe/service/xml/v1/_tc_identificacao_tomador.xml.slim +4 -0
  81. data/lib/br_nfe/service/xml/v1/_tc_inf_pedido_cancelamento.xml.slim +4 -0
  82. data/lib/br_nfe/service/xml/v1/_tc_inf_rps.xml.slim +47 -0
  83. data/lib/br_nfe/service/xml/v1/_tc_lote_rps.xml.slim +9 -0
  84. data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +4 -0
  85. data/lib/br_nfe/service/xml/v1/_tc_rps.xml.slim +8 -0
  86. data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +48 -0
  87. data/lib/br_nfe/service/xml/v1/servico_cancelar_nfse_envio.xml.slim +9 -0
  88. data/lib/br_nfe/service/xml/v1/servico_consultar_lote_rps_envio.xml.slim +4 -0
  89. data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_envio.xml.slim +19 -0
  90. data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_rps_envio.xml.slim +5 -0
  91. data/lib/br_nfe/service/xml/v1/servico_consultar_situacao_lote_rps_envio.xml.slim +4 -0
  92. data/lib/br_nfe/service/xml/v1/servico_enviar_lote_rps_envio.xml.slim +9 -0
  93. data/lib/br_nfe/version.rb +2 -2
  94. data/lib/br_nfe/xml/_signed_info_sh1.xml.slim +9 -0
  95. data/lib/br_nfe/xml/signature_sh1.xml.slim +12 -0
  96. data/lib/br_nfe/xml/soap_env.xml.slim +3 -0
  97. data/lib/br_nfe.rb +72 -20
  98. data/test/br_nfe/base_test.rb +257 -108
  99. data/test/br_nfe/helper/have_intermediario_test.rb +2 -2
  100. data/test/br_nfe/helper/have_rps_test.rb +4 -4
  101. data/test/br_nfe/response/service/build_response_test.rb +377 -0
  102. data/test/br_nfe/response/service/default_test.rb +218 -0
  103. data/test/br_nfe/{servico/response → response/service}/nota_fiscal_test.rb +2 -2
  104. data/test/br_nfe/response/service/paths/base_test.rb +199 -0
  105. data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +25 -0
  106. data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +30 -0
  107. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +30 -0
  108. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +30 -0
  109. data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +30 -0
  110. data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +34 -0
  111. data/test/br_nfe/response/service/paths/v1/tc_nfse_test.rb +122 -0
  112. data/test/br_nfe/service/base_test.rb +138 -0
  113. data/test/br_nfe/service/betha/base_test.rb +9 -0
  114. data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +60 -0
  115. data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +55 -0
  116. data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +55 -0
  117. data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +53 -0
  118. data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +49 -0
  119. data/test/br_nfe/service/betha/v1/gateway_test.rb +35 -0
  120. data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +84 -0
  121. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +16 -0
  122. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +16 -0
  123. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +16 -0
  124. data/test/br_nfe/service/betha/v1/xsd/TiposNFe_v01.xsd +583 -0
  125. data/test/br_nfe/service/betha/v1/xsd/nfse_v01.xsd +652 -0
  126. data/test/br_nfe/service/betha/v1/xsd/servico_cancelar_nfse_envio_v01.xsd +17 -0
  127. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_lote_rps_envio_v01.xsd +16 -0
  128. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_envio_v01.xsd +28 -0
  129. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_rps_envio_v01.xsd +16 -0
  130. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_situacao_lote_rps_envio_v01.xsd +16 -0
  131. data/test/br_nfe/service/betha/v1/xsd/servico_enviar_lote_rps_envio_v01.xsd +17 -0
  132. data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema.xsd +308 -0
  133. data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema_v01.xsd +95 -0
  134. data/test/br_nfe/service/concerns/rules/cancelamento_nfs_test.rb +15 -0
  135. data/test/br_nfe/service/concerns/rules/consulta_nfs_por_rps_test.rb +36 -0
  136. data/test/br_nfe/service/concerns/rules/consulta_nfse_test.rb +42 -0
  137. data/test/br_nfe/{servico/base_test.rb → service/concerns/rules/recepcao_lote_rps_test.rb} +12 -4
  138. data/test/br_nfe/{servico → service}/intermediario_test.rb +1 -1
  139. data/test/br_nfe/service/item_test.rb +34 -0
  140. data/test/br_nfe/{servico → service}/rps_test.rb +191 -43
  141. data/test/br_nfe/service/sc/florianopolis/XSD/TiposNFSe_v2.0.xsd +863 -0
  142. data/test/br_nfe/service/sc/florianopolis/XSD/xmldsig-core-schema.xsd +309 -0
  143. data/test/br_nfe/service/sc/florianopolis/base_test.rb +20 -0
  144. data/test/br_nfe/service/sc/florianopolis/cancellation_test.rb +36 -0
  145. data/test/br_nfe/service/sc/florianopolis/emission_rps_test.rb +145 -0
  146. data/test/br_nfe/service/sc/gaspar/cancela_nfse_test.rb +21 -0
  147. data/test/br_nfe/service/sc/gaspar/consulta_nfs_por_rps_test.rb +21 -0
  148. data/test/br_nfe/service/sc/gaspar/consulta_nfse_test.rb +21 -0
  149. data/test/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps_test.rb +21 -0
  150. data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado_test.rb +22 -0
  151. data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_test.rb +22 -0
  152. data/test/br_nfe/service/thema/v1/base_test.rb +65 -0
  153. data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +56 -0
  154. data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +47 -0
  155. data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +50 -0
  156. data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +50 -0
  157. data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +47 -0
  158. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +62 -0
  159. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test_limitado.rb +50 -0
  160. data/test/br_nfe/service/thema/v1/xsd/nfse.xsd +656 -0
  161. data/test/br_nfe/service/thema/v1/xsd/xmldsig-core-schema20020212.xsd +318 -0
  162. data/test/br_nfe/service/xsd/v1/nfse.xsd +779 -0
  163. data/test/br_nfe/service/xsd/v1/xmldsig-core-schema20020212.xsd +316 -0
  164. data/test/cert.pfx +0 -0
  165. data/test/factories/base.rb +2 -0
  166. data/test/factories/destinatario.rb +3 -3
  167. data/test/factories/response/service/build_response.rb +5 -0
  168. data/test/factories/response/service/default.rb +10 -0
  169. data/test/factories/{servico/response → response/service}/nota_fiscal.rb +9 -9
  170. data/test/factories/service/base.rb +6 -0
  171. data/test/factories/service/betha/base.rb +4 -0
  172. data/test/factories/service/betha/v1/cancelamento_nfs.rb +9 -0
  173. data/test/factories/{servico → service}/betha/v1/consulta_lote_rps.rb +2 -2
  174. data/test/factories/{servico → service}/betha/v1/consulta_nfs_por_rps.rb +1 -1
  175. data/test/factories/service/betha/v1/consulta_nfse.rb +8 -0
  176. data/test/factories/{servico → service}/betha/v1/consulta_situacao_lote_rps.rb +2 -2
  177. data/test/factories/{servico → service}/betha/v1/gateway.rb +1 -1
  178. data/test/factories/service/betha/v1/recepcao_lote_rps.rb +8 -0
  179. data/test/factories/{servico → service}/intermediario.rb +2 -2
  180. data/test/factories/service/item.rb +12 -0
  181. data/test/factories/service/rps.rb +50 -0
  182. data/test/factories/service/sc/florianopolis/base.rb +5 -0
  183. data/test/factories/service/sc/florianopolis/cancellation.rb +7 -0
  184. data/test/factories/service/sc/florianopolis/emission_rps.rb +7 -0
  185. data/test/factories/service/sc/gaspar/cancela_nfse.rb +9 -0
  186. data/test/factories/service/sc/gaspar/consulta_lote_rps.rb +7 -0
  187. data/test/factories/service/sc/gaspar/consulta_nfs_por_rps.rb +6 -0
  188. data/test/factories/service/sc/gaspar/consulta_nfse.rb +8 -0
  189. data/test/factories/service/sc/gaspar/consulta_situacao_lote_rps.rb +6 -0
  190. data/test/factories/service/sc/gaspar/recepcao_lote_rps.rb +9 -0
  191. data/test/factories/service/sc/gaspar/recepcao_lote_rps_limitado.rb +9 -0
  192. data/test/factories/service/thema/v1/base.rb +7 -0
  193. data/test/factories/service/thema/v1/cancela_nfse.rb +9 -0
  194. data/test/factories/service/thema/v1/consulta_lote_rps.rb +7 -0
  195. data/test/factories/service/thema/v1/consulta_nfs_por_rps.rb +6 -0
  196. data/test/factories/service/thema/v1/consulta_nfse.rb +8 -0
  197. data/test/factories/service/thema/v1/consulta_situacao_lote_rps.rb +6 -0
  198. data/test/factories/service/thema/v1/recepcao_lote_rps.rb +9 -0
  199. data/test/factories/service/thema/v1/recepcao_lote_rps_limitado.rb +8 -0
  200. data/test/test_helper.rb +42 -0
  201. metadata +338 -121
  202. data/lib/br_nfe/servico/base.rb +0 -35
  203. data/lib/br_nfe/servico/betha/base.rb +0 -85
  204. data/lib/br_nfe/servico/betha/build_response.rb +0 -141
  205. data/lib/br_nfe/servico/betha/v1/build_response.rb +0 -121
  206. data/lib/br_nfe/servico/betha/v1/cancelamento_nfs.rb +0 -52
  207. data/lib/br_nfe/servico/betha/v1/consulta_lote_rps.rb +0 -33
  208. data/lib/br_nfe/servico/betha/v1/consulta_nfs_por_rps.rb +0 -37
  209. data/lib/br_nfe/servico/betha/v1/consulta_nfse.rb +0 -51
  210. data/lib/br_nfe/servico/betha/v1/consulta_situacao_lote_rps.rb +0 -18
  211. data/lib/br_nfe/servico/betha/v1/gateway.rb +0 -125
  212. data/lib/br_nfe/servico/betha/v1/recepcao_lote_rps.rb +0 -97
  213. data/lib/br_nfe/servico/betha/v2/build_response.rb +0 -159
  214. data/lib/br_nfe/servico/betha/v2/cancelamento_nfs.rb +0 -30
  215. data/lib/br_nfe/servico/betha/v2/consulta_lote_rps.rb +0 -30
  216. data/lib/br_nfe/servico/betha/v2/consulta_nfse_por_rps.rb +0 -27
  217. data/lib/br_nfe/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -30
  218. data/lib/br_nfe/servico/betha/v2/gateway.rb +0 -230
  219. data/lib/br_nfe/servico/betha/v2/gera_nfse.rb +0 -30
  220. data/lib/br_nfe/servico/betha/v2/recepcao_lote_rps.rb +0 -52
  221. data/lib/br_nfe/servico/betha/v2/substituicao_nfse.rb +0 -43
  222. data/lib/br_nfe/servico/response/default.rb +0 -34
  223. data/lib/br_nfe/servico/rps.rb +0 -108
  224. data/test/br_nfe/servico/betha/base_test.rb +0 -135
  225. data/test/br_nfe/servico/betha/v1/build_response_test.rb +0 -557
  226. data/test/br_nfe/servico/betha/v1/cancelamento_nfs_test.rb +0 -72
  227. data/test/br_nfe/servico/betha/v1/consulta_lote_rps_test.rb +0 -46
  228. data/test/br_nfe/servico/betha/v1/consulta_nfs_por_rps_test.rb +0 -68
  229. data/test/br_nfe/servico/betha/v1/consulta_nfse_test.rb +0 -74
  230. data/test/br_nfe/servico/betha/v1/consulta_situacao_lote_rps_test.rb +0 -27
  231. data/test/br_nfe/servico/betha/v1/gateway_test.rb +0 -151
  232. data/test/br_nfe/servico/betha/v1/recepcao_lote_rps_test.rb +0 -249
  233. data/test/br_nfe/servico/betha/v2/cancelamento_nfs_test.rb +0 -44
  234. data/test/br_nfe/servico/betha/v2/consulta_lote_rps_test.rb +0 -38
  235. data/test/br_nfe/servico/betha/v2/consulta_nfse_por_rps_test.rb +0 -36
  236. data/test/br_nfe/servico/betha/v2/envio_lote_rps_sincrono_test.rb +0 -51
  237. data/test/br_nfe/servico/betha/v2/gateway_test.rb +0 -372
  238. data/test/br_nfe/servico/betha/v2/gera_nfse_test.rb +0 -62
  239. data/test/br_nfe/servico/betha/v2/recepcao_lote_rps_test.rb +0 -108
  240. data/test/br_nfe/servico/betha/v2/substituicao_nfse_test.rb +0 -84
  241. data/test/br_nfe/servico/response/default_test.rb +0 -54
  242. data/test/factories/servico/base.rb +0 -5
  243. data/test/factories/servico/betha/base.rb +0 -5
  244. data/test/factories/servico/betha/v1/build_response.rb +0 -6
  245. data/test/factories/servico/betha/v1/cancelamento_nfs.rb +0 -7
  246. data/test/factories/servico/betha/v1/consulta_nfse.rb +0 -8
  247. data/test/factories/servico/betha/v1/recepcao_lote_rps.rb +0 -6
  248. data/test/factories/servico/betha/v2/cancelamento_nfs.rb +0 -7
  249. data/test/factories/servico/betha/v2/consulta_lote_rps.rb +0 -6
  250. data/test/factories/servico/betha/v2/consulta_nfse_por_rps.rb +0 -6
  251. data/test/factories/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -5
  252. data/test/factories/servico/betha/v2/gateway.rb +0 -5
  253. data/test/factories/servico/betha/v2/gera_nfse.rb +0 -6
  254. data/test/factories/servico/betha/v2/recepcao_lote_rps.rb +0 -5
  255. data/test/factories/servico/betha/v2/substituicao_nfse.rb +0 -8
  256. data/test/factories/servico/response/default.rb +0 -10
  257. data/test/factories/servico/rps.rb +0 -44
@@ -0,0 +1,138 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Base do
4
+ subject { FactoryGirl.build(:br_nfe_servico_base) }
5
+
6
+ describe '#xml_current_dir_path' do
7
+ it "o valor padrão deve ser o diretorio xml de serviços na versão do layout setado" do
8
+ subject.expects(:xml_version).returns(:version_layout)
9
+ subject.xml_current_dir_path.must_equal(["#{BrNfe.root}/lib/br_nfe/service/xml/version_layout"])
10
+ end
11
+ end
12
+
13
+ describe '#response_path_module' do
14
+ it "deve ser sobrescrito nas subclasses" do
15
+ assert_raises RuntimeError do
16
+ subject.response_path_module
17
+ end
18
+ end
19
+ end
20
+
21
+ describe "#response_root_path" do
22
+ it "deve ter um array vazio por padrão" do
23
+ subject.response_root_path.must_equal([])
24
+ end
25
+ end
26
+
27
+ describe '#nfse_xml_path' do
28
+ it "deve retornar o caminho generico para encontrar o xml da NFS-e" do
29
+ subject.nfse_xml_path.must_equal '//*/*/*/*'
30
+ # Esse caminho significa: //Envelope/Body/TagRoot/NFSe
31
+ end
32
+ end
33
+
34
+ describe "#body_xml_path" do
35
+ it "deve ter um array vazio por padrão" do
36
+ subject.body_xml_path.must_equal([])
37
+ end
38
+ end
39
+
40
+ describe "#soap_xml" do
41
+ it "deve trazer a tag_xml e a renderização para o soap_env concatenados" do
42
+ subject.expects(:tag_xml).returns('<?xml?>')
43
+ subject.expects(:render_xml).with('soap_env').returns('<Soap>value</Soap>')
44
+ subject.soap_xml.must_equal '<?xml?><Soap>value</Soap>'
45
+ end
46
+ it "deve renderizar o xml com o valor original" do
47
+ subject.stubs(:xml_builder).returns('<xml>builder</xml>')
48
+ subject.soap_xml.must_equal '<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:ins0="http://www.w3.org/2000/09/xmldsig#" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><xml>builder</xml></soapenv:Body></soapenv:Envelope>'
49
+ end
50
+ end
51
+
52
+ describe "#request" do
53
+ let(:nori) { Nori.new(:strip_namespaces => true, :convert_tags_to => lambda { |tag| tag.snakecase.to_sym }) }
54
+ let(:soap_fault) do
55
+ obj = Savon::SOAPFault.new new_response, nori
56
+ obj.stubs(:message_by_version).returns("Message Error")
57
+ obj
58
+ end
59
+ let(:new_response) do
60
+ HTTPI::Response.new 500, {}, '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:authenticateResponse xmlns:ns2="http://v1_0.ws.user.example.com"></ns2:authenticateResponse></soap:Body></soap:Envelope>'
61
+ end
62
+ let(:soap_xml) { '<Envelope><Body>XML</Body></Envelope>' }
63
+
64
+ before do
65
+ subject.stubs(:wsdl).returns('http://duobr.com?wsdl')
66
+ subject.stubs(:method_wsdl).returns(:operation)
67
+ subject.expects(:soap_xml).returns(soap_xml)
68
+ end
69
+
70
+ it "deve fazer a requisição para o WS passando a resposta para o metodo set_response" do
71
+ subject.client_wsdl.expects(:call).with(:operation, xml: soap_xml).returns(:savon_response)
72
+ subject.expects(:set_response).with(:savon_response).returns(:result)
73
+ subject.request.must_equal :result
74
+ end
75
+
76
+ it "Se ocorrer erro Savon::SOAPFault deve ser tratado e setar o status da resposta com :soap_error" do
77
+ subject.client_wsdl.expects(:call).with(:operation, xml: soap_xml).returns(:savon_response)
78
+ subject.expects(:set_response).with(:savon_response).raises(soap_fault)
79
+
80
+ subject.request
81
+ subject.response.error_messages.must_equal(['Message Error'])
82
+ subject.response.status.must_equal :soap_error
83
+ end
84
+
85
+ it "Se ocorrer erro Savon::HTTPError deve ser tratado e setar o status da resposta com :http_error" do
86
+ http_error = Savon::HTTPError.new(new_response)
87
+ http_error.stubs(:to_s).returns('Message')
88
+
89
+ subject.client_wsdl.expects(:call).with(:operation, xml: soap_xml).raises(http_error)
90
+
91
+ subject.request
92
+ subject.response.error_messages.must_equal(['Message'])
93
+ subject.response.status.must_equal :http_error
94
+ end
95
+
96
+ it "Se ocorrer qualquer outro erro deve setar o status com :unknown_error" do
97
+ error = RuntimeError.new('ERROU')
98
+
99
+ subject.client_wsdl.expects(:call).with(:operation, xml: soap_xml).raises(error)
100
+
101
+ subject.request
102
+ subject.response.error_messages.must_equal(['ERROU'])
103
+ subject.response.status.must_equal :unknown_error
104
+ end
105
+ end
106
+
107
+ describe "#set_response" do
108
+ let(:build_response) { BrNfe::Response::Service::BuildResponse.new() }
109
+ it "Deve setar a variavel @original_response com a resposta original do savon" do
110
+ BrNfe::Response::Service::BuildResponse.any_instance.stubs(:response).returns(:response)
111
+ subject.stubs(:response_root_path).returns(:response_root_path)
112
+ subject.stubs(:nfse_xml_path).returns(:nfse_xml_path)
113
+ subject.stubs(:response_path_module)
114
+ subject.stubs(:body_xml_path).returns(:body_xml_path)
115
+
116
+ subject.set_response(:original).must_equal :response
117
+ subject.instance_variable_get(:@original_response).must_equal(:original)
118
+ end
119
+ it "deve instanciar o build_response e retornar a resposta" do
120
+ build_response
121
+ subject.expects(:response_root_path).returns(:response_root_path)
122
+ subject.expects(:nfse_xml_path).returns(:nfse_xml_path)
123
+ subject.expects(:response_path_module)
124
+ subject.expects(:body_xml_path).returns(:body_xml_path)
125
+ BrNfe::Response::Service::BuildResponse.expects(:new).with({
126
+ savon_response: :savon_response,
127
+ keys_root_path: :response_root_path,
128
+ nfe_xml_path: :nfse_xml_path,
129
+ module_methods: nil,
130
+ body_xml_path: :body_xml_path,
131
+ }).returns(build_response)
132
+ build_response.expects(:response).returns('resposta')
133
+
134
+ subject.set_response(:savon_response).must_equal 'resposta'
135
+ subject.instance_variable_get(:@response).must_equal('resposta')
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Betha::Base do
4
+ subject { FactoryGirl.build(:br_nfe_servico_betha_base) }
5
+
6
+ it "deve herdar de BrNfe::Service::Base" do
7
+ subject.class.superclass.must_equal BrNfe::Service::Base
8
+ end
9
+ end
@@ -0,0 +1,60 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Betha::V1::CancelamentoNfs do
4
+ subject { FactoryGirl.build(:servico_betha_cancelamento_nfs, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+
7
+ describe "superclass" do
8
+ it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::Gateway }
9
+ end
10
+
11
+ it "deve conter as regras de BrNfe::Service::Concerns::Rules::CancelamentoNfs inclusas" do
12
+ subject.class.included_modules.must_include BrNfe::Service::Concerns::Rules::CancelamentoNfs
13
+ end
14
+
15
+ it "o certificado deve ser obrigatório" do
16
+ subject.certificado_obrigatorio?.must_equal true
17
+ end
18
+
19
+ describe "#wsdl" do
20
+ context "for env production" do
21
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/cancelarNfseV02?wsdl' }
22
+ end
23
+ context "for env test" do
24
+ before do
25
+ subject.env = :test
26
+ end
27
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/cancelarNfseV02?wsdl' }
28
+ end
29
+ end
30
+
31
+ describe "#method_wsdl" do
32
+ it { subject.method_wsdl.must_equal :cancelar_nfse_envio }
33
+ end
34
+
35
+ describe "#response_path_module" do
36
+ it "deve ter o module ServicoCancelarNfseResposta" do
37
+ subject.response_path_module.must_equal BrNfe::Service::Response::Paths::V1::ServicoCancelarNfseResposta
38
+ end
39
+ end
40
+
41
+ it "#response_root_path" do
42
+ subject.response_root_path.must_equal [:cancelar_nfse_envio_response]
43
+ end
44
+
45
+ describe "Validação do XML através do XSD" do
46
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
47
+
48
+ describe "Validações a partir do arquivo XSD" do
49
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
50
+ Dir.chdir(schemas_dir) do
51
+ schema = Nokogiri::XML::Schema(IO.read('servico_cancelar_nfse_envio_v01.xsd'))
52
+ document = Nokogiri::XML(subject.content_xml)
53
+ errors = schema.validate(document)
54
+ errors.must_be_empty
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
4
+ subject { FactoryGirl.build(:servico_betha_consulta_lote_rps, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+
7
+ describe "superclass" do
8
+ it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::Gateway }
9
+ end
10
+
11
+ describe "validations" do
12
+ it { must validate_presence_of(:protocolo) }
13
+ end
14
+
15
+ describe "#wsdl" do
16
+ context "for env production" do
17
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarLoteRps?wsdl' }
18
+ end
19
+ context "for env test" do
20
+ before do
21
+ subject.env = :test
22
+ end
23
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps?wsdl' }
24
+ end
25
+ end
26
+
27
+ describe "#method_wsdl" do
28
+ it { subject.method_wsdl.must_equal :consultar_lote_rps_envio }
29
+ end
30
+
31
+ describe "#response_path_module" do
32
+ it "deve ter um module" do
33
+ subject.response_path_module.must_equal BrNfe::Service::Betha::V1::ResponsePaths::ServicoConsultarLoteRpsResposta
34
+ end
35
+ end
36
+
37
+ it "#response_root_path" do
38
+ subject.response_root_path.must_equal [:consultar_lote_rps_envio_response]
39
+ end
40
+
41
+ describe "Validação do XML através do XSD" do
42
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
43
+
44
+ describe "Validações a partir do arquivo XSD" do
45
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
46
+ Dir.chdir(schemas_dir) do
47
+ schema = Nokogiri::XML::Schema(IO.read('servico_consultar_lote_rps_envio_v01.xsd'))
48
+ document = Nokogiri::XML(subject.content_xml)
49
+ errors = schema.validate(document)
50
+ errors.must_be_empty
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
4
+ subject { FactoryGirl.build(:servico_betha_consulta_nfs_por_rps, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+ let(:rps) { subject.rps }
7
+
8
+ describe "superclass" do
9
+ it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::Gateway }
10
+ end
11
+
12
+ it "deve conter as regras de BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps inclusas" do
13
+ subject.class.included_modules.must_include BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps
14
+ end
15
+
16
+ describe "#wsdl" do
17
+ context "for env production" do
18
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarNfsePorRps?wsdl' }
19
+ end
20
+ context "for env test" do
21
+ before do
22
+ subject.env = :test
23
+ end
24
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarNfsePorRps?wsdl' }
25
+ end
26
+ end
27
+
28
+ describe "#method_wsdl" do
29
+ it { subject.method_wsdl.must_equal :consultar_nfse_por_rps_envio }
30
+ end
31
+
32
+ it "#response_path_module" do
33
+ subject.response_path_module.must_equal BrNfe::Service::Betha::V1::ResponsePaths::ServicoConsultarNfseRpsResposta
34
+ end
35
+
36
+ it "#response_root_path" do
37
+ subject.response_root_path.must_equal [:consultar_nfse_rps_envio_response]
38
+ end
39
+
40
+ describe "Validação do XML através do XSD" do
41
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
42
+
43
+ describe "Validações a partir do arquivo XSD" do
44
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
45
+ Dir.chdir(schemas_dir) do
46
+ schema = Nokogiri::XML::Schema(IO.read('servico_consultar_nfse_rps_envio_v01.xsd'))
47
+ document = Nokogiri::XML(subject.content_xml)
48
+ errors = schema.validate(document)
49
+ errors.must_be_empty
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Betha::V1::ConsultaNfse do
4
+ subject { FactoryGirl.build(:servico_betha_consulta_nfse, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+
7
+ describe "superclass" do
8
+ it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::Gateway }
9
+ end
10
+
11
+ it "deve conter as regras de BrNfe::Service::Concerns::Rules::ConsultaNfse inclusas" do
12
+ subject.class.included_modules.must_include BrNfe::Service::Concerns::Rules::ConsultaNfse
13
+ end
14
+
15
+ describe "#wsdl" do
16
+ context "for env production" do
17
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarNfse?wsdl' }
18
+ end
19
+ context "for env test" do
20
+ before do
21
+ subject.env = :test
22
+ end
23
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarNfse?wsdl' }
24
+ end
25
+ end
26
+
27
+ describe "#method_wsdl" do
28
+ it { subject.method_wsdl.must_equal :consultar_nfse_envio }
29
+ end
30
+
31
+ it "#response_path_module" do
32
+ subject.response_path_module.must_equal BrNfe::Service::Betha::V1::ResponsePaths::ServicoConsultarNfseResposta
33
+ end
34
+
35
+ it "#response_root_path" do
36
+ subject.response_root_path.must_equal [:consultar_nfse_envio_response]
37
+ end
38
+
39
+ describe "Validação do XML através do XSD" do
40
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
41
+
42
+ describe "Validações a partir do arquivo XSD" do
43
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
44
+ Dir.chdir(schemas_dir) do
45
+ schema = Nokogiri::XML::Schema(IO.read('servico_consultar_nfse_envio_v01.xsd'))
46
+ document = Nokogiri::XML(subject.content_xml)
47
+ errors = schema.validate(document)
48
+ errors.must_be_empty
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Betha::V1::ConsultaSituacaoLoteRps do
4
+ subject { FactoryGirl.build(:servico_betha_consulta_situacao_lote_rps, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+
7
+ describe "superclass" do
8
+ it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::ConsultaLoteRps }
9
+ end
10
+
11
+ describe "#wsdl" do
12
+ context "for env production" do
13
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarSituacaoLoteRps?wsdl' }
14
+ end
15
+ context "for env test" do
16
+ before do
17
+ subject.env = :test
18
+ end
19
+ it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarSituacaoLoteRps?wsdl' }
20
+ end
21
+ end
22
+
23
+ describe "#method_wsdl" do
24
+ it { subject.method_wsdl.must_equal :consultar_situacao_lote_rps_envio }
25
+ end
26
+
27
+ it "#response_path_module" do
28
+ subject.response_path_module.must_equal BrNfe::Service::Response::Paths::V1::ServicoConsultarSituacaoLoteRpsResposta
29
+ end
30
+
31
+ it "#response_path_module" do
32
+ subject.response_root_path.must_equal [:consultar_situacao_lote_rps_envio_response]
33
+ end
34
+
35
+ describe "Validação do XML através do XSD" do
36
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
37
+
38
+ describe "Validações a partir do arquivo XSD" do
39
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
40
+ Dir.chdir(schemas_dir) do
41
+ schema = Nokogiri::XML::Schema(IO.read('servico_consultar_situacao_lote_rps_envio_v01.xsd'))
42
+ document = Nokogiri::XML(subject.content_xml)
43
+ errors = schema.validate(document)
44
+ errors.must_be_empty
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Betha::V1::Gateway do
4
+ subject { FactoryGirl.build(:br_nfe_servico_betha_v1_gateway, emitente: emitente) }
5
+ let(:rps) { FactoryGirl.build(:br_nfe_rps, :completo) }
6
+ let(:emitente) { FactoryGirl.build(:emitente) }
7
+ let(:intermediario) { FactoryGirl.build(:intermediario) }
8
+
9
+ describe "inheritance class" do
10
+ it { subject.class.superclass.must_equal BrNfe::Service::Betha::Base }
11
+ end
12
+
13
+ describe "#message_namespaces" do
14
+ it "deve ter um valor" do
15
+ subject.message_namespaces.must_equal({"xmlns:ns1" => "http://www.betha.com.br/e-nota-contribuinte-ws"})
16
+ end
17
+ end
18
+
19
+ describe "#soap_namespaces" do
20
+ it "deve conter os namespaces padrões mais o namespace da mensagem" do
21
+ subject.soap_namespaces.must_equal({
22
+ 'xmlns:soapenv' => 'http://schemas.xmlsoap.org/soap/envelope/',
23
+ 'xmlns:ins0' => 'http://www.w3.org/2000/09/xmldsig#',
24
+ 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
25
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
26
+ "xmlns:ns1" => "http://www.betha.com.br/e-nota-contribuinte-ws"
27
+ })
28
+ end
29
+ end
30
+
31
+ describe "#namespace_identifier" do
32
+ it { subject.namespace_identifier.must_equal :ns1 }
33
+ end
34
+
35
+ end