# encoding:utf-8 shared_examples_for "GoogleAjax" do it "requires a referer" do GoogleAjax.referer = nil lambda{GoogleAjax::Search.web("testing")}.should raise_error end describe "::Search" do describe ".web" do before :each do GoogleAjax.referer = "http://example.com" @response = GoogleAjax::Search.web("apple", :rsz => :large) end it "returns the expected results" do @response['results'].select{|result| result['url'] =~ /http:(.*).apple.com/}.size.should >= 4 end end { :blogs => 100_000, :books => 10_000, :images => 10_000, :video => 10_000, :web => 1_000_000, :local => [100, 48.8565, 2.3509] }.each do |method, (min, *args)| describe ".#{method}" do before :each do GoogleAjax.referer = "http://example.com" @response_small = GoogleAjax::Search.send(method, "ruby", *args) end it "takes options into account" do @response_large = GoogleAjax::Search.send(method, "ruby", *(args+[{:rsz => :large}])) @response_large['results'].size.should > @response_small['results'].size end unless method == :blogs # Google doesn't seem to support this option for blogs??? it "returns an approximate count of hits" do @response_small.count.should > min end end end end describe "::Language" do before :each do GoogleAjax.referer = "http://example.com" end describe ".detect" do it "returns the right language" do GoogleAjax::Language.detect("What's up folks")['language'].should == "en" GoogleAjax::Language.detect("Montréal est une ville incroyable")['language'].should == "fr" end end describe ".translate" do it "does an approximate translation" do GoogleAjax::Language.translate("Ruby rocks", "en", "fr")['translatedText'].should == "Ruby roches" end end end describe "::Feed" do before :each do GoogleAjax.referer = "http://example.com" end describe ".find" do it "returns the right feeds" do feeds = GoogleAjax::Feed.find("Ruby") feeds.size.should == 10 feeds.any?{|result| result['url'] == "http://www.ruby-lang.org/en/feeds/news.rss"}.should be_true end end describe ".load" do it "loads entries of a feed" do feed = GoogleAjax::Feed.load('http://digg.com/rss/index.xml') feed['title'].should == "digg.com: Stories / Popular" feed['entries'].size.should == 4 end end describe ".lookup" do it "returns the feed associated with a URL" do feed = GoogleAjax::Feed.lookup("http://digg.com/") feed['url'].should == "http://feeds.digg.com/digg/popular.rss" end end end end