br_danfe 0.11.2 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/Gemfile.lock +31 -31
  4. data/br_danfe.gemspec +6 -5
  5. data/config/locales/pt-BR.yml +8 -0
  6. data/lib/br_danfe/danfe.rb +2 -2
  7. data/lib/br_danfe/danfe_lib/det_body.rb +1 -1
  8. data/lib/br_danfe/danfe_lib/document.rb +1 -1
  9. data/lib/br_danfe/danfe_lib/emit_header.rb +2 -2
  10. data/lib/br_danfe/danfe_lib/helper.rb +1 -27
  11. data/lib/br_danfe/danfe_lib/infadic.rb +1 -1
  12. data/lib/br_danfe/danfe_lib/xprod.rb +15 -15
  13. data/lib/br_danfe/danfe_nfce.rb +43 -0
  14. data/lib/br_danfe/danfe_nfce_lib/document.rb +35 -0
  15. data/lib/br_danfe/danfe_nfce_lib/footer.rb +15 -0
  16. data/lib/br_danfe/danfe_nfce_lib/header.rb +67 -0
  17. data/lib/br_danfe/danfe_nfce_lib/helper.rb +9 -0
  18. data/lib/br_danfe/danfe_nfce_lib/key.rb +18 -0
  19. data/lib/br_danfe/danfe_nfce_lib/nfce_identification.rb +20 -0
  20. data/lib/br_danfe/danfe_nfce_lib/product_list.rb +100 -0
  21. data/lib/br_danfe/danfe_nfce_lib/qr_code.rb +23 -0
  22. data/lib/br_danfe/danfe_nfce_lib/recipient.rb +72 -0
  23. data/lib/br_danfe/danfe_nfce_lib/total_list.rb +78 -0
  24. data/lib/br_danfe/helper.rb +29 -0
  25. data/lib/br_danfe/{danfe_lib/options.rb → logo_config.rb} +2 -2
  26. data/lib/br_danfe/{danfe_lib/logo_options.rb → logo_options.rb} +2 -2
  27. data/lib/br_danfe/version.rb +1 -1
  28. data/lib/br_danfe/xml.rb +36 -0
  29. data/spec/features/danfe_nfce_spec.rb +31 -0
  30. data/spec/fixtures/nfce/lib/document#render.pdf +99 -0
  31. data/spec/fixtures/nfce/lib/footer#render.pdf +74 -0
  32. data/spec/fixtures/nfce/lib/header#render-homologation.pdf +0 -0
  33. data/spec/fixtures/nfce/lib/header#render-long_name_with_logo.pdf +0 -0
  34. data/spec/fixtures/nfce/lib/header#render-long_name_without_logo.pdf +118 -0
  35. data/spec/fixtures/nfce/lib/header#render-short_name_with_logo.pdf +0 -0
  36. data/spec/fixtures/nfce/lib/header#render-short_name_without_logo.pdf +118 -0
  37. data/spec/fixtures/nfce/lib/key#render.pdf +104 -0
  38. data/spec/fixtures/nfce/lib/nfce_identification#render.pdf +118 -0
  39. data/spec/fixtures/nfce/lib/product_list#render-with_many_products.pdf +307 -0
  40. data/spec/fixtures/nfce/lib/product_list#render-with_many_products_and_long_names.pdf +335 -0
  41. data/spec/fixtures/nfce/lib/product_list#render-with_single_product.pdf +181 -0
  42. data/spec/fixtures/nfce/lib/product_list#render-with_single_product_and_long_name.pdf +195 -0
  43. data/spec/fixtures/nfce/lib/product_list_with_many_products.xml +367 -0
  44. data/spec/fixtures/nfce/lib/product_list_with_many_products_and_long_names.xml +367 -0
  45. data/spec/fixtures/nfce/lib/product_list_with_single_product.xml +238 -0
  46. data/spec/fixtures/nfce/lib/product_list_with_single_product_and_long_name.xml +238 -0
  47. data/spec/fixtures/nfce/lib/qr_code#render.pdf +0 -0
  48. data/spec/fixtures/nfce/lib/recipient#render-company.pdf +95 -0
  49. data/spec/fixtures/nfce/lib/recipient#render-consumer_without_document.pdf +88 -0
  50. data/spec/fixtures/nfce/lib/recipient#render-foreign.pdf +95 -0
  51. data/spec/fixtures/nfce/lib/recipient#render-individual.pdf +95 -0
  52. data/spec/fixtures/nfce/lib/recipient#render-unidentified_consumer.pdf +81 -0
  53. data/spec/fixtures/nfce/lib/total_list#does_not_render-payment_methods.pdf +139 -0
  54. data/spec/fixtures/nfce/lib/total_list#render-grouped_payment_methods.pdf +188 -0
  55. data/spec/fixtures/nfce/lib/total_list#render-totals.pdf +139 -0
  56. data/spec/fixtures/nfce/lib/total_list#render-without_payment.pdf +202 -0
  57. data/spec/fixtures/nfce/lib/total_list#render.pdf +202 -0
  58. data/spec/fixtures/nfce/v4.00/nfce.xml +367 -0
  59. data/spec/fixtures/nfce/v4.00/rendered_nfce.fixture.pdf +0 -0
  60. data/spec/fixtures/nfce/v4.00/saved_nfce.fixture.pdf +0 -0
  61. data/spec/lib/danfe_lib/dest_spec.rb +1 -1
  62. data/spec/lib/danfe_lib/det_body_spec.rb +1 -1
  63. data/spec/lib/danfe_lib/document_spec.rb +1 -1
  64. data/spec/lib/danfe_lib/dup_spec.rb +1 -1
  65. data/spec/lib/danfe_lib/emit_header_spec.rb +1 -1
  66. data/spec/lib/danfe_lib/helper_spec.rb +0 -54
  67. data/spec/lib/danfe_lib/icmstot_spec.rb +1 -1
  68. data/spec/lib/danfe_lib/infadic_spec.rb +1 -1
  69. data/spec/lib/danfe_lib/infadic_vol_spec.rb +1 -1
  70. data/spec/lib/danfe_lib/issqn_spec.rb +1 -1
  71. data/spec/lib/danfe_lib/ticket_spec.rb +1 -1
  72. data/spec/lib/danfe_lib/transp_spec.rb +1 -1
  73. data/spec/lib/danfe_lib/vol_spec.rb +1 -1
  74. data/spec/lib/danfe_nfce_lib/document_spec.rb +19 -0
  75. data/spec/lib/danfe_nfce_lib/footer_spec.rb +42 -0
  76. data/spec/lib/danfe_nfce_lib/header_spec.rb +117 -0
  77. data/spec/lib/danfe_nfce_lib/helper_spec.rb +28 -0
  78. data/spec/lib/danfe_nfce_lib/key_spec.rb +45 -0
  79. data/spec/lib/danfe_nfce_lib/nfce_identification_spec.rb +48 -0
  80. data/spec/lib/danfe_nfce_lib/product_list_spec.rb +66 -0
  81. data/spec/lib/danfe_nfce_lib/qr_code_spec.rb +35 -0
  82. data/spec/lib/danfe_nfce_lib/recipient_spec.rb +163 -0
  83. data/spec/lib/danfe_nfce_lib/total_list_spec.rb +188 -0
  84. data/spec/lib/helper_spec.rb +102 -0
  85. data/spec/lib/logo_config_spec.rb +21 -0
  86. data/spec/lib/{danfe_lib/logo_options_spec.rb → logo_options_spec.rb} +8 -22
  87. data/spec/lib/{danfe_lib/xml_spec.rb → xml_spec.rb} +2 -2
  88. metadata +87 -18
  89. data/lib/br_danfe/danfe_lib/xml.rb +0 -38
  90. data/spec/lib/danfe_lib/options_spec.rb +0 -17
@@ -5,7 +5,7 @@ describe BrDanfe::DanfeLib::Icmstot do
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
7
  let(:pdf) { BrDanfe::DanfeLib::Document.new }
8
- let(:xml) { BrDanfe::DanfeLib::XML.new(xml_as_string) }
8
+ let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
11
11
 
@@ -5,7 +5,7 @@ describe BrDanfe::DanfeLib::Infadic do
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
7
  let(:pdf) { BrDanfe::DanfeLib::Document.new }
8
- let(:xml) { BrDanfe::DanfeLib::XML.new(xml_as_string) }
8
+ let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
11
11
 
@@ -4,7 +4,7 @@ describe BrDanfe::DanfeLib::InfadicVol do
4
4
  let(:base_dir) { './spec/fixtures/nfe/lib/' }
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
  let(:pdf) { BrDanfe::DanfeLib::Document.new }
7
- let(:xml) { BrDanfe::DanfeLib::XML.new(xml_as_string) }
7
+ let(:xml) { BrDanfe::XML.new(xml_as_string) }
8
8
  subject { described_class.new(xml, pdf) }
9
9
 
10
10
  describe '#render' do
@@ -5,7 +5,7 @@ describe BrDanfe::DanfeLib::Issqn do
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
7
  let(:pdf) { BrDanfe::DanfeLib::Document.new }
8
- let(:xml) { BrDanfe::DanfeLib::XML.new(xml_as_string) }
8
+ let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
11
11
 
@@ -5,7 +5,7 @@ describe BrDanfe::DanfeLib::Ticket do
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
7
  let(:pdf) { BrDanfe::DanfeLib::Document.new }
8
- let(:xml) { BrDanfe::DanfeLib::XML.new(xml_as_string) }
8
+ let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
11
11
 
@@ -5,7 +5,7 @@ describe BrDanfe::DanfeLib::Transp do
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
7
  let(:pdf) { BrDanfe::DanfeLib::Document.new }
8
- let(:xml) { BrDanfe::DanfeLib::XML.new(xml_as_string) }
8
+ let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
11
11
 
@@ -5,7 +5,7 @@ describe BrDanfe::DanfeLib::Vol do
5
5
  let(:output_pdf) { "#{base_dir}output.pdf" }
6
6
 
7
7
  let(:pdf) { BrDanfe::DanfeLib::Document.new }
8
- let(:xml) { BrDanfe::DanfeLib::XML.new(xml_as_string) }
8
+ let(:xml) { BrDanfe::XML.new(xml_as_string) }
9
9
 
10
10
  subject { described_class.new(pdf, xml) }
11
11
 
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::ProductList do
4
+ let(:base_dir) { './spec/fixtures/nfce/lib/' }
5
+ let(:output_pdf) { "#{base_dir}output.pdf" }
6
+
7
+ let(:subject) { BrDanfe::DanfeNfceLib::Document.new(8.cm, 1.8.cm) }
8
+
9
+ before { File.delete(output_pdf) if File.exist?(output_pdf) }
10
+
11
+ it 'render the document with blank lines' do
12
+ expect(File.exist?(output_pdf)).to be_falsey
13
+
14
+ 2.times { subject.render_blank_line }
15
+ subject.render_file output_pdf
16
+
17
+ expect("#{base_dir}document#render.pdf").to have_same_content_of file: output_pdf
18
+ end
19
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::Footer do
4
+ let(:base_dir) { './spec/fixtures/nfce/lib/' }
5
+ let(:output_pdf) { "#{base_dir}output.pdf" }
6
+
7
+ let(:pdf) { BrDanfe::DanfeNfceLib::Document.new(8.cm, 5.cm) }
8
+
9
+ let(:xml_footer) do
10
+ xml = <<-eos
11
+ <nfeProc>
12
+ <NFe>
13
+ <infNFe>
14
+ <total>
15
+ <ICMSTot>
16
+ <vTotTrib>7.50</vTotTrib>
17
+ </ICMSTot>
18
+ </total>
19
+ </infNFe>
20
+ </NFe>
21
+ </nfeProc>
22
+ eos
23
+
24
+ BrDanfe::XML.new(xml)
25
+ end
26
+
27
+ subject { described_class.new pdf, xml_footer }
28
+
29
+ describe '#render' do
30
+ before do
31
+ subject.render
32
+ File.delete(output_pdf) if File.exist?(output_pdf)
33
+ end
34
+
35
+ it 'renders footer to the pdf' do
36
+ expect(File.exist?(output_pdf)).to be_falsey
37
+ pdf.render_file output_pdf
38
+
39
+ expect("#{base_dir}footer#render.pdf").to have_same_content_of file: output_pdf
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,117 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::Header do
4
+ let(:base_dir) { './spec/fixtures/nfce/lib/' }
5
+ let(:output_pdf) { "#{base_dir}output.pdf" }
6
+ let(:logo) { './spec/fixtures/logo.png' }
7
+ let(:logo_options) { { width: 100, height: 100 } }
8
+ let(:environment) { 1 }
9
+
10
+ let(:xml) do
11
+ xml = <<-eos
12
+ <nfeProc>
13
+ <NFe>
14
+ <infNFe>
15
+ <ide>
16
+ <tpAmb>#{environment}</tpAmb>
17
+ </ide>
18
+ <emit>
19
+ <CNPJ>10845180000166</CNPJ>
20
+ <xNome>#{company_name}</xNome>
21
+ <xFant>Empresa teste</xFant>
22
+ <enderEmit>
23
+ <xLgr>R GEREMIAS EUGENIO DA SILVA</xLgr>
24
+ <nro>85</nro>
25
+ <xBairro>SERRARIA</xBairro>
26
+ <cMun>4202859</cMun>
27
+ <xMun>BRACO DO TROMBUDO</xMun>
28
+ <UF>SC</UF>
29
+ <CEP>88113160</CEP>
30
+ <cPais>1058</cPais>
31
+ <xPais>Brasil</xPais>
32
+ <fone>4832579854</fone>
33
+ </enderEmit>
34
+ <IE>255916191</IE>
35
+ <CRT>1</CRT>
36
+ </emit>
37
+ </infNFe>
38
+ </NFe>
39
+ </nfeProc>
40
+ eos
41
+
42
+ BrDanfe::XML.new(xml)
43
+ end
44
+
45
+ let(:pdf) { BrDanfe::DanfeNfceLib::Document.new(8.cm, 5.cm) }
46
+
47
+ subject { described_class.new pdf, xml, logo, logo_options }
48
+
49
+ describe '#render' do
50
+ before do
51
+ subject.render
52
+ File.delete(output_pdf) if File.exist?(output_pdf)
53
+ end
54
+
55
+ context 'when has a short name' do
56
+ let(:company_name) { 'Test company' }
57
+
58
+ context 'when has a logo' do
59
+ it 'renders header to the pdf' do
60
+ expect(File.exist?(output_pdf)).to be_falsey
61
+ pdf.render_file output_pdf
62
+
63
+ expect("#{base_dir}header#render-short_name_with_logo.pdf").to have_same_content_of file: output_pdf
64
+ end
65
+ end
66
+
67
+ context 'when does not have a logo' do
68
+ let(:logo) { nil }
69
+ let(:logo_options) { nil }
70
+
71
+ it 'renders header to the pdf' do
72
+ expect(File.exist?(output_pdf)).to be_falsey
73
+ pdf.render_file output_pdf
74
+
75
+ expect("#{base_dir}header#render-short_name_without_logo.pdf").to have_same_content_of file: output_pdf
76
+ end
77
+ end
78
+ end
79
+
80
+ context 'when has a long name' do
81
+ let(:company_name) { 'Test company with some very long name to do a line break' }
82
+
83
+ context 'when has a logo' do
84
+ it 'renders the header with company name line breaked' do
85
+ expect(File.exist?(output_pdf)).to be_falsey
86
+ pdf.render_file output_pdf
87
+
88
+ expect("#{base_dir}header#render-long_name_with_logo.pdf").to have_same_content_of file: output_pdf
89
+ end
90
+ end
91
+
92
+ context 'when does not have a logo' do
93
+ let(:logo) { nil }
94
+ let(:logo_options) { nil }
95
+
96
+ it 'renders header to the pdf' do
97
+ expect(File.exist?(output_pdf)).to be_falsey
98
+ pdf.render_file output_pdf
99
+
100
+ expect("#{base_dir}header#render-long_name_without_logo.pdf").to have_same_content_of file: output_pdf
101
+ end
102
+ end
103
+ end
104
+
105
+ context 'when the environment is homologation' do
106
+ let(:environment) { 2 }
107
+ let(:company_name) { 'Homologation example' }
108
+
109
+ it 'renders homologation label' do
110
+ expect(File.exist?(output_pdf)).to be_falsey
111
+ pdf.render_file output_pdf
112
+
113
+ expect("#{base_dir}header#render-homologation.pdf").to have_same_content_of file: output_pdf
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::Helper do
4
+ let(:xml) do
5
+ xml = <<-eos
6
+ <enderDest>
7
+ <xLgr>Rua Tijucas</xLgr>
8
+ <nro>99</nro>
9
+ <xCpl>dwdwa</xCpl>
10
+ <xBairro>Centro</xBairro>
11
+ <cMun>4218004</cMun>
12
+ <xMun>TIJUCAS</xMun>
13
+ <UF>SC</UF>
14
+ <CEP>88200000</CEP>
15
+ <cPais>1058</cPais>
16
+ <xPais>Brasil</xPais>
17
+ </enderDest>
18
+ eos
19
+
20
+ BrDanfe::XML.new(xml)
21
+ end
22
+
23
+ describe '#address' do
24
+ it 'returns a formated address string' do
25
+ expect(described_class.address(xml)).to eql 'Rua Tijucas, 99, Centro, TIJUCAS - SC'
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::Key do
4
+ let(:base_dir) { './spec/fixtures/nfce/lib/' }
5
+ let(:output_pdf) { "#{base_dir}output.pdf" }
6
+
7
+ let(:xml_key) do
8
+ xml = <<-eos
9
+ <nfeProc>
10
+ <NFe>
11
+ <infNFeSupl>
12
+ <qrCode><![CDATA[http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?p=13130901144012000152651231234567891123456786|2|2|1|A604FD51E40ED8465B787B3E9CF8C1D90E61DB13]]></qrCode>
13
+ <urlChave>www.sefaz.am.gov.br/nfce/consulta</urlChave>
14
+ </infNFeSupl>
15
+ </NFe>
16
+ <protNFe versao="4.00">
17
+ <infProt>
18
+ <chNFe>42200310845180000166550010000016291182910232</chNFe>
19
+ </infProt>
20
+ </protNFe>
21
+ </nfeProc>
22
+ eos
23
+
24
+ BrDanfe::XML.new(xml)
25
+ end
26
+
27
+ let(:pdf) { BrDanfe::DanfeNfceLib::Document.new(8.cm, 5.cm) }
28
+
29
+ subject { described_class.new pdf, xml_key }
30
+
31
+ describe '#render' do
32
+ before do
33
+ subject.render
34
+ File.delete(output_pdf) if File.exist?(output_pdf)
35
+ end
36
+
37
+ it 'renders key to the pdf' do
38
+ expect(File.exist?(output_pdf)).to be_falsey
39
+
40
+ pdf.render_file output_pdf
41
+
42
+ expect("#{base_dir}key#render.pdf").to have_same_content_of file: output_pdf
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::NfceIdentification do
4
+ let(:base_dir) { './spec/fixtures/nfce/lib/' }
5
+ let(:output_pdf) { "#{base_dir}output.pdf" }
6
+
7
+ let(:pdf) { BrDanfe::DanfeNfceLib::Document.new(8.cm, 5.cm) }
8
+
9
+ let(:xml) do
10
+ xml = <<-eos
11
+ <nfeProc>
12
+ <NFe>
13
+ <infNFe>
14
+ <ide>
15
+ <dhEmi>2020-03-24T13:33:20-05:00</dhEmi>
16
+ <serie>1</serie>
17
+ <nNF>1629</nNF>
18
+ </ide>
19
+ <protNFe versao="4.00">
20
+ <infProt>
21
+ <nProt>342200000151784</nProt>
22
+ <dhRecbto>2020-03-24T15:36:14-03:00</dhRecbto>
23
+ </infProt>
24
+ </protNFe>
25
+ </infNFe>
26
+ </NFe>
27
+ </nfeProc>
28
+ eos
29
+
30
+ BrDanfe::XML.new(xml)
31
+ end
32
+
33
+ subject { described_class.new pdf, xml }
34
+
35
+ describe '#render' do
36
+ before do
37
+ subject.render
38
+ File.delete(output_pdf) if File.exist?(output_pdf)
39
+ end
40
+
41
+ it 'renders nfce identification to the pdf' do
42
+ expect(File.exist?(output_pdf)).to be_falsey
43
+ pdf.render_file output_pdf
44
+
45
+ expect("#{base_dir}nfce_identification#render.pdf").to have_same_content_of file: output_pdf
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::ProductList do
4
+ let(:base_dir) { './spec/fixtures/nfce/lib/' }
5
+ let(:output_pdf) { "#{base_dir}output.pdf" }
6
+ let(:xml) { BrDanfe::XML.new(File.read("#{base_dir}#{xml_name}.xml")) }
7
+
8
+ let(:pdf) { BrDanfe::DanfeNfceLib::Document.new(8.cm, 5.cm) }
9
+
10
+ subject { described_class.new pdf, xml }
11
+
12
+ describe '#render' do
13
+ before do
14
+ subject.render
15
+ File.delete(output_pdf) if File.exist?(output_pdf)
16
+ end
17
+
18
+ context 'when does not have a long name' do
19
+ describe 'when has a single product' do
20
+ let(:xml_name) { 'product_list_with_single_product' }
21
+
22
+ it 'renders product list with single product to the pdf' do
23
+ expect(File.exist?(output_pdf)).to be_falsey
24
+ pdf.render_file output_pdf
25
+
26
+ expect("#{base_dir}product_list#render-with_single_product.pdf").to have_same_content_of file: output_pdf
27
+ end
28
+ end
29
+
30
+ describe 'when has many products' do
31
+ let(:xml_name) { 'product_list_with_many_products' }
32
+
33
+ it 'renders product list with many products to the pdf' do
34
+ expect(File.exist?(output_pdf)).to be_falsey
35
+ pdf.render_file output_pdf
36
+
37
+ expect("#{base_dir}product_list#render-with_many_products.pdf").to have_same_content_of file: output_pdf
38
+ end
39
+ end
40
+ end
41
+
42
+ context 'when has a long name' do
43
+ describe 'when has a single product' do
44
+ let(:xml_name) { 'product_list_with_single_product_and_long_name' }
45
+
46
+ it 'renders product list with single product to the pdf' do
47
+ expect(File.exist?(output_pdf)).to be_falsey
48
+ pdf.render_file output_pdf
49
+
50
+ expect("#{base_dir}product_list#render-with_single_product_and_long_name.pdf").to have_same_content_of file: output_pdf
51
+ end
52
+ end
53
+
54
+ describe 'when has many products' do
55
+ let(:xml_name) { 'product_list_with_many_products_and_long_names' }
56
+
57
+ it 'renders product list with many products to the pdf' do
58
+ expect(File.exist?(output_pdf)).to be_falsey
59
+ pdf.render_file output_pdf
60
+
61
+ expect("#{base_dir}product_list#render-with_many_products_and_long_names.pdf").to have_same_content_of file: output_pdf
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDanfe::DanfeNfceLib::QrCode do
4
+ let(:base_dir) { './spec/fixtures/nfce/lib/' }
5
+ let(:output_pdf) { "#{base_dir}output.pdf" }
6
+
7
+ let(:pdf) { BrDanfe::DanfeNfceLib::Document.new(8.cm, 5.cm) }
8
+
9
+ let(:xml) do
10
+ xml = <<-eos
11
+ <infNFeSupl>
12
+ <qrCode><![CDATA[http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?p=13130901144012000152651231234567891123456786|2|2|1|A604FD51E40ED8465B787B3E9CF8C1D90E61DB13]]></qrCode>
13
+ <urlChave>www.sefaz.am.gov.br/nfce/consulta</urlChave>
14
+ </infNFeSupl>
15
+ eos
16
+
17
+ BrDanfe::XML.new(xml)
18
+ end
19
+
20
+ subject { described_class.new pdf, xml }
21
+
22
+ describe '#render' do
23
+ before do
24
+ subject.render
25
+ File.delete(output_pdf) if File.exist?(output_pdf)
26
+ end
27
+
28
+ it 'renders qr-code to the pdf' do
29
+ expect(File.exist?(output_pdf)).to be_falsey
30
+ pdf.render_file output_pdf
31
+
32
+ expect("#{base_dir}qr_code#render.pdf").to have_same_content_of file: output_pdf
33
+ end
34
+ end
35
+ end