require "spec_helper"
describe BrDanfe::DanfeLib::Helper do
describe ".numerify" do
it "formats with the decimals" do
expect(BrDanfe::DanfeLib::Helper.numerify(0.123)).to eq "0,123"
expect(BrDanfe::DanfeLib::Helper.numerify(0.1234)).to eq "0,1234"
expect(BrDanfe::DanfeLib::Helper.numerify(0.12345)).to eq "0,12345"
expect(BrDanfe::DanfeLib::Helper.numerify(0.1234567891)).to eq "0,1234567891"
end
it "formats integers" do
expect(BrDanfe::DanfeLib::Helper.numerify(100)).to eq "100,00"
end
it "formats decimals" do
expect(BrDanfe::DanfeLib::Helper.numerify(123.45)).to eq "123,45"
end
it "formats thousands" do
expect(BrDanfe::DanfeLib::Helper.numerify(1000)).to eq "1.000,00"
end
it "formats millions" do
expect(BrDanfe::DanfeLib::Helper.numerify(1000000)).to eq "1.000.000,00"
end
it "formats using two as min decimal precision" do
expect(BrDanfe::DanfeLib::Helper.numerify(123.4)).to eq "123,40"
end
it "formats 0 to 0,00" do
expect(BrDanfe::DanfeLib::Helper.numerify(0)).to eq "0,00"
end
it "doesn't format nil value" do
expect(BrDanfe::DanfeLib::Helper.numerify(nil)).to eq ""
end
it "doesn't format blank value" do
expect(BrDanfe::DanfeLib::Helper.numerify("")).to eq ""
end
end
describe ".format_datetime" do
it "returns a formated string" do
string = "2013-10-18T13:54:04"
expect(BrDanfe::DanfeLib::Helper.format_datetime(string)).to eq "18/10/2013 13:54:04"
end
describe "when the source is blank" do
it "is empty" do
expect(BrDanfe::DanfeLib::Helper.format_datetime("")).to eq ""
end
end
end
describe ".format_date" do
it "returns a formated string" do
string = "2013-10-18T13:54:04"
expect(BrDanfe::DanfeLib::Helper.format_date(string)).to eq "18/10/2013"
end
describe "when the source is blank" do
it "is empty" do
expect(BrDanfe::DanfeLib::Helper.format_date("")).to eq ""
end
end
end
describe ".format_time" do
describe "when param is a complete datetime" do
let(:param) { "2013-10-18T16:54:04-03:00" }
it "is a formated time string in localtime" do
expect(BrDanfe::DanfeLib::Helper.format_time(param)).to eq "16:54:04"
end
end
describe "when param is only a time" do
let(:param) { "14:23:02" }
it "is a formated time string" do
expect(BrDanfe::DanfeLib::Helper.format_time(param)).to eq "14:23:02"
end
end
describe "when param is blank" do
let(:param) { "" }
it "is empty" do
expect(BrDanfe::DanfeLib::Helper.format_time(param)).to eq ""
end
end
end
describe ".no_fiscal_value?" do
let(:xml_homologation) do
xml = <<-eos
2
2011-10-29T14:37:09
eos
Nokogiri::XML(xml)
end
let(:xml_unauthorized) do
xml = <<-eos
eos
Nokogiri::XML(xml)
end
let(:xml_authorized) do
xml = <<-eos
1
2011-10-29T14:37:09
eos
Nokogiri::XML(xml)
end
context "when XML is unauthorized" do
it "returns true" do
expect(BrDanfe::DanfeLib::Helper.has_no_fiscal_value?(xml_unauthorized)).to eq true
end
end
context "when XML is in homologation environment" do
it "returns true" do
expect(BrDanfe::DanfeLib::Helper.has_no_fiscal_value?(xml_homologation)).to eq true
end
end
context "when XML is authorized" do
it "returns false" do
expect(BrDanfe::DanfeLib::Helper.has_no_fiscal_value?(xml_authorized)).to eq false
end
end
end
describe ".address_is_too_big" do
let(:pdf) { BrDanfe::DanfeLib::Document.new }
context "when the address is too big for the street field at DANFE" do
let(:address) { "Rua do governo do estado 1125 - Em anexo ao super mercado maior do bairro" }
it "returns true" do
expect(BrDanfe::DanfeLib::Helper.address_is_too_big(pdf, address)).to be true
end
end
context "when the address fits in the street field in DANFE" do
let(:address) { "Rua do governo do estado 1125 - Salas 1 e 2" }
it "returns false" do
expect(BrDanfe::DanfeLib::Helper.address_is_too_big(pdf, address)).to be false
end
end
end
describe ".generate_address" do
let(:xml) do
<<-eos
Rua do governo do estado
1125
Em anexo ao super mercado maior do bairro
eos
end
let(:xml_street) do
Nokogiri::XML(xml)
end
it "returns the address with the street, number and complement" do
expect(BrDanfe::DanfeLib::Helper.generate_address(xml_street))
.to eq "Rua do governo do estado 1125 - Em anexo ao super mercado maior do bairro"
end
context "when recipient address hasn't complement" do
let(:xml) do
<<-eos
Rua do governo do estado
1125
eos
end
it "returns the address with the street and number" do
expect(BrDanfe::DanfeLib::Helper.generate_address(xml_street))
.to eq "Rua do governo do estado 1125"
end
end
context "when recipient address hasn't complement and number" do
let(:xml) do
<<-eos
Rua do governo do estado
eos
end
it "returns the address with the street only" do
expect(BrDanfe::DanfeLib::Helper.generate_address(xml_street))
.to eq "Rua do governo do estado"
end
end
context "when recipient address hasn't number" do
let(:xml) do
<<-eos
Rua do governo do estado
Em anexo ao super mercado maior do bairro
eos
end
it "returns the address with the street and complement" do
expect(BrDanfe::DanfeLib::Helper.generate_address(xml_street))
.to eq "Rua do governo do estado - Em anexo ao super mercado maior do bairro"
end
end
end
end