br_danfe 0.12.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +15 -25
  3. data/Gemfile.lock +1 -1
  4. data/README.md +5 -5
  5. data/lib/br_danfe.rb +0 -1
  6. data/lib/br_danfe/danfe.rb +6 -90
  7. data/lib/br_danfe/danfe_lib/base.rb +33 -0
  8. data/lib/br_danfe/danfe_lib/nfce.rb +49 -0
  9. data/lib/br_danfe/danfe_lib/nfce_lib/document.rb +37 -0
  10. data/lib/br_danfe/danfe_lib/nfce_lib/footer.rb +22 -0
  11. data/lib/br_danfe/danfe_lib/nfce_lib/header.rb +69 -0
  12. data/lib/br_danfe/danfe_lib/nfce_lib/helper.rb +11 -0
  13. data/lib/br_danfe/danfe_lib/nfce_lib/key.rb +20 -0
  14. data/lib/br_danfe/danfe_lib/nfce_lib/nfce_identification.rb +22 -0
  15. data/lib/br_danfe/danfe_lib/nfce_lib/product_list.rb +102 -0
  16. data/lib/br_danfe/danfe_lib/nfce_lib/qr_code.rb +25 -0
  17. data/lib/br_danfe/danfe_lib/nfce_lib/recipient.rb +75 -0
  18. data/lib/br_danfe/danfe_lib/nfce_lib/total_list.rb +81 -0
  19. data/lib/br_danfe/danfe_lib/nfe.rb +83 -0
  20. data/lib/br_danfe/danfe_lib/nfe_lib/cep.rb +11 -0
  21. data/lib/br_danfe/danfe_lib/nfe_lib/consts.rb +8 -0
  22. data/lib/br_danfe/danfe_lib/nfe_lib/cst.rb +34 -0
  23. data/lib/br_danfe/danfe_lib/nfe_lib/dest.rb +96 -0
  24. data/lib/br_danfe/danfe_lib/nfe_lib/det_body.rb +137 -0
  25. data/lib/br_danfe/danfe_lib/nfe_lib/document.rb +142 -0
  26. data/lib/br_danfe/danfe_lib/nfe_lib/dup.rb +55 -0
  27. data/lib/br_danfe/danfe_lib/nfe_lib/emit_header.rb +117 -0
  28. data/lib/br_danfe/danfe_lib/nfe_lib/helper.rb +55 -0
  29. data/lib/br_danfe/danfe_lib/nfe_lib/icmstot.rb +35 -0
  30. data/lib/br_danfe/danfe_lib/nfe_lib/infadic.rb +109 -0
  31. data/lib/br_danfe/danfe_lib/nfe_lib/infadic_vol.rb +103 -0
  32. data/lib/br_danfe/danfe_lib/nfe_lib/issqn.rb +37 -0
  33. data/lib/br_danfe/danfe_lib/nfe_lib/phone.rb +15 -0
  34. data/lib/br_danfe/danfe_lib/nfe_lib/plate.rb +11 -0
  35. data/lib/br_danfe/danfe_lib/nfe_lib/ticket.rb +21 -0
  36. data/lib/br_danfe/danfe_lib/nfe_lib/transp.rb +58 -0
  37. data/lib/br_danfe/danfe_lib/nfe_lib/vol.rb +44 -0
  38. data/lib/br_danfe/danfe_lib/nfe_lib/xprod.rb +109 -0
  39. data/lib/br_danfe/helper.rb +8 -0
  40. data/lib/br_danfe/version.rb +1 -1
  41. data/spec/{lib → br_danfe}/cce_lib/barcode_spec.rb +0 -0
  42. data/spec/{lib → br_danfe}/cce_lib/correction_spec.rb +0 -0
  43. data/spec/{lib → br_danfe}/cce_lib/document_spec.rb +0 -0
  44. data/spec/{lib → br_danfe}/cce_lib/footer_spec.rb +0 -0
  45. data/spec/{lib → br_danfe}/cce_lib/header_spec.rb +0 -0
  46. data/spec/{lib → br_danfe}/cce_lib/nfe_key_spec.rb +0 -0
  47. data/spec/{lib → br_danfe}/cce_lib/protocol_spec.rb +0 -0
  48. data/spec/{features → br_danfe}/cce_spec.rb +0 -0
  49. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/document_spec.rb +2 -2
  50. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/footer_spec.rb +2 -2
  51. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/header_spec.rb +2 -2
  52. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/helper_spec.rb +1 -1
  53. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/key_spec.rb +2 -2
  54. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/nfce_identification_spec.rb +2 -2
  55. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/product_list_spec.rb +2 -2
  56. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/qr_code_spec.rb +2 -2
  57. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/recipient_spec.rb +7 -7
  58. data/spec/{lib/danfe_nfce_lib → br_danfe/danfe_lib/nfce_lib}/total_list_spec.rb +4 -4
  59. data/spec/br_danfe/danfe_lib/nfce_spec.rb +57 -0
  60. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/cep_spec.rb +2 -2
  61. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/cst_spec.rb +3 -3
  62. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/dest_spec.rb +2 -2
  63. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/det_body_spec.rb +2 -2
  64. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/document_spec.rb +1 -1
  65. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/dup_spec.rb +2 -2
  66. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/emit_header_spec.rb +3 -3
  67. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/helper_spec.rb +13 -87
  68. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/icmstot_spec.rb +2 -2
  69. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/infadic_spec.rb +2 -2
  70. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/infadic_vol_spec.rb +2 -2
  71. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/issqn_spec.rb +2 -2
  72. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/phone_spec.rb +3 -3
  73. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/plate_spec.rb +3 -3
  74. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/ticket_spec.rb +2 -2
  75. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/transp_spec.rb +2 -2
  76. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/vol_spec.rb +2 -2
  77. data/spec/{lib/danfe_lib → br_danfe/danfe_lib/nfe_lib}/xprod_spec.rb +9 -9
  78. data/spec/{features/danfe_spec.rb → br_danfe/danfe_lib/nfe_spec.rb} +55 -47
  79. data/spec/br_danfe/danfe_spec.rb +35 -0
  80. data/spec/{lib → br_danfe}/helper_spec.rb +114 -0
  81. data/spec/{lib → br_danfe}/logo_config_spec.rb +1 -1
  82. data/spec/{lib → br_danfe}/logo_options_spec.rb +7 -7
  83. data/spec/{lib → br_danfe}/uf_spec.rb +0 -0
  84. data/spec/{lib → br_danfe}/xml_spec.rb +0 -0
  85. data/spec/fixtures/nfce/v4.00/nfce-unauthorized-hom.fixture.pdf +0 -0
  86. data/spec/fixtures/nfce/v4.00/nfce-unauthorized-hom.xml +358 -0
  87. data/spec/fixtures/nfce/v4.00/nfce-unauthorized-prod.fixture.pdf +0 -0
  88. data/spec/fixtures/nfce/v4.00/nfce-unauthorized-prod.xml +358 -0
  89. data/spec/fixtures/nfce/v4.00/nfce.xml +2 -2
  90. data/spec/fixtures/nfce/v4.00/rendered_nfce.fixture.pdf +0 -0
  91. data/spec/fixtures/nfce/v4.00/saved_nfce.fixture.pdf +0 -0
  92. metadata +82 -75
  93. data/lib/br_danfe/danfe_lib/cep.rb +0 -9
  94. data/lib/br_danfe/danfe_lib/consts.rb +0 -6
  95. data/lib/br_danfe/danfe_lib/cst.rb +0 -32
  96. data/lib/br_danfe/danfe_lib/dest.rb +0 -94
  97. data/lib/br_danfe/danfe_lib/det_body.rb +0 -135
  98. data/lib/br_danfe/danfe_lib/document.rb +0 -140
  99. data/lib/br_danfe/danfe_lib/dup.rb +0 -53
  100. data/lib/br_danfe/danfe_lib/emit_header.rb +0 -115
  101. data/lib/br_danfe/danfe_lib/helper.rb +0 -61
  102. data/lib/br_danfe/danfe_lib/icmstot.rb +0 -33
  103. data/lib/br_danfe/danfe_lib/infadic.rb +0 -107
  104. data/lib/br_danfe/danfe_lib/infadic_vol.rb +0 -101
  105. data/lib/br_danfe/danfe_lib/issqn.rb +0 -35
  106. data/lib/br_danfe/danfe_lib/phone.rb +0 -13
  107. data/lib/br_danfe/danfe_lib/plate.rb +0 -9
  108. data/lib/br_danfe/danfe_lib/ticket.rb +0 -19
  109. data/lib/br_danfe/danfe_lib/transp.rb +0 -56
  110. data/lib/br_danfe/danfe_lib/vol.rb +0 -42
  111. data/lib/br_danfe/danfe_lib/xprod.rb +0 -107
  112. data/lib/br_danfe/danfe_nfce.rb +0 -43
  113. data/lib/br_danfe/danfe_nfce_lib/document.rb +0 -35
  114. data/lib/br_danfe/danfe_nfce_lib/footer.rb +0 -20
  115. data/lib/br_danfe/danfe_nfce_lib/header.rb +0 -67
  116. data/lib/br_danfe/danfe_nfce_lib/helper.rb +0 -9
  117. data/lib/br_danfe/danfe_nfce_lib/key.rb +0 -18
  118. data/lib/br_danfe/danfe_nfce_lib/nfce_identification.rb +0 -20
  119. data/lib/br_danfe/danfe_nfce_lib/product_list.rb +0 -100
  120. data/lib/br_danfe/danfe_nfce_lib/qr_code.rb +0 -23
  121. data/lib/br_danfe/danfe_nfce_lib/recipient.rb +0 -72
  122. data/lib/br_danfe/danfe_nfce_lib/total_list.rb +0 -78
  123. data/spec/features/danfe_nfce_spec.rb +0 -31
@@ -1,16 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BrDanfe::DanfeLib::Plate do
3
+ describe BrDanfe::DanfeLib::NfeLib::Plate do
4
4
  describe '.format_plate' do
5
5
  it 'returns a formated plate' do
6
6
  plate = 'ABC1234'
7
- expect(BrDanfe::DanfeLib::Plate.format(plate)).to eq 'ABC-1234'
7
+ expect(BrDanfe::DanfeLib::NfeLib::Plate.format(plate)).to eq 'ABC-1234'
8
8
  end
9
9
 
10
10
  context 'when receive a mercosul plate' do
11
11
  it 'returns a formated plate' do
12
12
  plate = 'ABC1D23'
13
- expect(BrDanfe::DanfeLib::Plate.format(plate)).to eq 'ABC-1D23'
13
+ expect(BrDanfe::DanfeLib::NfeLib::Plate.format(plate)).to eq 'ABC-1D23'
14
14
  end
15
15
  end
16
16
  end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BrDanfe::DanfeLib::Ticket do
3
+ describe BrDanfe::DanfeLib::NfeLib::Ticket do
4
4
  let(:base_dir) { './spec/fixtures/nfe/lib/' }
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
- let(:pdf) { BrDanfe::DanfeLib::Document.new }
7
+ let(:pdf) { BrDanfe::DanfeLib::NfeLib::Document.new }
8
8
  let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BrDanfe::DanfeLib::Transp do
3
+ describe BrDanfe::DanfeLib::NfeLib::Transp do
4
4
  let(:base_dir) { './spec/fixtures/nfe/lib/' }
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
- let(:pdf) { BrDanfe::DanfeLib::Document.new }
7
+ let(:pdf) { BrDanfe::DanfeLib::NfeLib::Document.new }
8
8
  let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BrDanfe::DanfeLib::Vol do
3
+ describe BrDanfe::DanfeLib::NfeLib::Vol do
4
4
  let(:base_dir) { './spec/fixtures/nfe/lib/' }
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
- let(:pdf) { BrDanfe::DanfeLib::Document.new }
7
+ let(:pdf) { BrDanfe::DanfeLib::NfeLib::Document.new }
8
8
  let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BrDanfe::DanfeLib::Xprod do
3
+ describe BrDanfe::DanfeLib::NfeLib::Xprod do
4
4
  describe '#render' do
5
5
  context 'when has FCI' do
6
6
  let(:xml_fci) do
@@ -16,7 +16,7 @@ describe BrDanfe::DanfeLib::Xprod do
16
16
  Nokogiri::XML(xml)
17
17
  end
18
18
 
19
- subject { BrDanfe::DanfeLib::Xprod.new(xml_fci) }
19
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml_fci) }
20
20
 
21
21
  it 'returns product + FCI' do
22
22
  expected = 'MONITOR DE ARCO ELETRICO'
@@ -66,7 +66,7 @@ describe BrDanfe::DanfeLib::Xprod do
66
66
  Nokogiri::XML(xml)
67
67
  end
68
68
 
69
- subject { BrDanfe::DanfeLib::Xprod.new(xml) }
69
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml) }
70
70
 
71
71
  context 'when has vBCSTRet' do
72
72
  let(:vBCSTRet) { 50.00 }
@@ -137,7 +137,7 @@ describe BrDanfe::DanfeLib::Xprod do
137
137
  Nokogiri::XML(xml)
138
138
  end
139
139
 
140
- subject { BrDanfe::DanfeLib::Xprod.new(xml_st) }
140
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml_st) }
141
141
 
142
142
  it 'returns product + ST' do
143
143
  expected = 'MONITOR DE ARCO ELETRICO'
@@ -163,7 +163,7 @@ describe BrDanfe::DanfeLib::Xprod do
163
163
  Nokogiri::XML(xml)
164
164
  end
165
165
 
166
- subject { BrDanfe::DanfeLib::Xprod.new(xml_infAdProd) }
166
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml_infAdProd) }
167
167
 
168
168
  it 'returns product + infAdProd' do
169
169
  expected = 'MONITOR DE ARCO ELETRICO'
@@ -196,7 +196,7 @@ describe BrDanfe::DanfeLib::Xprod do
196
196
  Nokogiri::XML(xml)
197
197
  end
198
198
 
199
- subject { BrDanfe::DanfeLib::Xprod.new(xml_fcp) }
199
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml_fcp) }
200
200
 
201
201
  it 'returns product + FCP' do
202
202
  expected = 'MONITOR DE ARCO ELETRICO'
@@ -237,7 +237,7 @@ describe BrDanfe::DanfeLib::Xprod do
237
237
  Nokogiri::XML(xml)
238
238
  end
239
239
 
240
- subject { BrDanfe::DanfeLib::Xprod.new(xml_IFC_ST_infAdProd) }
240
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml_IFC_ST_infAdProd) }
241
241
 
242
242
  it 'returns product + FCI + ST + infAdProd' do
243
243
  expected = 'MONITOR DE ARCO ELETRICO'
@@ -277,7 +277,7 @@ describe BrDanfe::DanfeLib::Xprod do
277
277
  Nokogiri::XML(xml)
278
278
  end
279
279
 
280
- subject { BrDanfe::DanfeLib::Xprod.new(xml_fcp) }
280
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml_fcp) }
281
281
 
282
282
  it 'returns product + FCP' do
283
283
  expected = 'MONITOR DE ARCO ELETRICO'
@@ -311,7 +311,7 @@ describe BrDanfe::DanfeLib::Xprod do
311
311
  Nokogiri::XML(xml)
312
312
  end
313
313
 
314
- subject { BrDanfe::DanfeLib::Xprod.new(xml_fcp) }
314
+ subject { BrDanfe::DanfeLib::NfeLib::Xprod.new(xml_fcp) }
315
315
 
316
316
  it 'returns product + FCP' do
317
317
  expected = 'MONITOR DE ARCO ELETRICO'
@@ -1,34 +1,35 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BrDanfe::Danfe do
3
+ describe BrDanfe::DanfeLib::Nfe do
4
4
  let(:output_pdf) { "#{base_dir}output.pdf" }
5
+ let(:xml_file) {}
6
+ let(:xml) { BrDanfe::XML.new(xml_file) }
7
+
8
+ subject { described_class.new xml }
5
9
 
6
10
  describe '#render_pdf' do
7
11
  let(:base_dir) { './spec/fixtures/nfe/v3.10/' }
12
+ let(:xml_file) { File.read("#{base_dir}nfe_simples_nacional.xml") }
8
13
 
9
14
  it 'renders a Simples Nacional NF-e using CSOSN' do
10
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_simples_nacional.xml"))
11
-
12
15
  expected = IO.binread("#{base_dir}nfe_simples_nacional.xml.fixture.pdf")
13
-
14
- expect(danfe.render_pdf).to eq expected
16
+ expect(subject.render_pdf).to eq expected
15
17
  end
16
18
  end
17
19
 
18
20
  describe '#save_pdf' do
19
21
  context 'when danfe has custom options' do
20
22
  let(:base_dir) { './spec/fixtures/nfe/v2.00/' }
23
+ let(:xml_file) { File.read("#{base_dir}custom_options.fixture.xml") }
21
24
 
22
25
  before { File.delete(output_pdf) if File.exist?(output_pdf) }
23
26
 
24
27
  it 'render a NF-e with customized options' do
25
28
  expect(File.exist?(output_pdf)).to be_falsey
26
29
 
27
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}custom_options.fixture.xml"))
28
- danfe.options.logo = 'spec/fixtures/logo.png'
29
- danfe.options.logo_dimensions = { width: 100, height: 100 }
30
-
31
- danfe.save_pdf output_pdf
30
+ subject.options.logo = 'spec/fixtures/logo.png'
31
+ subject.options.logo_dimensions = { width: 100, height: 100 }
32
+ subject.save_pdf output_pdf
32
33
 
33
34
  expect("#{base_dir}custom_options.fixture.pdf").to have_same_content_of file: output_pdf
34
35
  end
@@ -36,109 +37,116 @@ describe BrDanfe::Danfe do
36
37
 
37
38
  context "when xml's version is v2.00" do
38
39
  let(:base_dir) { './spec/fixtures/nfe/v2.00/' }
40
+ let(:xml_file) { File.read("#{base_dir}nfe_with_ns.xml") }
39
41
 
40
42
  before { File.delete(output_pdf) if File.exist?(output_pdf) }
41
43
 
42
44
  it 'renders a basic NF-e with namespace' do
43
45
  expect(File.exist?(output_pdf)).to be_falsey
44
-
45
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_with_ns.xml"))
46
- danfe.save_pdf output_pdf
46
+ subject.save_pdf output_pdf
47
47
 
48
48
  expect("#{base_dir}nfe_with_ns.xml.fixture.pdf").to have_same_content_of file: output_pdf
49
49
  end
50
50
 
51
- it 'renders another basic NF-e without namespace' do
52
- expect(File.exist?(output_pdf)).to be_falsey
51
+ context 'when NF-e does not have namespace' do
52
+ let(:xml_file) { File.read("#{base_dir}nfe_without_ns.xml") }
53
53
 
54
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_without_ns.xml"))
55
- danfe.save_pdf output_pdf
54
+ it 'renders another basic NF-e without namespace' do
55
+ expect(File.exist?(output_pdf)).to be_falsey
56
+ subject.save_pdf output_pdf
56
57
 
57
- expect("#{base_dir}nfe_without_ns.xml.fixture.pdf").to have_same_content_of file: output_pdf
58
+ expect("#{base_dir}nfe_without_ns.xml.fixture.pdf").to have_same_content_of file: output_pdf
59
+ end
58
60
  end
59
61
 
60
- it 'renders a NF-e having FCI in its items' do
61
- expect(File.exist?(output_pdf)).to be_falsey
62
+ context 'when NF-e items has FCI' do
63
+ let(:xml_file) { File.read("#{base_dir}nfe_with_fci.xml") }
62
64
 
63
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_with_fci.xml"))
64
- danfe.save_pdf output_pdf
65
+ it 'renders a NF-e having FCI in its items' do
66
+ expect(File.exist?(output_pdf)).to be_falsey
67
+ subject.save_pdf output_pdf
65
68
 
66
- expect("#{base_dir}nfe_with_fci.xml.fixture.pdf").to have_same_content_of file: output_pdf
69
+ expect("#{base_dir}nfe_with_fci.xml.fixture.pdf").to have_same_content_of file: output_pdf
70
+ end
67
71
  end
68
72
 
69
- it 'renders a Simples Nacional NF-e using CSOSN' do
70
- expect(File.exist?(output_pdf)).to be_falsey
73
+ context 'when NF-e is Simples Nacional with CSOSN' do
74
+ let(:xml_file) { File.read("#{base_dir}nfe_simples_nacional.xml") }
71
75
 
72
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_simples_nacional.xml"))
73
- danfe.save_pdf output_pdf
76
+ it 'renders a Simples Nacional NF-e using CSOSN' do
77
+ expect(File.exist?(output_pdf)).to be_falsey
78
+ subject.save_pdf output_pdf
74
79
 
75
- expect("#{base_dir}nfe_simples_nacional.xml.fixture.pdf").to have_same_content_of file: output_pdf
80
+ expect("#{base_dir}nfe_simples_nacional.xml.fixture.pdf").to have_same_content_of file: output_pdf
81
+ end
76
82
  end
77
83
 
78
- it 'renders a NF-e with extra volumes' do
79
- expect(File.exist?(output_pdf)).to be_falsey
84
+ context 'when NF-e has extra volumes' do
85
+ let(:xml_file) { File.read("#{base_dir}nfe_with_extra_volumes.xml") }
80
86
 
81
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_with_extra_volumes.xml"))
82
- danfe.save_pdf output_pdf
87
+ it 'renders a NF-e with extra volumes' do
88
+ expect(File.exist?(output_pdf)).to be_falsey
89
+ subject.save_pdf output_pdf
83
90
 
84
- expect("#{base_dir}nfe_with_extra_volumes.xml.fixture.pdf").to have_same_content_of file: output_pdf
91
+ expect("#{base_dir}nfe_with_extra_volumes.xml.fixture.pdf").to have_same_content_of file: output_pdf
92
+ end
85
93
  end
86
94
  end
87
95
 
88
96
  context "when xml's version is v3.10" do
89
97
  let(:base_dir) { './spec/fixtures/nfe/v3.10/' }
98
+ let(:xml_file) { File.read("#{base_dir}nfe_simples_nacional.xml") }
90
99
 
91
100
  before { File.delete(output_pdf) if File.exist?(output_pdf) }
92
101
 
93
102
  it 'renders a Simples Nacional NF-e using CSOSN' do
94
103
  expect(File.exist?(output_pdf)).to be_falsey
95
-
96
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_simples_nacional.xml"))
97
- danfe.save_pdf output_pdf
104
+ subject.save_pdf output_pdf
98
105
 
99
106
  expect("#{base_dir}nfe_simples_nacional.xml.fixture.pdf").to have_same_content_of file: output_pdf
100
107
  end
101
108
 
102
109
  context 'when there are more than one page' do
110
+ let(:xml_file) { File.read("#{base_dir}with_three_pages.xml") }
111
+
103
112
  it 'renders xml to the pdf' do
104
113
  expect(File.exist?(output_pdf)).to be_falsey
105
-
106
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}with_three_pages.xml"))
107
- danfe.save_pdf output_pdf
114
+ subject.save_pdf output_pdf
108
115
 
109
116
  expect("#{base_dir}with_three_pages.fixture.pdf").to have_same_content_of file: output_pdf
110
117
  end
111
118
  end
112
119
 
113
120
  context 'when there is ISSQN' do
121
+ let(:xml_file) { File.read("#{base_dir}with_issqn.xml") }
122
+
114
123
  it 'renders xml to the pdf' do
115
124
  expect(File.exist?(output_pdf)).to be_falsey
116
-
117
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}with_issqn.xml"))
118
- danfe.save_pdf output_pdf
125
+ subject.save_pdf output_pdf
119
126
 
120
127
  expect("#{base_dir}with_issqn.fixture.pdf").to have_same_content_of file: output_pdf
121
128
  end
122
129
  end
123
130
 
124
131
  context "when there isn't ISSQN" do
132
+ let(:xml_file) { File.read("#{base_dir}without_issqn.xml") }
133
+
125
134
  it 'renders xml to the pdf' do
126
135
  expect(File.exist?(output_pdf)).to be_falsey
127
-
128
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}without_issqn.xml"))
129
- danfe.save_pdf output_pdf
136
+ subject.save_pdf output_pdf
130
137
 
131
138
  expect("#{base_dir}without_issqn.fixture.pdf").to have_same_content_of file: output_pdf
132
139
  end
133
140
  end
134
141
 
135
142
  context 'when there is footer information' do
143
+ let(:xml_file) { File.read("#{base_dir}with_footer.xml") }
144
+
136
145
  it 'renders xml to the pdf' do
137
146
  expect(File.exist?(output_pdf)).to be_falsey
138
147
 
139
148
  footer = 'Gerado através do Teste'
140
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}with_footer.xml"))
141
- danfe.save_pdf output_pdf, footer
149
+ subject.save_pdf output_pdf, footer
142
150
 
143
151
  expect("#{base_dir}with_footer.fixture.pdf").to have_same_content_of file: output_pdf
144
152
  end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::Danfe do
4
+ let(:xml) do
5
+ <<-eos
6
+ <nfeProc>
7
+ <NFe>
8
+ <infNFe>
9
+ <ide>
10
+ <mod>#{mod}</mod>
11
+ </ide>
12
+ </infNFe>
13
+ </NFe>
14
+ </nfeProc>
15
+ eos
16
+ end
17
+
18
+ subject { described_class.new(xml) }
19
+
20
+ context 'when the xml document type is NF-e' do
21
+ let(:mod) { 55 }
22
+
23
+ it 'returns a NF-e danfe class' do
24
+ expect(subject.class).to eq BrDanfe::DanfeLib::Nfe
25
+ end
26
+ end
27
+
28
+ context 'when the xml document type is NFC-e' do
29
+ let(:mod) { 65 }
30
+
31
+ it 'returns a NFC-e danfe class' do
32
+ expect(subject.class).to eq BrDanfe::DanfeLib::Nfce
33
+ end
34
+ end
35
+ end
@@ -1,6 +1,120 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe BrDanfe::Helper do
4
+ describe '.no_fiscal_value?' do
5
+ let(:xml_homologation) do
6
+ xml = <<-eos
7
+ <nfeProc>
8
+ <NFe>
9
+ <infNFe>
10
+ <ide>
11
+ <tpAmb>2</tpAmb>
12
+ </ide>
13
+ </infNFe>
14
+ <protNFe>
15
+ <infProt>
16
+ <dhRecbto>2011-10-29T14:37:09</dhRecbto>
17
+ </infProt>
18
+ </protNFe>
19
+ </NFe>
20
+ </nfeProc>
21
+ eos
22
+
23
+ Nokogiri::XML(xml)
24
+ end
25
+
26
+ let(:xml_unauthorized) do
27
+ xml = <<-eos
28
+ <nfeProc>
29
+ <protNFe>
30
+ <infProt></infProt>
31
+ </protNFe>
32
+ </nfeProc>
33
+ eos
34
+
35
+ Nokogiri::XML(xml)
36
+ end
37
+
38
+ let(:xml_authorized) do
39
+ xml = <<-eos
40
+ <nfeProc>
41
+ <NFe>
42
+ <infNFe>
43
+ <ide>
44
+ <tpAmb>1</tpAmb>
45
+ </ide>
46
+ </infNFe>
47
+ </NFe>
48
+ <protNFe>
49
+ <infProt>
50
+ <dhRecbto>2011-10-29T14:37:09</dhRecbto>
51
+ </infProt>
52
+ </protNFe>
53
+ </nfeProc>
54
+ eos
55
+
56
+ Nokogiri::XML(xml)
57
+ end
58
+
59
+ context 'when XML is unauthorized' do
60
+ it 'returns true' do
61
+ expect(described_class.no_fiscal_value?(xml_unauthorized)).to eq true
62
+ end
63
+ end
64
+
65
+ context 'when XML is in homologation environment' do
66
+ it 'returns true' do
67
+ expect(described_class.no_fiscal_value?(xml_homologation)).to eq true
68
+ end
69
+ end
70
+
71
+ context 'when XML is authorized' do
72
+ it 'returns false' do
73
+ expect(described_class.no_fiscal_value?(xml_authorized)).to eq false
74
+ end
75
+ end
76
+ end
77
+
78
+ describe '.unauthorized?' do
79
+ context 'when XML is unauthorized' do
80
+ let(:xml_unauthorized) do
81
+ xml = <<-eos
82
+ <nfeProc>
83
+ <protNFe>
84
+ <infProt></infProt>
85
+ </protNFe>
86
+ </nfeProc>
87
+ eos
88
+
89
+ Nokogiri::XML(xml)
90
+ end
91
+
92
+ it 'returns true' do
93
+ expect(described_class.unauthorized?(xml_unauthorized)).to eq true
94
+ end
95
+ end
96
+
97
+ context 'when XML is authorized' do
98
+ let(:xml_authorized) do
99
+ xml = <<-eos
100
+ <nfeProc>
101
+ <protNFe>
102
+ <infProt>
103
+ <dhRecbto>2011-10-29T14:37:09</dhRecbto>
104
+ </infProt>
105
+ </protNFe>
106
+ </nfeProc>
107
+ eos
108
+
109
+ Nokogiri::XML(xml)
110
+ end
111
+
112
+ it 'returns false' do
113
+ expect(described_class.unauthorized?(xml_authorized)).to eq false
114
+ end
115
+ end
116
+ end
117
+
4
118
  describe '.homologation?' do
5
119
  context 'when tpAmb is equal to "2"' do
6
120
  let(:xml_homologation) do