spec/formats/woe_id_spec.rb in barometer-0.7.3 vs spec/formats/woe_id_spec.rb in barometer-0.8.0

- old
+ new

@@ -1,9 +1,18 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') +require "addressable/uri" -describe "Query::WoeID" do - +params_in_body = lambda do |request_1, request_2| + a1 = Addressable::URI.parse("?#{request_1.body}") + a2 = Addressable::URI.parse("?#{request_2.body}") + a1.query_values == a2.query_values +end + +describe Barometer::Query::Format::WoeID, :vcr => { + :match_requests_on => [:method, :uri, params_in_body], + :cassette_name => "Query::Format::WoeID" +} do before(:each) do @short_zipcode = "90210" @zipcode = @short_zipcode @long_zipcode = "90210-5555" @weather_id = "USGA0028" @@ -11,201 +20,192 @@ @coordinates = "40.756054,-73.986951" @geocode = "New York, NY" @icao = "KSFO" @woe_id = "615702" end - + describe "and class methods" do - it "returns a format" do Barometer::Query::Format::WoeID.format.should == :woe_id end - + it "returns a country" do Barometer::Query::Format::WoeID.country_code.should be_nil end - + it "returns a regex" do Barometer::Query::Format::WoeID.regex.should_not be_nil Barometer::Query::Format::WoeID.regex.is_a?(Regexp).should be_true end - + it "returns the convertable_formats" do - Query::Format::WoeID.convertable_formats.should_not be_nil - Query::Format::WoeID.convertable_formats.is_a?(Array).should be_true - Query::Format::WoeID.convertable_formats.include?(:short_zipcode).should be_true - Query::Format::WoeID.convertable_formats.include?(:zipcode).should be_true - Query::Format::WoeID.convertable_formats.include?(:postalcode).should be_true - Query::Format::WoeID.convertable_formats.include?(:weather_id).should be_true - Query::Format::WoeID.convertable_formats.include?(:coordinates).should be_true - Query::Format::WoeID.convertable_formats.include?(:icao).should be_true - Query::Format::WoeID.convertable_formats.include?(:geocode).should be_true + Barometer::Query::Format::WoeID.convertable_formats.should_not be_nil + Barometer::Query::Format::WoeID.convertable_formats.is_a?(Array).should be_true + Barometer::Query::Format::WoeID.convertable_formats.include?(:short_zipcode).should be_true + Barometer::Query::Format::WoeID.convertable_formats.include?(:zipcode).should be_true + Barometer::Query::Format::WoeID.convertable_formats.include?(:postalcode).should be_true + Barometer::Query::Format::WoeID.convertable_formats.include?(:weather_id).should be_true + Barometer::Query::Format::WoeID.convertable_formats.include?(:coordinates).should be_true + Barometer::Query::Format::WoeID.convertable_formats.include?(:icao).should be_true + Barometer::Query::Format::WoeID.convertable_formats.include?(:geocode).should be_true end - + describe "is?," do - it "recognizes a valid 4 digit code format" do @query = "8775" Barometer::Query::Format::WoeID.is?(@query).should be_true end - + it "recognizes a valid 6 digit code format" do @query = "615702" Barometer::Query::Format::WoeID.is?(@query).should be_true end - + it "recognizes a valid 7 digit code format" do @query = "2459115" Barometer::Query::Format::WoeID.is?(@query).should be_true end - + it "recognizes a valid 5 digit code with a prepended 'w'" do @query = "w90210" Barometer::Query::Format::WoeID.is?(@query).should be_true end - + it "does not recognize a zip code" do @query = "90210" Barometer::Query::Format::WoeID.is?(@query).should be_false end - + it "recognizes non-valid format" do @query = "USGA0028" Barometer::Query::Format::WoeID.is?(@query).should be_false end - end - + it "converts the query" do query_no_conversion = "2459115" query = Barometer::Query.new(query_no_conversion) query.q.should == query_no_conversion - + query_with_conversion = "w90210" query = Barometer::Query.new(query_with_conversion) query.q.should_not == query_with_conversion query.q.should == "90210" end - + describe "when reversing lookup" do - it "requires a Barometer::Query object" do lambda { Barometer::Query::Format::WoeID.reverse }.should raise_error(ArgumentError) lambda { Barometer::Query::Format::WoeID.reverse("invalid") }.should raise_error(ArgumentError) query = Barometer::Query.new(@woe_id) query.is_a?(Barometer::Query).should be_true lambda { Barometer::Query::Format::WoeID.reverse(original_query) }.should_not raise_error(ArgumentError) end - + it "returns a Barometer::Query" do query = Barometer::Query.new(@woe_id) Barometer::Query::Format::WoeID.reverse(query).is_a?(Barometer::Query).should be_true end - + it "reverses a valid woe_id (US)" do query = Barometer::Query.new(@woe_id) new_query = Barometer::Query::Format::WoeID.reverse(query) new_query.q.should == "Paris, France" new_query.country_code.should be_nil new_query.format.should == :geocode new_query.geo.should be_nil end - + it "doesn't reverse an invalid weather_id" do query = Barometer::Query.new(@zipcode) Barometer::Query::Format::WoeID.reverse(query).should be_nil end - end - + describe "when converting using 'to'," do - it "requires a Barometer::Query object" do - lambda { Query::Format::WoeID.to }.should raise_error(ArgumentError) - lambda { Query::Format::WoeID.to("invalid") }.should raise_error(ArgumentError) + lambda { Barometer::Query::Format::WoeID.to }.should raise_error(ArgumentError) + lambda { Barometer::Query::Format::WoeID.to("invalid") }.should raise_error(ArgumentError) query = Barometer::Query.new(@woe_id) query.is_a?(Barometer::Query).should be_true - lambda { Query::Format::WoeID.to(original_query) }.should_not raise_error(ArgumentError) + lambda { Barometer::Query::Format::WoeID.to(original_query) }.should_not raise_error(ArgumentError) end - + it "returns a Barometer::Query" do query = Barometer::Query.new(@geocode) - Query::Format::WoeID.to(query).is_a?(Barometer::Query).should be_true + Barometer::Query::Format::WoeID.to(query).is_a?(Barometer::Query).should be_true end - + it "converts from short_zipcode" do query = Barometer::Query.new(@short_zipcode) query.format.should == :short_zipcode - new_query = Query::Format::WoeID.to(query) + new_query = Barometer::Query::Format::WoeID.to(query) new_query.q.should == "2363796" new_query.country_code.should == "US" new_query.format.should == :woe_id new_query.geo.should_not be_nil end - + it "converts from zipcode" do query = Barometer::Query.new(@zipcode) query.format = :zipcode query.format.should == :zipcode - new_query = Query::Format::WoeID.to(query) + new_query = Barometer::Query::Format::WoeID.to(query) new_query.q.should == "2363796" new_query.country_code.should == "US" new_query.format.should == :woe_id new_query.geo.should_not be_nil end - + it "converts from postal code" do query = Barometer::Query.new(@postal_code) query.format = :postalcode query.format.should == :postalcode - new_query = Query::Format::WoeID.to(query) + new_query = Barometer::Query::Format::WoeID.to(query) new_query.q.should == "8676" new_query.country_code.should == "CA" new_query.format.should == :woe_id new_query.geo.should be_nil end - + it "converts from coordinates" do query = Barometer::Query.new(@coordinates) query.format.should == :coordinates - new_query = Query::Format::WoeID.to(query) - new_query.q.should == "2459115" + new_query = Barometer::Query::Format::WoeID.to(query) + new_query.q.should == "12589342" new_query.country_code.should be_nil new_query.format.should == :woe_id new_query.geo.should be_nil end - + it "converts from geocode" do query = Barometer::Query.new(@geocode) query.format.should == :geocode - new_query = Query::Format::WoeID.to(query) + new_query = Barometer::Query::Format::WoeID.to(query) new_query.q.should == "2459115" new_query.country_code.should be_nil new_query.format.should == :woe_id new_query.geo.should be_nil end - + it "converts from weather_id" do query = Barometer::Query.new(@weather_id) query.format.should == :weather_id - new_query = Query::Format::WoeID.to(query) + new_query = Barometer::Query::Format::WoeID.to(query) new_query.q.should == "2357024" new_query.country_code.should be_nil new_query.format.should == :woe_id new_query.geo.should be_nil end - + it "converts from icao" do query = Barometer::Query.new(@icao) query.format.should == :icao - new_query = Query::Format::WoeID.to(query) - new_query.q.should == "2451206" + new_query = Barometer::Query::Format::WoeID.to(query) + new_query.q.should == "2487956" new_query.country_code.should == "US" new_query.format.should == :woe_id new_query.geo.should_not be_nil end - end - end - -end \ No newline at end of file +end