spec/weather_services/services_spec.rb in barometer-0.7.3 vs spec/weather_services/services_spec.rb in barometer-0.8.0
- old
+ new
@@ -1,58 +1,54 @@
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-describe "WeatherServices" do
-
+describe Barometer::WeatherService, :vcr => {
+ :cassette_name => "WeatherService"
+} do
before(:each) do
query_term = "Calgary,AB"
@query = Barometer::Query.new(query_term)
@service = Barometer::WeatherService.source(:wunderground)
@time = Time.now
end
-
+
describe "and the class method" do
-
describe "source" do
-
it "responds" do
Barometer::WeatherService.respond_to?("source").should be_true
end
-
+
it "requires a Symbol or String" do
lambda { Barometer::WeatherService.source }.should raise_error(ArgumentError)
lambda { Barometer::WeatherService.source(1) }.should raise_error(ArgumentError)
-
+
lambda { Barometer::WeatherService.source("wunderground") }.should_not raise_error(ArgumentError)
lambda { Barometer::WeatherService.source(:wunderground) }.should_not raise_error(ArgumentError)
end
-
+
it "raises an error if source doesn't exist" do
lambda { Barometer::WeatherService.source(:not_valid) }.should raise_error(ArgumentError)
lambda { Barometer::WeatherService.source(:wunderground) }.should_not raise_error(ArgumentError)
end
-
+
it "returns the corresponding Service object" do
Barometer::WeatherService.source(:wunderground).should == Barometer::WeatherService::Wunderground
Barometer::WeatherService.source(:wunderground).superclass.should == Barometer::WeatherService
end
-
+
it "raises an error when retrieving the wrong class" do
lambda { Barometer::WeatherService.source(:temperature) }.should raise_error(ArgumentError)
end
-
end
-
end
-
+
describe "when initialized" do
-
before(:each) do
@service = Barometer::WeatherService.new
@measurement = Barometer::Measurement.new
@query = Barometer::Query.new("test")
end
-
+
it "defaults _meets_requirements?" do
Barometer::WeatherService.send("_meets_requirements?").should be_true
end
it "stubs _source_name" do
@@ -60,84 +56,80 @@
end
it "stubs _accepted_formats" do
lambda { Barometer::WeatherService.send("_accepted_formats") }.should raise_error(NotImplementedError)
end
-
+
it "stubs _measure" do
Barometer::WeatherService._measure(@measurement,@query,true).is_a?(Barometer::Measurement).should be_true
end
-
+
it "stubs _build_extra" do
Barometer::WeatherService._build_extra.should be_nil
end
-
+
it "stubs _fetch" do
Barometer::WeatherService._fetch.should be_nil
end
-
+
it "stubs _build_current" do
Barometer::WeatherService._build_current.should be_nil
end
-
+
it "stubs _build_forecast" do
Barometer::WeatherService._build_forecast.should be_nil
end
-
+
it "stubs _build_location" do
Barometer::WeatherService._build_location.should be_nil
end
-
+
it "stubs _build_sun" do
Barometer::WeatherService._build_sun.should be_nil
end
-
+
it "stubs _build_links" do
Barometer::WeatherService._build_links.should == {}
end
-
+
it "defaults _supports_country?" do
Barometer::WeatherService._supports_country?.should be_true
end
-
+
it "defaults _requires_keys?" do
Barometer::WeatherService._requires_keys?.should be_false
end
-
+
it "defaults _has_keys?" do
lambda { Barometer::WeatherService._has_keys? }.should raise_error(NotImplementedError)
end
-
end
-
+
describe "when measuring," do
-
it "responds to measure" do
Barometer::WeatherService.respond_to?("measure").should be_true
end
-
+
# since Barometer::WeatherService defines the measure method, you could actually just
# call Barometer::WeatherService.measure ... but this will not invoke a specific
# weather API driver. Make sure this usage raises an error.
it "requires an actuall driver" do
lambda { Barometer::WeatherService.measure(@query) }.should raise_error(NotImplementedError)
end
-
+
it "requires a Barometer::Query object" do
lambda { Barometer::WeatherService.measure("invalid") }.should raise_error(ArgumentError)
@query.is_a?(Barometer::Query).should be_true
lambda { Barometer::WeatherService.measure(@query) }.should_not raise_error(ArgumentError)
end
-
+
it "returns a Barometer::Measurement object" do
@service.measure(@query).is_a?(Barometer::Measurement).should be_true
end
-
+
it "returns current and future" do
measurement = @service.measure(@query)
measurement.current.is_a?(Barometer::Measurement::Result).should be_true
measurement.forecast.is_a?(Array).should be_true
end
-
end
-
-end
\ No newline at end of file
+end