require 'spec_helper'
describe BrDanfe::Helper do
describe '.no_fiscal_value?' do
let(:xml_homologation) do
xml = <<~XML
2
2011-10-29T14:37:09
XML
Nokogiri::XML(xml)
end
let(:xml_unauthorized) do
xml = <<~XML
XML
Nokogiri::XML(xml)
end
let(:xml_authorized) do
xml = <<~XML
1
2011-10-29T14:37:09
XML
Nokogiri::XML(xml)
end
context 'when XML is unauthorized' do
it 'returns true' do
expect(described_class.no_fiscal_value?(xml_unauthorized)).to eq true
end
end
context 'when XML is in homologation environment' do
it 'returns true' do
expect(described_class.no_fiscal_value?(xml_homologation)).to eq true
end
end
context 'when XML is authorized' do
it 'returns false' do
expect(described_class.no_fiscal_value?(xml_authorized)).to eq false
end
end
end
describe '.unauthorized?' do
context 'when XML is unauthorized' do
let(:xml_unauthorized) do
xml = <<~XML
XML
Nokogiri::XML(xml)
end
it 'returns true' do
expect(described_class.unauthorized?(xml_unauthorized)).to eq true
end
end
context 'when XML is authorized' do
let(:xml_authorized) do
xml = <<~XML
2011-10-29T14:37:09
XML
Nokogiri::XML(xml)
end
it 'returns false' do
expect(described_class.unauthorized?(xml_authorized)).to eq false
end
end
end
describe '.homologation?' do
context 'when tpAmb is equal to "2"' do
let(:xml_homologation) do
xml = <<~XML
2
XML
Nokogiri::XML(xml)
end
it 'returns true' do
expect(described_class.homologation?(xml_homologation)).to be true
end
end
context 'when tpAmb is different to "2"' do
let(:xml_production) do
xml = <<~XML
1
XML
Nokogiri::XML(xml)
end
it 'returns true' do
expect(described_class.homologation?(xml_production)).to be false
end
end
end
describe '.numerify' do
it 'formats with the decimals' do
expect(described_class.numerify(0.123)).to eql '0,123'
expect(described_class.numerify(0.1234)).to eql '0,1234'
expect(described_class.numerify(0.12345)).to eql '0,12345'
expect(described_class.numerify(0.1234567891)).to eql '0,1234567891'
end
it 'formats integers' do
expect(described_class.numerify(100)).to eql '100,00'
end
it 'formats decimals' do
expect(described_class.numerify(123.45)).to eql '123,45'
end
it 'formats thousands' do
expect(described_class.numerify(1000)).to eql '1.000,00'
end
it 'formats millions' do
expect(described_class.numerify(1_000_000)).to eql '1.000.000,00'
end
it 'formats using two as min decimal precision' do
expect(described_class.numerify(123.4)).to eql '123,40'
end
it 'formats 0 to 0,00' do
expect(described_class.numerify(0)).to eql '0,00'
end
it 'does not format nil value' do
expect(described_class.numerify(nil)).to eql ''
end
it 'does not format blank value' do
expect(described_class.numerify('')).to eql ''
end
end
describe '.format_datetime' do
it 'returns a formated string' do
expect(described_class.format_datetime('2013-10-18T13:54:04')).to eql '18/10/2013 13:54:04'
end
describe 'when the source is blank' do
it 'is empty' do
expect(described_class.format_datetime('')).to eql ''
end
end
describe 'when has timezone' do
it 'returns the formated string with the timezone' do
expect(described_class.format_datetime('2013-10-18T13:54:04-03:00', with_time_zone: true)).to eql '18/10/2013 13:54:04-03:00'
end
end
end
describe '.format_cep' do
it 'returns a formatted CEP' do
expect(described_class.format_cep('12345678')).to eql '12.345-678'
end
end
end