nfe_reader 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -1
  3. data/lib/helpers/attribute_helper.rb +18 -0
  4. data/lib/helpers/creator_helper.rb +32 -0
  5. data/lib/nfe_reader/authorization.rb +10 -6
  6. data/lib/nfe_reader/carrier.rb +14 -10
  7. data/lib/nfe_reader/collection/duplicate.rb +10 -6
  8. data/lib/nfe_reader/collection.rb +28 -24
  9. data/lib/nfe_reader/customer.rb +56 -52
  10. data/lib/nfe_reader/delivery.rb +18 -14
  11. data/lib/nfe_reader/document.rb +65 -61
  12. data/lib/nfe_reader/export.rb +9 -5
  13. data/lib/nfe_reader/fiscal.rb +31 -27
  14. data/lib/nfe_reader/header.rb +120 -117
  15. data/lib/nfe_reader/information.rb +17 -26
  16. data/lib/nfe_reader/nfe.rb +130 -0
  17. data/lib/nfe_reader/product/armament.rb +20 -16
  18. data/lib/nfe_reader/product/cane.rb +22 -32
  19. data/lib/nfe_reader/product/exportation.rb +17 -13
  20. data/lib/nfe_reader/product/fuel.rb +15 -11
  21. data/lib/nfe_reader/product/importation.rb +44 -40
  22. data/lib/nfe_reader/product/medicament.rb +17 -13
  23. data/lib/nfe_reader/product/vehicle.rb +115 -111
  24. data/lib/nfe_reader/product.rb +67 -76
  25. data/lib/nfe_reader/provider.rb +39 -35
  26. data/lib/nfe_reader/purchase.rb +10 -6
  27. data/lib/nfe_reader/removal.rb +18 -14
  28. data/lib/nfe_reader/taxation/cofins.rb +41 -37
  29. data/lib/nfe_reader/taxation/cofins_st.rb +17 -13
  30. data/lib/nfe_reader/taxation/icms.rb +80 -76
  31. data/lib/nfe_reader/taxation/importation_tax.rb +16 -12
  32. data/lib/nfe_reader/taxation/ipi.rb +37 -33
  33. data/lib/nfe_reader/taxation/issqn.rb +19 -15
  34. data/lib/nfe_reader/taxation/pis.rb +41 -37
  35. data/lib/nfe_reader/taxation/pis_st.rb +18 -14
  36. data/lib/nfe_reader/total.rb +71 -67
  37. data/lib/nfe_reader/transport.rb +87 -83
  38. data/lib/nfe_reader/version.rb +1 -1
  39. data/lib/nfe_reader.rb +3 -130
  40. data/test/helpers/attributte_helper_test.rb +19 -0
  41. data/test/helpers/creator_helper_test.rb +28 -0
  42. data/test/{nokogiri_test.rb → helpers/nokogiri_test.rb} +1 -1
  43. data/test/nfe_reader/authorization_test.rb +2 -2
  44. data/test/nfe_reader/cane_test.rb +2 -2
  45. data/test/nfe_reader/carrier_test.rb +2 -2
  46. data/test/nfe_reader/collection/duplicate_test.rb +2 -2
  47. data/test/nfe_reader/collection_test.rb +3 -3
  48. data/test/nfe_reader/customer_test.rb +3 -3
  49. data/test/nfe_reader/delivery_test.rb +2 -2
  50. data/test/nfe_reader/document_test.rb +2 -2
  51. data/test/nfe_reader/export_test.rb +2 -2
  52. data/test/nfe_reader/fiscal_test.rb +2 -2
  53. data/test/nfe_reader/header_test.rb +2 -2
  54. data/test/nfe_reader/information_test.rb +2 -2
  55. data/test/{nfe_reader_test.rb → nfe_reader/nfe_test.rb} +15 -15
  56. data/test/nfe_reader/product/armament_test.rb +2 -2
  57. data/test/nfe_reader/product/exportation_test.rb +2 -2
  58. data/test/nfe_reader/product/fuel_test.rb +2 -2
  59. data/test/nfe_reader/product/importation_test.rb +27 -2
  60. data/test/nfe_reader/product/medicament_test.rb +2 -2
  61. data/test/nfe_reader/product/vehicle_test.rb +2 -2
  62. data/test/nfe_reader/product_test.rb +6 -6
  63. data/test/nfe_reader/provider_test.rb +3 -3
  64. data/test/nfe_reader/purchase_test.rb +2 -2
  65. data/test/nfe_reader/removal_test.rb +2 -2
  66. data/test/nfe_reader/taxation/cofins_st_test.rb +2 -2
  67. data/test/nfe_reader/taxation/cofins_test.rb +2 -2
  68. data/test/nfe_reader/taxation/icms_test.rb +2 -2
  69. data/test/nfe_reader/taxation/importation_tax_test.rb +2 -2
  70. data/test/nfe_reader/taxation/ipi_test.rb +2 -2
  71. data/test/nfe_reader/taxation/issqn_test.rb +2 -2
  72. data/test/nfe_reader/taxation/pis_st_test.rb +2 -2
  73. data/test/nfe_reader/taxation/pis_test.rb +2 -2
  74. data/test/nfe_reader/total_test.rb +2 -2
  75. data/test/nfe_reader/transport_test.rb +3 -3
  76. metadata +14 -7
  77. /data/lib/{nokogiri_hash.rb → helpers/nokogiri_hash.rb} +0 -0
@@ -1,75 +1,79 @@
1
1
  # encoding: UTF-8
2
2
  module Nfe
3
- class Total
4
- attr_reader :icms_base, :icms, :st_base, :st, :product, :freight,
5
- :insurance, :descount, :ii, :ipi, :pis, :cofins, :another, :total,
6
- :service_value, :service_base, :service_iss, :service_pis, :service_cofins,
7
- :retention_pis, :retention_csll, :retention_irrf_base, :retention_cofins,
8
- :retention_irrf, :retention_foresight_base, :retention_foresight
3
+ module Reader
4
+ class Total
5
+ include ::AttributeHelper
9
6
 
10
- def initialize(attrs = {})
11
- # Impostos
12
- if attrs[:ICMSTot]
13
- # Base ICMS
14
- @icms_base = attrs[:ICMSTot][:vBC]
15
- # Valor ICMS
16
- @icms = attrs[:ICMSTot][:vICMS]
17
- # Base ICMS ST
18
- @st_base = attrs[:ICMSTot][:vBCST]
19
- # Valor ICMS ST
20
- @st = attrs[:ICMSTot][:vST]
21
- # Total de Produtos
22
- @product = attrs[:ICMSTot][:vProd]
23
- # Total de Frete
24
- @freight = attrs[:ICMSTot][:vFrete]
25
- # Total de Seguro
26
- @insurance = attrs[:ICMSTot][:vSeg]
27
- # Total de Desconto
28
- @descount = attrs[:ICMSTot][:vDesc]
29
- # Total de Imposto de Importacao
30
- @ii = attrs[:ICMSTot][:vII]
31
- # Total de IPI
32
- @ipi = attrs[:ICMSTot][:vIPI]
33
- # Total de PIS
34
- @pis = attrs[:ICMSTot][:vPIS]
35
- # Total de COFINS
36
- @cofins = attrs[:ICMSTot][:vCOFINS]
37
- # Total de Outros
38
- @another = attrs[:ICMSTot][:vOutro]
39
- # Total NFe
40
- @total = attrs[:ICMSTot][:vNF]
41
- end
7
+ attr_reader :icms_base, :icms, :st_base, :st, :product, :freight,
8
+ :insurance, :descount, :ii, :ipi, :pis, :cofins, :another, :total,
9
+ :service_value, :service_base, :service_iss, :service_pis, :service_cofins,
10
+ :retention_pis, :retention_csll, :retention_irrf_base, :retention_cofins,
11
+ :retention_irrf, :retention_foresight_base, :retention_foresight
42
12
 
43
- # Servicos
44
- if attrs[:ISSQNtot]
45
- # Valor do Servico
46
- @service_value = attrs[:ISSQNtot][:vServ]
47
- # Base de calculo do Servico
48
- @service_base = attrs[:ISSQNtot][:vBC]
49
- # ISS do Servico
50
- @service_iss = attrs[:ISSQNtot][:vISS]
51
- # Pis do Servico
52
- @service_pis = attrs[:ISSQNtot][:vPIS]
53
- # Cofins do Servico
54
- @service_cofins = attrs[:ISSQNtot][:vCOFINS]
55
- end
13
+ def initialize(attrs = {})
14
+ # Impostos
15
+ if attrs[:ICMSTot]
16
+ # Base ICMS
17
+ @icms_base = attrs[:ICMSTot][:vBC]
18
+ # Valor ICMS
19
+ @icms = attrs[:ICMSTot][:vICMS]
20
+ # Base ICMS ST
21
+ @st_base = attrs[:ICMSTot][:vBCST]
22
+ # Valor ICMS ST
23
+ @st = attrs[:ICMSTot][:vST]
24
+ # Total de Produtos
25
+ @product = attrs[:ICMSTot][:vProd]
26
+ # Total de Frete
27
+ @freight = attrs[:ICMSTot][:vFrete]
28
+ # Total de Seguro
29
+ @insurance = attrs[:ICMSTot][:vSeg]
30
+ # Total de Desconto
31
+ @descount = attrs[:ICMSTot][:vDesc]
32
+ # Total de Imposto de Importacao
33
+ @ii = attrs[:ICMSTot][:vII]
34
+ # Total de IPI
35
+ @ipi = attrs[:ICMSTot][:vIPI]
36
+ # Total de PIS
37
+ @pis = attrs[:ICMSTot][:vPIS]
38
+ # Total de COFINS
39
+ @cofins = attrs[:ICMSTot][:vCOFINS]
40
+ # Total de Outros
41
+ @another = attrs[:ICMSTot][:vOutro]
42
+ # Total NFe
43
+ @total = attrs[:ICMSTot][:vNF]
44
+ end
45
+
46
+ # Servicos
47
+ if attrs[:ISSQNtot]
48
+ # Valor do Servico
49
+ @service_value = attrs[:ISSQNtot][:vServ]
50
+ # Base de calculo do Servico
51
+ @service_base = attrs[:ISSQNtot][:vBC]
52
+ # ISS do Servico
53
+ @service_iss = attrs[:ISSQNtot][:vISS]
54
+ # Pis do Servico
55
+ @service_pis = attrs[:ISSQNtot][:vPIS]
56
+ # Cofins do Servico
57
+ @service_cofins = attrs[:ISSQNtot][:vCOFINS]
58
+ end
56
59
 
57
- # Retencoes
58
- if attrs[:retTrib]
59
- # Retencao de PIS
60
- @retention_pis = attrs[:retTrib][:vRetPIS]
61
- # Retencao de COFINS
62
- @retention_cofins = attrs[:retTrib][:vRetCOFINS]
63
- # Retencao de CSLL
64
- @retention_csll = attrs[:retTrib][:vRetCSLL]
65
- # Base de Retencao do IRRF
66
- @retention_irrf_base = attrs[:retTrib][:vBCIRRF]
67
- # Valor de Retencao do IRRF
68
- @retention_irrf = attrs[:retTrib][:vIRRF]
69
- # Base de Retencao da Previdencia
70
- @retention_foresight_base = attrs[:retTrib][:vBCRetPrev]
71
- # Valor de Retencao da Previdencia
72
- @retention_foresight = attrs[:retTrib][:vRetPrev]
60
+ # Retencoes
61
+ if attrs[:retTrib]
62
+ # Retencao de PIS
63
+ @retention_pis = attrs[:retTrib][:vRetPIS]
64
+ # Retencao de COFINS
65
+ @retention_cofins = attrs[:retTrib][:vRetCOFINS]
66
+ # Retencao de CSLL
67
+ @retention_csll = attrs[:retTrib][:vRetCSLL]
68
+ # Base de Retencao do IRRF
69
+ @retention_irrf_base = attrs[:retTrib][:vBCIRRF]
70
+ # Valor de Retencao do IRRF
71
+ @retention_irrf = attrs[:retTrib][:vIRRF]
72
+ # Base de Retencao da Previdencia
73
+ @retention_foresight_base = attrs[:retTrib][:vBCRetPrev]
74
+ # Valor de Retencao da Previdencia
75
+ @retention_foresight = attrs[:retTrib][:vRetPrev]
76
+ end
73
77
  end
74
78
  end
75
79
  end
@@ -1,97 +1,101 @@
1
1
  # encoding: UTF-8
2
2
  module Nfe
3
- class Transport
4
- attr_reader :kind, :service_value, :base, :icms_aliquot, :icms_value,
5
- :cfop, :city, :vehicle_plaque, :vehicle_state, :vehicle_rntc, :hauling_palque,
6
- :hauling_state, :hauling_rntc, :wagon, :ferry, :volume_amount, :volume_kind,
7
- :volume_brand, :volume_number, :weight_net, :weight_gross, :seals, :carrier
3
+ module Reader
4
+ class Transport
5
+ include ::AttributeHelper
8
6
 
9
- # Fields Values:
10
- #
11
- # modFrete: 0- Por conta do emitente;
12
- # 1- Por conta do destinatário/remetente;
13
- # 2- Por conta de terceiros;
14
- # 9- Sem frete.
15
- #
16
- def initialize(attrs = {})
17
- # Modalidade
18
- @kind = attrs[:modFrete]
19
-
20
- # == Grupo de Retenção do ICMS do transporte
21
- if attrs[:retTransp]
22
- # Valor do Servico
23
- @service_value = attrs[:retTransp][:vServ]
24
- # BC da Retenção do ICMS
25
- @base = attrs[:retTransp][:vBCRet]
26
- # Alíquota da Retenção
27
- @icms_aliquot = attrs[:retTransp][:pICMSRet]
28
- # Valor do ICMS Retido
29
- @icms_value = attrs[:retTransp][:vICMSRet]
30
- # CFOP
31
- @cfop = attrs[:retTransp][:CFOP]
32
- # Municipio gerador de ICMS
33
- @city = attrs[:retTransp][:cMunFG]
34
- end
7
+ attr_reader :kind, :service_value, :base, :icms_aliquot, :icms_value,
8
+ :cfop, :city, :vehicle_plaque, :vehicle_state, :vehicle_rntc, :hauling_palque,
9
+ :hauling_state, :hauling_rntc, :wagon, :ferry, :volume_amount, :volume_kind,
10
+ :volume_brand, :volume_number, :weight_net, :weight_gross, :seals, :carrier
35
11
 
36
- # == Veiculo
37
- if attrs[:veicTransp]
38
- # Placa
39
- @vehicle_plaque = attrs[:veicTransp][:placa]
40
- # Estado
41
- @vehicle_state = attrs[:veicTransp][:UF]
42
- # Registro Nacional de Transportador de Carga
43
- @vehicle_rntc = attrs[:veicTransp][:RNTC]
44
- end
12
+ # Fields Values:
13
+ #
14
+ # modFrete: 0- Por conta do emitente;
15
+ # 1- Por conta do destinatário/remetente;
16
+ # 2- Por conta de terceiros;
17
+ # 9- Sem frete.
18
+ #
19
+ def initialize(attrs = {})
20
+ # Modalidade
21
+ @kind = attrs[:modFrete]
22
+
23
+ # == Grupo de Retenção do ICMS do transporte
24
+ if attrs[:retTransp]
25
+ # Valor do Servico
26
+ @service_value = attrs[:retTransp][:vServ]
27
+ # BC da Retenção do ICMS
28
+ @base = attrs[:retTransp][:vBCRet]
29
+ # Alíquota da Retenção
30
+ @icms_aliquot = attrs[:retTransp][:pICMSRet]
31
+ # Valor do ICMS Retido
32
+ @icms_value = attrs[:retTransp][:vICMSRet]
33
+ # CFOP
34
+ @cfop = attrs[:retTransp][:CFOP]
35
+ # Municipio gerador de ICMS
36
+ @city = attrs[:retTransp][:cMunFG]
37
+ end
45
38
 
46
- # == Reboque
47
- if attrs[:reboque]
48
- # Placa
49
- @hauling_palque = attrs[:reboque][:placa]
50
- # Estado
51
- @hauling_state = attrs[:reboque][:UF]
52
- # Registro Nacional de Transportador de Carga
53
- @hauling_rntc = attrs[:reboque][:RNTC]
54
- end
39
+ # == Veiculo
40
+ if attrs[:veicTransp]
41
+ # Placa
42
+ @vehicle_plaque = attrs[:veicTransp][:placa]
43
+ # Estado
44
+ @vehicle_state = attrs[:veicTransp][:UF]
45
+ # Registro Nacional de Transportador de Carga
46
+ @vehicle_rntc = attrs[:veicTransp][:RNTC]
47
+ end
55
48
 
56
- # Vagao
57
- @wagon = attrs[:vagao]
58
- # Balsa
59
- @ferry = attrs[:balsa]
60
-
61
- # == Volume
62
- if attrs[:vol]
63
- # Quantidade de volumes
64
- @volume_amount = attrs[:vol][:qVol]
65
- # Espécie dos volumes
66
- @volume_kind = attrs[:vol][:esp]
67
- # Marca dos volumes
68
- @volume_brand = attrs[:vol][:marca]
69
- # Numeração dos volumes
70
- @volume_number = attrs[:vol][:nVol]
71
- # Peso Liquido
72
- @weight_net = attrs[:vol][:pesoL]
73
- # Peso Bruto
74
- @weight_gross = attrs[:vol][:pesoB]
75
- # Lacres
76
- @seals = set_seals(attrs[:vol][:lacres])
77
- end
49
+ # == Reboque
50
+ if attrs[:reboque]
51
+ # Placa
52
+ @hauling_palque = attrs[:reboque][:placa]
53
+ # Estado
54
+ @hauling_state = attrs[:reboque][:UF]
55
+ # Registro Nacional de Transportador de Carga
56
+ @hauling_rntc = attrs[:reboque][:RNTC]
57
+ end
78
58
 
79
- # Transportadora
80
- if attrs[:transporta]
81
- @carrier = Nfe::Carrier.new(attrs[:transporta])
59
+ # Vagao
60
+ @wagon = attrs[:vagao]
61
+ # Balsa
62
+ @ferry = attrs[:balsa]
63
+
64
+ # == Volume
65
+ if attrs[:vol]
66
+ # Quantidade de volumes
67
+ @volume_amount = attrs[:vol][:qVol]
68
+ # Espécie dos volumes
69
+ @volume_kind = attrs[:vol][:esp]
70
+ # Marca dos volumes
71
+ @volume_brand = attrs[:vol][:marca]
72
+ # Numeração dos volumes
73
+ @volume_number = attrs[:vol][:nVol]
74
+ # Peso Liquido
75
+ @weight_net = attrs[:vol][:pesoL]
76
+ # Peso Bruto
77
+ @weight_gross = attrs[:vol][:pesoB]
78
+ # Lacres
79
+ @seals = set_seals(attrs[:vol][:lacres])
80
+ end
81
+
82
+ # Transportadora
83
+ if attrs[:transporta]
84
+ @carrier = Carrier.new(attrs[:transporta])
85
+ end
82
86
  end
83
- end
84
87
 
85
- def set_seals(attrs = {})
86
- return unless attrs
88
+ def set_seals(attrs = {})
89
+ return unless attrs
87
90
 
88
- if attrs.is_a? Array
89
- seals = attrs.map { |l| l[:nLacre] }.join(', ')
90
- else
91
- seals = attrs[:nLacre]
92
- end
91
+ if attrs.is_a? Array
92
+ seals = attrs.map { |l| l[:nLacre] }.join(', ')
93
+ else
94
+ seals = attrs[:nLacre]
95
+ end
93
96
 
94
- seals
97
+ seals
98
+ end
95
99
  end
96
100
  end
97
101
  end
@@ -1,5 +1,5 @@
1
1
  module Nfe
2
2
  module Reader
3
- VERSION = "1.0.4"
3
+ VERSION = "1.0.5"
4
4
  end
5
5
  end
data/lib/nfe_reader.rb CHANGED
@@ -1,137 +1,10 @@
1
1
  # encoding: UTF-8
2
2
  require "nfe_reader/version"
3
3
  require "nokogiri"
4
- require "nokogiri_hash"
4
+ require "helpers/nokogiri_hash"
5
+ require "helpers/attribute_helper"
6
+ require "helpers/creator_helper"
5
7
 
6
8
  %w(nfe_reader/product nfe_reader/collection nfe_reader/taxation nfe_reader).each do |namespace|
7
9
  Dir[File.dirname(__FILE__) + "/../lib/#{namespace}/*.rb"].each { |file| require file }
8
- end
9
-
10
- module Nfe
11
- module Reader
12
- class Base
13
- attr_reader :version, :number, :signature, :client, :information,
14
- :header, :provider, :customer, :products, :collection, :transport,
15
- :purchase, :cane, :export, :delivery, :removal,:enviroment,
16
- :version_app, :key, :date, :protocol, :digest, :status, :description,
17
- :total, :authorizations, :error, :trace
18
-
19
- def initialize(file)
20
-
21
- xml = file.is_a?(Nokogiri::XML::Document) ? file : Nokogiri::XML(file)
22
- xml = xml.to_hash
23
-
24
- # Versao da NFe
25
- @version = xml[:nfeProc][:versao]
26
- # Assinatura
27
- @signature = xml[:nfeProc][:NFe][:Signature]
28
-
29
- # Protocolo
30
- if xml[:nfeProc][:protNFe]
31
- protocol = xml[:nfeProc][:protNFe][:infProt]
32
-
33
- @enviroment = protocol[:tpAmb]
34
- @version_app = protocol[:verAplic]
35
- @key = protocol[:chNFe]
36
- @date = protocol[:dhRecbto]
37
- @protocol = protocol[:nProt]
38
- @digest = protocol[:digVal]
39
- @status = protocol[:cStat]
40
- @description = protocol[:xMotivo]
41
- end
42
-
43
- xml = xml[:nfeProc][:NFe][:infNFe]
44
-
45
- # Numero da Nfe
46
- @number = xml[:Id]
47
-
48
- # Identificação da Nota Fiscal eletrônica
49
- @header = Nfe::Header.new(xml[:ide])
50
-
51
- # Identificação do Emitente da Nota Fiscal eletrônica
52
- @provider = Nfe::Provider.new(xml[:emit])
53
-
54
- # Identificação do Fisco Emitente da NF-e
55
- if xml[:avulsa]
56
- @fiscal = Nfe::Fiscal.new(xml[:avulsa])
57
- end
58
-
59
- # Identificação do Destinatário da Nota Fiscal eletrônica
60
- @customer = Nfe::Customer.new(xml[:dest])
61
-
62
- # Informacoes Adicional
63
- if xml[:infAdic]
64
- @information = Nfe::Information.new(xml[:infAdic])
65
- end
66
-
67
- # Detalhamento de Produtos e Serviços da NF-e
68
- @products = []
69
- if xml[:det].is_a? Array
70
- xml[:det].each do |product|
71
- @products << Nfe::Product.new(product)
72
- end
73
- else
74
- @products << Nfe::Product.new(xml[:det])
75
- end
76
-
77
- # Totalizadores
78
- @total = Nfe::Total.new(xml[:total])
79
-
80
- # Informacao de Pagamento
81
- if xml[:cobr]
82
- @collection = Nfe::Collection.new(xml[:cobr])
83
- end
84
-
85
- # Transporte
86
- if xml[:transp]
87
- @transport = Nfe::Transport.new(xml[:transp])
88
- end
89
-
90
- # Identificação do Local de Entrega
91
- if xml[:retirada]
92
- @removal = Nfe::Removal.new(xml[:retirada])
93
- end
94
-
95
- # Identificação do Local de Retirada
96
- if xml[:entrega]
97
- @delivery = Nfe::Delivery.new(xml[:entrega])
98
- end
99
-
100
- # Autorização para obter XML
101
- @authorizations = []
102
- if xml[:autXML].is_a? Array
103
- xml[:autXML].each do |product|
104
- @authorizations << Nfe::Authorization.new(product)
105
- end
106
- elsif xml[:autXML].is_a? Hash
107
- @authorizations << Nfe::Authorization.new(xml[:autXML])
108
- end
109
-
110
- # Informacoes de Comercio Exterior
111
- if xml[:exporta]
112
- @export = Nfe::Export.new(xml[:exporta])
113
- end
114
-
115
- # Informacoes de Compra
116
- if xml[:compra]
117
- @purchase = Nfe::Purchase.new(xml[:compra])
118
- end
119
-
120
- # Cana de Acucar
121
- if xml[:cana]
122
- @cane = Nfe::Cane.new(xml[:cana])
123
- end
124
-
125
- rescue => exception
126
- @error = exception
127
- @trace = exception.backtrace
128
- ensure
129
- file.close if file.respond_to? :close
130
- end
131
-
132
- def error?
133
- !error.nil?
134
- end
135
- end
136
- end
137
10
  end
@@ -0,0 +1,19 @@
1
+ require File.expand_path("../../test_helper", __FILE__)
2
+
3
+ describe AttributeHelper do
4
+ class AttributeTest
5
+ include AttributeHelper
6
+ attr_accessor :first_name, :last_name
7
+
8
+ def initialize( attrs= {})
9
+ @first_name = attrs[:first_name]
10
+ @last_name = attrs[:last_name]
11
+ end
12
+ end
13
+
14
+ let(:attribute_test) { AttributeTest.new(first_name: 'Foo', last_name: 'Bar') }
15
+
16
+ it '#attributes'do
17
+ assert_equal attribute_test.attributes, Hash['first_name' => 'Foo', 'last_name' => 'Bar']
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ require File.expand_path("../../test_helper", __FILE__)
2
+
3
+ describe CreatorHelper do
4
+ class CreatorTest < Struct.new(:name)
5
+ include CreatorHelper
6
+ end
7
+
8
+ class ResourceTest < Struct.new(:name)
9
+ end
10
+
11
+ let(:creator_test) { CreatorTest.new('Foo') }
12
+
13
+ describe '#to_array'do
14
+ it { assert_equal creator_test.to_array([{name: 'Foo'}, {name: 'Bar'}]), [['Foo'], ['Bar']] }
15
+ it { assert_equal creator_test.to_array({name: 'Foo'}), [['Foo']] }
16
+ end
17
+
18
+ it '#create_resource'do
19
+ creator_test.create_resource(ResourceTest, 'Foo').must_be_instance_of ResourceTest
20
+ end
21
+
22
+ describe '#create_resource'do
23
+ let(:resources) { creator_test.create_resources(ResourceTest, [['Name', 'Foo'], ['Name', 'Bar']]) }
24
+
25
+ it { resources.must_be_instance_of Array }
26
+ it { resources.first.must_be_instance_of ResourceTest }
27
+ end
28
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path("../test_helper", __FILE__)
1
+ require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  describe Nokogiri::XML::Node do
4
4
  def xml
@@ -1,6 +1,6 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
- describe Nfe::Authorization do
3
+ describe Nfe::Reader::Authorization do
4
4
  def nfe_hash
5
5
  {
6
6
  autXML: {
@@ -10,7 +10,7 @@ describe Nfe::Authorization do
10
10
  }
11
11
  end
12
12
 
13
- let(:authorization) { Nfe::Authorization.new(nfe_hash[:autXML]) }
13
+ let(:authorization) { Nfe::Reader::Authorization.new(nfe_hash[:autXML]) }
14
14
 
15
15
  it '#cnpj' do
16
16
  authorization.cnpj.must_equal '99819146000120'
@@ -1,6 +1,6 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
- describe Nfe::Cane do
3
+ describe Nfe::Reader::Cane do
4
4
  def nfe_hash
5
5
  {
6
6
  cana: {
@@ -27,7 +27,7 @@ describe Nfe::Cane do
27
27
  }
28
28
  end
29
29
 
30
- let(:cane) { Nfe::Cane.new(nfe_hash[:cana]) }
30
+ let(:cane) { Nfe::Reader::Cane.new(nfe_hash[:cana]) }
31
31
 
32
32
  it '#harvest' do
33
33
  cane.harvest.must_equal '2000'
@@ -1,6 +1,6 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
- describe Nfe::Carrier do
3
+ describe Nfe::Reader::Carrier do
4
4
  def nfe_hash
5
5
  {
6
6
  transp: {
@@ -14,7 +14,7 @@ describe Nfe::Carrier do
14
14
  }
15
15
  end
16
16
 
17
- let(:carrier) { Nfe::Carrier.new(nfe_hash[:transp]) }
17
+ let(:carrier) { Nfe::Reader::Carrier.new(nfe_hash[:transp]) }
18
18
 
19
19
  it '#cnpj' do
20
20
  carrier.cnpj.must_equal '99819146000120'
@@ -1,6 +1,6 @@
1
1
  require File.expand_path("../../../test_helper", __FILE__)
2
2
 
3
- describe Nfe::Duplicate do
3
+ describe Nfe::Reader::Duplicate do
4
4
  def nfe_hash
5
5
  {
6
6
  duplicate: {
@@ -11,7 +11,7 @@ describe Nfe::Duplicate do
11
11
  }
12
12
  end
13
13
 
14
- let(:duplicate) { Nfe::Duplicate.new(nfe_hash[:duplicate]) }
14
+ let(:duplicate) { Nfe::Reader::Duplicate.new(nfe_hash[:duplicate]) }
15
15
 
16
16
  it '#number' do
17
17
  duplicate.number.must_equal '1'
@@ -1,6 +1,6 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
- describe Nfe::Collection do
3
+ describe Nfe::Reader::Collection do
4
4
  def nfe_hash
5
5
  {
6
6
  collection: {
@@ -44,7 +44,7 @@ describe Nfe::Collection do
44
44
  }
45
45
  end
46
46
 
47
- let(:collection) { Nfe::Collection.new(nfe_hash[:collection]) }
47
+ let(:collection) { Nfe::Reader::Collection.new(nfe_hash[:collection]) }
48
48
 
49
49
  describe 'One duplicate' do
50
50
  it '#number' do
@@ -69,7 +69,7 @@ describe Nfe::Collection do
69
69
  end
70
70
 
71
71
  describe 'Two duplicate' do
72
- let(:collection) { Nfe::Collection.new(collection_hash[:collection]) }
72
+ let(:collection) { Nfe::Reader::Collection.new(collection_hash[:collection]) }
73
73
 
74
74
  it '#duplicates' do
75
75
  collection.duplicates.size.must_equal 2
@@ -1,6 +1,6 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
- describe Nfe::Customer do
3
+ describe Nfe::Reader::Customer do
4
4
  def customer_hash
5
5
  {
6
6
  dest: {
@@ -27,7 +27,7 @@ describe Nfe::Customer do
27
27
  end
28
28
 
29
29
  describe 'with address' do
30
- let(:customer) { Nfe::Customer.new(customer_hash[:dest]) }
30
+ let(:customer) { Nfe::Reader::Customer.new(customer_hash[:dest]) }
31
31
 
32
32
  it '#foreign_code' do
33
33
  customer.foreign_code.must_equal '10021312198423'
@@ -94,7 +94,7 @@ describe Nfe::Customer do
94
94
  end
95
95
 
96
96
  describe 'without address' do
97
- let(:customer) { Nfe::Customer.new }
97
+ let(:customer) { Nfe::Reader::Customer.new }
98
98
  it '#phone' do
99
99
  customer.number.must_be_nil
100
100
  end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
- describe Nfe::Delivery do
3
+ describe Nfe::Reader::Delivery do
4
4
  def nfe_hash
5
5
  {
6
6
  entrega: {
@@ -17,7 +17,7 @@ describe Nfe::Delivery do
17
17
  }
18
18
  end
19
19
 
20
- let(:delivery) { Nfe::Delivery.new(nfe_hash[:entrega]) }
20
+ let(:delivery) { Nfe::Reader::Delivery.new(nfe_hash[:entrega]) }
21
21
 
22
22
  it '#cnpj' do
23
23
  delivery.cnpj.must_equal '99819146000120'