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