require 'spec_helper'
describe BrDanfe::MdfeLib::Notes do
def xml_as_string(options = {})
params = {
infAdFisco: 'EXEMPLO INFORMAÇÕES ADICIONAIS FISCO',
infCpl: 'EXEMPLO INFORMAÇÕES ADICIONAIS CONTRIBUINTE'
}.merge(options)
<<~XML
#{params[:infAdFisco]}
#{params[:infCpl]}
XML
end
let(:pdf) { BrDanfe::MdfeLib::Document.new }
let(:xml) { BrDanfe::XML.new(xml_as_string) }
subject { described_class.new(pdf, xml) }
let(:pdf_text) do
PDF::Inspector::Text.analyze(pdf.render).strings.join("\n")
end
before { pdf.move_cursor_to 345 }
describe '#generate' do
let(:base_dir) { './spec/fixtures/mdfe/lib/' }
let(:output_pdf) { "#{base_dir}output.pdf" }
before { File.delete(output_pdf) if File.exist?(output_pdf) }
it 'generates the title' do
title = 'Observações'
subject.generate
expect(pdf_text).to include title
end
it 'generates additional information for fisco when xml has content in infAdFisco tag' do
fisco_information = "INFORMAÇÕES ADICIONAIS DE INTERESSE DO FISCO\nEXEMPLO INFORMAÇÕES ADICIONAIS FISCO"
subject.generate
expect(pdf_text).to include fisco_information
end
it 'does not generate the additional information for fisco when xml does not have content in infAdFisco tag' do
fisco_information = "INFORMAÇÕES ADICIONAIS DE INTERESSE DO FISCO\n"
xml = BrDanfe::XML.new(xml_as_string(infAdFisco: '', infCpl: ''))
subject = described_class.new(pdf, xml)
subject.generate
expect(pdf_text).not_to include fisco_information
end
it 'generates the additional information for taxpayer when xml has content in infCpl tag' do
taxpayer_information = "INFORMAÇÕES ADICIONAIS DE INTERESSE DO CONTRIBUINTE\nEXEMPLO INFORMAÇÕES ADICIONAIS CONTRIBUINTE"
subject.generate
expect(pdf_text).to include taxpayer_information
end
it 'does not generate the additional information for taxpayer when xml does not have content in infCpl tag' do
taxpayer_information = "INFORMAÇÕES ADICIONAIS DE INTERESSE DO CONTRIBUINTE\n"
xml = BrDanfe::XML.new(xml_as_string(infAdFisco: '', infCpl: ''))
subject = described_class.new(pdf, xml)
subject.generate
expect(pdf_text).not_to include taxpayer_information
end
it 'creates a new page if aditional information do not fit on first page' do
expect(File.exist?(output_pdf)).to be false
xml = BrDanfe::XML.new(
xml_as_string(
infAdFisco: "#{'alguma coisa ' * 153}",
infCpl: "#{'alguma coisa ' * 2000}"
)
)
subject = described_class.new(pdf, xml)
subject.generate
pdf.render_file output_pdf
expect("#{base_dir}notes#render-big-aditional-information.pdf").to have_same_content_of file: output_pdf
end
end
end