require 'spec_helper'
describe BrDanfe::DanfeLib::Xprod do
describe '#render' do
context 'when has FCI' do
let(:xml_fci) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
12232531-74B2-4FDD-87A6-CF0AD3E55386
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml_fci) }
it 'returns product + FCI' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'FCI: 12232531-74B2-4FDD-87A6-CF0AD3E55386'
expect(subject.render).to eq expected
end
end
context 'when has ST' do
context 'when is Retido' do
let(:vBCSTRet) { 0.00 }
let(:pST) { 0.00 }
let(:vICMSSTRet) { 0.00 }
let(:xml) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
0
60
#{pST}
#{vBCSTRet}
#{vICMSSTRet}
0.00
0.00
04
04
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml) }
context 'when has vBCSTRet' do
let(:vBCSTRet) { 50.00 }
it 'returns product + ST Retido' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'ST Retido: Base: 50,00 * Alíq: 0,00% * Vlr: 0,00'
expect(subject.render).to eq expected
end
end
context 'when has vICMSSTRet' do
let(:vICMSSTRet) { 50.00 }
it 'returns product + ST Retido' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'ST Retido: Base: 0,00 * Alíq: 0,00% * Vlr: 50,00'
expect(subject.render).to eq expected
end
end
context 'when has pST' do
let(:pST) { 50.00 }
it 'returns product + ST Retido' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'ST Retido: Base: 0,00 * Alíq: 50,00% * Vlr: 0,00'
expect(subject.render).to eq expected
end
end
context "when doesn't have any fields" do
it 'returns product' do
expected = 'MONITOR DE ARCO ELETRICO'
expect(subject.render).to eq expected
end
end
end
context "when isn't Retido" do
let(:xml_st) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
96.73
56.00
479.82
17.00
29.28
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml_st) }
it 'returns product + ST' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'ST: MVA: 56,00% * Alíq: 17,00% * BC: 479,82 * Vlr: 29,28'
expect(subject.render).to eq expected
end
end
end
context 'when has infAdProd' do
let(:xml_infAdProd) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
Informações adicionais do produto
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml_infAdProd) }
it 'returns product + infAdProd' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'Informações adicionais do produto'
expect(subject.render).to eq expected
end
end
context 'when has FCP on ICMS00 tag' do
let(:xml_fcp) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
23.56
4.71
2.00
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml_fcp) }
it 'returns product + FCP' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'FCP: Alíq: 2,00% * Vlr: 4,71'
expect(subject.render).to eq expected
end
end
context 'when has FCI + ST + infAdProd + FCP' do
let(:xml_IFC_ST_infAdProd) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
12232531-74B2-4FDD-87A6-CF0AD3E55386
96.73
56.00
479.82
17.00
29.28
4.71
2.00
Informações adicionais do produto
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml_IFC_ST_infAdProd) }
it 'returns product + FCI + ST + infAdProd' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'Informações adicionais do produto'
expected += "\n"
expected += 'FCI: 12232531-74B2-4FDD-87A6-CF0AD3E55386'
expected += "\n"
expected += 'ST: MVA: 56,00% * Alíq: 17,00% * BC: 479,82 * Vlr: 29,28'
expected += "\n"
expected += 'FCP: Alíq: 2,00% * Vlr: 4,71'
expect(subject.render).to eq expected
end
end
context 'when FCP is not in a ICMS00 tag' do
let(:xml_fcp) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
23.56
235.50
4.71
2.00
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml_fcp) }
it 'returns product + FCP' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'FCP: Base: 235,50 * Alíq: 2,00% * Vlr: 4,71'
expect(subject.render).to eq expected
end
end
context 'when has FCP ST' do
let(:xml_fcp) do
xml = <<-eos
MONITOR DE ARCO ELETRICO
23.56
235.50
4.71
2.00
eos
Nokogiri::XML(xml)
end
subject { BrDanfe::DanfeLib::Xprod.new(xml_fcp) }
it 'returns product + FCP' do
expected = 'MONITOR DE ARCO ELETRICO'
expected += "\n"
expected += 'FCP ST: Base: 235,50 * Alíq: 2,00% * Vlr: 4,71'
expect(subject.render).to eq expected
end
end
end
end