summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo k <mo@mokhan.ca>2012-05-23 20:18:08 -0600
committermo k <mo@mokhan.ca>2012-05-23 20:18:08 -0600
commit32dd0fbe629c7677685eb5e338857f451399702e (patch)
tree07bc49bf58f5dfb83280ebfdfd9033715a9f7b17
parentb5576edf06eedefd0e3696323341048afc0f0591 (diff)
add search engine class.
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock7
-rw-r--r--HD0vXrvkPvXEjNNm55aSzgu5KB2ClFFWTw7cqLZtnDg=0
-rw-r--r--app/services/search_engine.rb6
-rw-r--r--features/step_definitions/search_steps.rb2
-rw-r--r--spec/services/search_engine_spec.rb13
-rw-r--r--spec/vcr_helper.rb5
7 files changed, 33 insertions, 1 deletions
diff --git a/Gemfile b/Gemfile
index d2d8252..331836f 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,6 +2,7 @@ source 'https://rubygems.org'
gem 'rails', '3.2.3'
gem 'sqlite3'
+gem 'rbing'
# Gems used only for assets and not required
# in production environments by default.
diff --git a/Gemfile.lock b/Gemfile.lock
index 155e517..7c83f72 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -75,6 +75,9 @@ GEM
guard (>= 0.10.0)
spork (>= 0.8.4)
hike (1.2.1)
+ httparty (0.8.3)
+ multi_json (~> 1.0)
+ multi_xml
i18n (0.6.0)
journey (1.0.3)
jquery-rails (2.0.2)
@@ -89,6 +92,7 @@ GEM
treetop (~> 1.4.8)
mime-types (1.18)
multi_json (1.3.5)
+ multi_xml (0.5.1)
nokogiri (1.5.2)
polyglot (0.3.3)
rack (1.4.1)
@@ -114,6 +118,8 @@ GEM
rdoc (~> 3.4)
thor (~> 0.14.6)
rake (0.9.2.2)
+ rbing (1.1.0)
+ httparty (>= 0.4.0)
rdoc (3.12)
json (~> 1.4)
rspec (2.10.0)
@@ -174,6 +180,7 @@ DEPENDENCIES
guard-spork
jquery-rails
rails (= 3.2.3)
+ rbing
rspec-rails
sass-rails (~> 3.2.3)
sqlite3
diff --git a/HD0vXrvkPvXEjNNm55aSzgu5KB2ClFFWTw7cqLZtnDg= b/HD0vXrvkPvXEjNNm55aSzgu5KB2ClFFWTw7cqLZtnDg=
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/HD0vXrvkPvXEjNNm55aSzgu5KB2ClFFWTw7cqLZtnDg=
diff --git a/app/services/search_engine.rb b/app/services/search_engine.rb
index 8dcdc2c..fad1da3 100644
--- a/app/services/search_engine.rb
+++ b/app/services/search_engine.rb
@@ -1,2 +1,8 @@
+require "rbing"
+
class SearchEngine
+ def self.count_results(query)
+ bing = RBing.new(ENV.fetch("BING_APP_ID"))
+ bing.web(query).web.total
+ end
end
diff --git a/features/step_definitions/search_steps.rb b/features/step_definitions/search_steps.rb
index d42b3e0..67a1481 100644
--- a/features/step_definitions/search_steps.rb
+++ b/features/step_definitions/search_steps.rb
@@ -4,5 +4,5 @@ When /^I search for (.*)$/ do |term|
end
Then /^apple should have a higher score than microsoft$/ do
- pending
+ @scores["apple"].should == be > @scores["micrsoft"]
end
diff --git a/spec/services/search_engine_spec.rb b/spec/services/search_engine_spec.rb
new file mode 100644
index 0000000..8c40af0
--- /dev/null
+++ b/spec/services/search_engine_spec.rb
@@ -0,0 +1,13 @@
+require "rbing"
+require "vcr"
+require_relative '../../app/services/search_engine'
+
+describe SearchEngine do
+ it "counts results" do
+ VCR.use_cassette("windows-vs-beos") do
+ windows = SearchEngine.count_results("windows")
+ beos = SearchEngine.count_results("beos")
+ windows.should be > beos
+ end
+ end
+end
diff --git a/spec/vcr_helper.rb b/spec/vcr_helper.rb
new file mode 100644
index 0000000..fa01e56
--- /dev/null
+++ b/spec/vcr_helper.rb
@@ -0,0 +1,5 @@
+VCR.config do |config|
+ config.cassette_library_dir = "fixtures/cassettes"
+ config.stub_with :webmock
+ config.filter_sensitive_data("<BING_APP_ID>") { ENV.fetch("BING_APP_ID") }
+end