spec/valvat_spec.rb in valvat-0.3.3 vs spec/valvat_spec.rb in valvat-0.3.4

- old
+ new

@@ -7,246 +7,251 @@ it "demands one and only one argument" do lambda{ Valvat.new }.should raise_error(ArgumentError) lambda{ Valvat.new("a", "b") }.should raise_error(ArgumentError) lambda{ Valvat.new("a") }.should_not raise_error end + + it "normalizes input string" do + Valvat.new("de25.9597,69 7").to_s.should eql("DE259597697") + Valvat.new("de25.9597,69 7").iso_country_code.should eql("DE") + end end - + context "Valvat()" do it "initializes new Valvat instance on string" do Valvat("abc").should be_kind_of(Valvat) end - + it "returns same Valvat instance on Valvat instance" do vat = Valvat.new("abc") Valvat(vat).should be_kind_of(Valvat) Valvat(vat).object_id.should eql(vat.object_id) end end - + context "on european vat number" do let(:de_vat) { Valvat.new("DE259597697") } # valid & exists let(:at_vat) { Valvat.new("ATU458890031") } # invalid let(:gr_vat) { Valvat.new("EL999943280") } # valid & exists - + context "#valid?" do it "returns true on valid numbers" do de_vat.should be_valid gr_vat.should be_valid end - + it "returns false on invalid numbers" do at_vat.should_not be_valid end end - + context "#exist(s)?" do context "on existing vat numbers" do before do Valvat::Lookup.stub(:validate => true) end - + it "returns true" do de_vat.exists?.should eql(true) gr_vat.exists?.should eql(true) de_vat.exist?.should eql(true) gr_vat.exist?.should eql(true) end end - + context "on not existing vat numbers" do before do Valvat::Lookup.stub(:validate => false) end - + it "returns false" do at_vat.exists?.should eql(false) at_vat.exist?.should eql(false) end end end - - context "#iso_country_code" do + + context "#iso_country_code" do it "returns iso country code on iso_country_code" do de_vat.iso_country_code.should eql("DE") at_vat.iso_country_code.should eql("AT") end - + it "returns GR iso country code on greek vat number" do gr_vat.iso_country_code.should eql("GR") end end - - context "#vat_country_code" do + + context "#vat_country_code" do it "returns iso country code on iso_country_code" do de_vat.vat_country_code.should eql("DE") at_vat.vat_country_code.should eql("AT") end - + it "returns EL iso language code on greek vat number" do gr_vat.vat_country_code.should eql("EL") end end - + context "#european?" do it "returns true" do de_vat.should be_european at_vat.should be_european gr_vat.should be_european end end - + context "#to_s" do it "returns full vat number" do de_vat.to_s.should eql("DE259597697") at_vat.to_s.should eql("ATU458890031") gr_vat.to_s.should eql("EL999943280") end end - + context "#inspect" do it "returns vat number with iso country code" do de_vat.inspect.should eql("#<Valvat DE259597697 DE>") at_vat.inspect.should eql("#<Valvat ATU458890031 AT>") gr_vat.inspect.should eql("#<Valvat EL999943280 GR>") end end - + context "#to_a" do it "calls Valvat::Utils.split with raw vat number and returns result" do de_vat # initialize Valvat::Utils.should_receive(:split).once.with("DE259597697").and_return(["a", "b"]) de_vat.to_a.should eql(["a", "b"]) end end end - + context "on vat number from outside of europe" do let(:us_vat) { Valvat.new("US345889003") } let(:ch_vat) { Valvat.new("CH445889003") } - + context "#valid?" do it "returns false" do us_vat.should_not be_valid ch_vat.should_not be_valid end end - + context "#exist?" do without_any_web_requests! - + it "returns false" do us_vat.should_not be_exist ch_vat.should_not be_exist end end - - context "#iso_country_code" do + + context "#iso_country_code" do it "returns nil" do us_vat.iso_country_code.should eql(nil) ch_vat.iso_country_code.should eql(nil) end end - - context "#vat_country_code" do + + context "#vat_country_code" do it "returns nil" do us_vat.vat_country_code.should eql(nil) ch_vat.vat_country_code.should eql(nil) end end - + context "#european?" do it "returns false" do us_vat.should_not be_european ch_vat.should_not be_european end end - + context "#to_s" do it "returns full given vat number" do us_vat.to_s.should eql("US345889003") ch_vat.to_s.should eql("CH445889003") end end - + context "#inspect" do it "returns vat number without iso country code" do us_vat.inspect.should eql("#<Valvat US345889003>") ch_vat.inspect.should eql("#<Valvat CH445889003>") end end - + end - + context "on non-sense/empty vat number" do let(:only_iso_vat) { Valvat.new("DE") } let(:num_vat) { Valvat.new("12445889003") } let(:empty_vat) { Valvat.new("") } let(:nil_vat) { Valvat.new("") } - + context "#valid?" do it "returns false" do only_iso_vat.should_not be_valid num_vat.should_not be_valid empty_vat.should_not be_valid nil_vat.should_not be_valid end end - + context "#exist?" do without_any_web_requests! - + it "returns false" do only_iso_vat.should_not be_exist num_vat.should_not be_exist empty_vat.should_not be_exist nil_vat.should_not be_exist end end - - context "#iso_country_code" do + + context "#iso_country_code" do it "returns nil" do only_iso_vat.iso_country_code.should eql(nil) num_vat.iso_country_code.should eql(nil) empty_vat.iso_country_code.should eql(nil) nil_vat.iso_country_code.should eql(nil) end end - - context "#vat_country_code" do + + context "#vat_country_code" do it "returns nil" do only_iso_vat.vat_country_code.should eql(nil) num_vat.vat_country_code.should eql(nil) empty_vat.vat_country_code.should eql(nil) nil_vat.vat_country_code.should eql(nil) end end - + context "#european?" do it "returns false" do only_iso_vat.should_not be_european num_vat.should_not be_european empty_vat.should_not be_european nil_vat.should_not be_european end end - + context "#to_s" do it "returns full given vat number" do only_iso_vat.to_s.should eql("DE") num_vat.to_s.should eql("12445889003") empty_vat.to_s.should eql("") nil_vat.to_s.should eql("") end end - + context "#inspect" do it "returns vat number without iso country code" do only_iso_vat.inspect.should eql("#<Valvat DE>") num_vat.inspect.should eql("#<Valvat 12445889003>") empty_vat.inspect.should eql("#<Valvat >") nil_vat.inspect.should eql("#<Valvat >") end end - + end -end \ No newline at end of file +end