alexrabarts-term_extraction 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :minor: 1
3
- :patch: 2
3
+ :patch: 3
4
4
  :major: 0
@@ -1,4 +1,6 @@
1
1
  require 'nokogiri'
2
+ require 'addressable/uri'
3
+ require 'open-uri'
2
4
 
3
5
  class TermExtraction
4
6
  class Yahoo < TermExtraction
@@ -13,7 +15,17 @@ class TermExtraction
13
15
  end
14
16
 
15
17
  terms
16
- end
18
+ end
19
+
20
+ def uri
21
+ api_uri = Addressable::URI.parse(gateway)
22
+ api_uri.query_values = {
23
+ 'appid' => @api_key,
24
+ 'output' => 'xml',
25
+ 'context' => @context
26
+ }
27
+ api_uri
28
+ end
17
29
 
18
30
  class << self
19
31
  def canonical_name
@@ -30,19 +42,8 @@ class TermExtraction
30
42
  'http://search.yahooapis.com/ContentAnalysisService/V1/termExtraction'
31
43
  end
32
44
 
33
- def url
34
- uri = Addressable::URI.parse(gateway)
35
- uri.query_values = {
36
- # TODO: Change appid to the BMP one
37
- 'appid' => @api_key,
38
- 'output' => 'xml',
39
- 'context' => @context
40
- }
41
- uri
42
- end
43
-
44
45
  def remote_xml
45
- open(url).read
46
+ open(uri).read
46
47
  end
47
48
  end
48
49
  end
@@ -1,5 +1,6 @@
1
1
  require 'net/http'
2
2
  require 'nokogiri'
3
+ require 'addressable/uri'
3
4
 
4
5
  class TermExtraction
5
6
  class Zemanta < TermExtraction
@@ -14,6 +15,20 @@ class TermExtraction
14
15
  terms
15
16
  end
16
17
 
18
+ def uri
19
+ Addressable::URI.parse(gateway)
20
+ end
21
+
22
+ def post_params
23
+ {
24
+ 'method' =>'zemanta.suggest',
25
+ 'api_key' => @api_key,
26
+ 'return_images' => 0,
27
+ 'text' => @context,
28
+ 'format' => 'xml'
29
+ }
30
+ end
31
+
17
32
  class << self
18
33
  def canonical_name
19
34
  'zemanta'
@@ -25,22 +40,8 @@ class TermExtraction
25
40
  'http://api.zemanta.com/services/rest/0.0/'
26
41
  end
27
42
 
28
- def url
29
- URI.parse(gateway)
30
- end
31
-
32
- def post_params
33
- {
34
- 'method' =>'zemanta.suggest',
35
- 'api_key' => @api_key,
36
- 'return_images' => 0,
37
- 'text' => @context,
38
- 'format' => 'xml'
39
- }
40
- end
41
-
42
43
  def remote_xml
43
- Net::HTTP.post_form(url, post_params).body
44
+ Net::HTTP.post_form(uri, post_params).body
44
45
  end
45
46
  end
46
47
  end
@@ -3,13 +3,13 @@ require File.dirname(__FILE__) + '/test_helper'
3
3
  class TermExtractionTest < Test::Unit::TestCase
4
4
  should 'return correct terms from Yahoo!' do
5
5
  yahoo = TermExtraction::Yahoo.new
6
- yahoo.stubs(:remote_xml).returns(read_xml_fixture('yahoo'))
6
+ fake_uri(:get, yahoo.uri, 'yahoo.xml')
7
7
  assert_equal yahoo.terms, correct_yahoo_terms
8
8
  end
9
9
 
10
10
  should 'return correct terms from Zemanta' do
11
11
  zemanta = TermExtraction::Zemanta.new
12
- zemanta.stubs(:remote_xml).returns(read_xml_fixture('zemanta'))
12
+ fake_uri(:post, zemanta.uri, 'zemanta.xml')
13
13
  assert_equal zemanta.terms, correct_zemanta_terms
14
14
  end
15
15
 
@@ -29,20 +29,28 @@ class TermExtractionTest < Test::Unit::TestCase
29
29
 
30
30
  should 'return different response on subsequent calls when different data is returned from Yahoo!' do
31
31
  yahoo = TermExtraction::Yahoo.new
32
- yahoo.stubs(:remote_xml).returns(read_xml_fixture('yahoo'))
32
+ fake_uri(:get, yahoo.uri, 'yahoo.xml')
33
33
  original_terms = yahoo.terms
34
- yahoo.stubs(:remote_xml).returns(read_xml_fixture('yahoo2'))
34
+ fake_uri(:get, yahoo.uri, 'yahoo2.xml')
35
35
  assert_not_equal original_terms, yahoo.terms
36
36
  end
37
37
 
38
38
  should 'return different response on subsequent calls when different data is returned from Zemanta' do
39
39
  zemanta = TermExtraction::Zemanta.new
40
- zemanta.stubs(:remote_xml).returns(read_xml_fixture('zemanta'))
40
+ fake_uri(:post, zemanta.uri, 'zemanta.xml')
41
41
  original_terms = zemanta.terms
42
- zemanta.stubs(:remote_xml).returns(read_xml_fixture('zemanta2'))
42
+ fake_uri(:post, zemanta.uri, 'zemanta2.xml')
43
43
  assert_not_equal original_terms, zemanta.terms
44
44
  end
45
45
 
46
+ context 'Yahoo!' do
47
+ should 'be able to handle a context with "%" in it' do
48
+ yahoo = TermExtraction::Yahoo.new(:context => '%')
49
+ fake_uri(:get, yahoo.uri, 'yahoo.xml')
50
+ assert_nothing_thrown{ yahoo.terms }
51
+ end
52
+ end
53
+
46
54
  private
47
55
  def correct_yahoo_terms
48
56
  ['gears of war', 'gears']
data/test/test_helper.rb CHANGED
@@ -2,12 +2,21 @@ require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'shoulda'
4
4
  require 'mocha'
5
+ require 'fake_web'
5
6
 
6
7
  $LOAD_PATH.unshift(File.dirname(__FILE__))
7
8
  require 'term_extraction'
8
9
 
9
10
  class Test::Unit::TestCase
10
- def read_xml_fixture(name)
11
- File.read("test/fixtures/#{name}.xml")
11
+ def fake_uri(method, uri, fixture)
12
+ FakeWeb.clean_registry
13
+ FakeWeb.allow_net_connect = false
14
+ response = File.open(File.join(File.dirname(__FILE__), 'fixtures', fixture)).read
15
+ FakeWeb.register_uri(method, uri.to_s, :string => response)
16
+ end
17
+
18
+ def teardown
19
+ FakeWeb.allow_net_connect = true
20
+ FakeWeb.clean_registry
12
21
  end
13
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alexrabarts-term_extraction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - alex
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-05 00:00:00 -08:00
12
+ date: 2009-03-17 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency