wordnik 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ describe Wordnik::Resource do
4
4
 
5
5
  before(:each) do
6
6
  VCR.use_cassette('words', :record => :new_episodes) do
7
- @response = Typhoeus::Request.get("http://api.wordnik.com/v4/word.json")
7
+ @response = Typhoeus::Request.get("http://beta.wordnik.com/v4/word.json")
8
8
  end
9
9
 
10
10
  @default_params = {
@@ -22,10 +22,139 @@ describe Wordnik::Resource do
22
22
  end
23
23
 
24
24
  it "sets endpoints" do
25
- @resource.endpoints.size.should == 10
25
+ @resource.endpoints.size.should >= 10
26
26
  @resource.endpoints.first.class.should == Wordnik::Endpoint
27
27
  end
28
+
29
+ it "defines a method for each operation nickname" do
30
+ @resource.public_methods.should include(:get_word)
31
+ @resource.public_methods.should include(:get_definitions)
32
+ @resource.public_methods.should include(:contextual_lookup_post)
33
+ @resource.public_methods.should_not include(:get_busy)
34
+ end
28
35
 
29
36
  end
37
+
38
+ describe "auto-generated methods" do
39
+
40
+ before(:each) do
41
+ configure_wordnik
42
+ Wordnik.authenticate
43
+ end
30
44
 
45
+ it "builds requests but doesn't run them if :request_only is passed" do
46
+ @request = Wordnik.word.get_word('dynamo', :request_only => true)
47
+ @request.class.should == Wordnik::Request
48
+ end
49
+
50
+ it "runs requests and returns their body if :request_only is absent" do
51
+ @response_body = Wordnik.word.get_word('dynamo')
52
+ @response_body.class.should == Hash
53
+ @response_body.keys.sort.should == %w(canonicalForm word)
54
+ end
55
+
56
+ it "allows the same auto-generated method to be called with different parameters" do
57
+ request1 = Wordnik.word_list.get_word_list_by_id('dog', :request_only => true)
58
+ request2 = Wordnik.word_list.get_word_list_by_id('cat', :request_only => true)
59
+ request1.path.should_not == request2.path
60
+ end
61
+
62
+ context "argument handling" do
63
+
64
+ before(:each) do
65
+ @request = Wordnik.word.get_examples('dynamo', :skip => 2, :limit => 10, :request_only => true)
66
+ end
67
+
68
+ it "injects required arguments into the path" do
69
+ @request.path.should == "/word/dynamo/examples"
70
+ end
71
+
72
+ it "passes optional key-value arguments to the query string" do
73
+ @request.query_string.should == "?limit=10&skip=2"
74
+ end
75
+
76
+ it "puts key-value arguments in the request body instead of the query params for POSTs and PUTs" do
77
+ body = {
78
+ :name => "Wordnik Ruby Test List #{RAND}",
79
+ :description => 'This is created by the test suite.',
80
+ :type => 'PUBLIC',
81
+ :user_id => Wordnik.configuration.user_id,
82
+ :request_only => true
83
+ }
84
+ @request = Wordnik.word_lists.create_word_list(body)
85
+ @request.body.should have_key(:name)
86
+ @request.body.should have_key(:description)
87
+ @request.body.should have_key(:type)
88
+ @request.body.should have_key(:userId)
89
+ end
90
+
91
+ end
92
+
93
+ context "response transmogrification" do
94
+
95
+ it "converts definitions response into an array of definition objects" # do
96
+ # defs = Wordnik.word.get_definitions('boogaloo')
97
+ # defs.should be_an(Array)
98
+ # defs.first.should be_a(Wordnik::Definition)
99
+ # end
100
+
101
+ end
102
+
103
+ end
104
+
105
+ context "wordlists" do
106
+
107
+ before do
108
+ configure_wordnik
109
+ Wordnik.authenticate
110
+ @permalink = "wordnik-ruby-test-list-#{RAND}"
111
+ end
112
+
113
+ it "creates a wordlist" do
114
+ body = {
115
+ :name => "Wordnik Ruby Test List #{RAND}",
116
+ :description => 'This is created by the test suite.',
117
+ :type => 'PUBLIC',
118
+ :user_id => Wordnik.configuration.user_id,
119
+ :request_only => true
120
+ }
121
+ request = Wordnik.word_lists.create_word_list(body)
122
+ response = request.response
123
+ response.body.should be_a_kind_of(Hash)
124
+ response.body.should have_key('permalink')
125
+ response.body['permalink'].should == @permalink
126
+ end
127
+
128
+ it "finds the new wordlist (method 1, using the wordList resource)" do
129
+ list = Wordnik.word_list.get_word_list_by_id(@permalink)
130
+ list.should have_key('permalink')
131
+ list['permalink'].should == @permalink
132
+ end
133
+
134
+ it "finds the new wordlist (method 2, among user's wordlists)" do
135
+ lists = Wordnik.account.get_word_lists_for_current_user
136
+ permalinks = lists.map { |list| list['permalink'] }
137
+ permalinks.should include(@permalink)
138
+ end
139
+
140
+ it "adds words to it" #do
141
+ # body = [
142
+ # {:word => 'foo'},
143
+ # {:word => 'bar'},
144
+ # {:word => 'metasyntactic'},
145
+ # ]
146
+ # request = Wordnik.word_list.post_words(@permalink, body)
147
+ # # raise request.response.inspect
148
+ #
149
+ # list = Wordnik.word_list.get(@permalink)
150
+ # # raise list.inspect
151
+ # end
152
+
153
+ it "updates words"
154
+
155
+ it "get all the words"
156
+
157
+ it "deletes a wordlist"
158
+
159
+ end
31
160
  end
@@ -5,7 +5,7 @@ describe Wordnik::Response do
5
5
  before(:each) do
6
6
 
7
7
  VCR.use_cassette('default_response_request', :record => :new_episodes) do
8
- @raw = Typhoeus::Request.get("http://api.wordnik.com/v4/word.json")
8
+ @raw = Typhoeus::Request.get("http://beta.wordnik.com/v4/word.json")
9
9
  end
10
10
 
11
11
  @response = Wordnik::Response.new(@raw)
@@ -37,7 +37,7 @@ describe Wordnik::Response do
37
37
 
38
38
  it "recognizes xml" do
39
39
  VCR.use_cassette('xml_response_request', :record => :new_episodes) do
40
- @raw = Typhoeus::Request.get("http://api.wordnik.com/v4/word.xml/help")
40
+ @raw = Typhoeus::Request.get("http://beta.wordnik.com/v4/word.xml/help")
41
41
  end
42
42
  @response = Wordnik::Response.new(@raw)
43
43
  @response.format.should == :xml
@@ -63,7 +63,7 @@ describe Wordnik::Response do
63
63
 
64
64
  it "has a pretty xml body" do
65
65
  VCR.use_cassette('xml_response_request', :record => :new_episodes) do
66
- @raw = Typhoeus::Request.get("http://api.wordnik.com/v4/word.xml/help")
66
+ @raw = Typhoeus::Request.get("http://beta.wordnik.com/v4/word.xml/help")
67
67
  end
68
68
  @response = Wordnik::Response.new(@raw)
69
69
  @response.pretty_body.should =~ /\?xml/
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,7 @@ require 'vcr'
5
5
  require 'typhoeus'
6
6
  require 'json'
7
7
  require 'yaml'
8
+ require 'rspec'
8
9
 
9
10
  RSpec.configure do |config|
10
11
  # some (optional) config here
data/spec/wordnik_spec.rb CHANGED
@@ -1,4 +1,5 @@
1
- require 'spec_helper'
1
+ # require 'spec_helper'
2
+ require File.dirname(__FILE__) + '/spec_helper'
2
3
 
3
4
  describe Wordnik do
4
5
 
@@ -22,7 +23,7 @@ describe Wordnik do
22
23
  end
23
24
 
24
25
  it "assigns resource keys that match the resource names" do
25
- Wordnik.resources[:word].name.should == :word
26
+ Wordnik.resources[:word].name.should == :word
26
27
  end
27
28
 
28
29
  end
@@ -74,109 +75,9 @@ describe Wordnik do
74
75
 
75
76
  end
76
77
 
77
- context "dynamic method_missing magic" do
78
-
79
- it "maps shorthand Wordnik.resource calls to their resources" do
80
- Wordnik.word.class.should == Wordnik::Resource
81
- Wordnik.word.name.should == :word
82
- end
83
-
84
- it "builds requests but doesn't run them if method name begins with 'build_'" do
85
- @request = Wordnik.word.build_get('dynamo')
86
- @request.class.should == Wordnik::Request
87
- end
88
-
89
- it "runs requests and returns their body if method name doesn't begin with 'build_'" do
90
- @response_body = Wordnik.word.get('dynamo')
91
- @response_body.class.should == Hash
92
- @response_body.keys.sort.should == %w(canonicalForm word)
93
- end
94
-
95
- context "argument handling" do
96
-
97
- before(:each) do
98
- @request = Wordnik.word.build_get_examples('dynamo', :skip => 2, :limit => 10)
99
- end
100
-
101
- it "injects required arguments into the path" do
102
- @request.path.should == "/word/dynamo/examples"
103
- end
104
-
105
- it "passes optional key-value arguments to the query string" do
106
- @request.query_string.should == "?limit=10&skip=2"
107
- end
108
-
109
- it "puts key-value arguments in the request body instead of the query params for POSTs and PUTs" do
110
- body = {
111
- :name => "Wordnik Ruby Test List #{RAND}",
112
- :description => 'This is created by the test suite.',
113
- :type => 'PUBLIC',
114
- :user_id => Wordnik.configuration.user_id
115
- }
116
- @request = Wordnik.word_lists.build_post(body)
117
- @request.body.should have_key(:name)
118
- @request.body.should have_key(:description)
119
- @request.body.should have_key(:type)
120
- @request.body.should have_key(:userId)
121
- end
122
-
123
- end
124
-
125
- context "wordlists" do
126
-
127
- before do
128
- configure_wordnik
129
- Wordnik.authenticate
130
- @permalink = "wordnik-ruby-test-list-#{RAND}"
131
- end
132
-
133
- it "creates a wordlist" do
134
- body = {
135
- :name => "Wordnik Ruby Test List #{RAND}",
136
- :description => 'This is created by the test suite.',
137
- :type => 'PUBLIC',
138
- :user_id => Wordnik.configuration.user_id
139
- }
140
- request = Wordnik.word_lists.build_post(body)
141
- response = request.response
142
- response.body.should be_a_kind_of(Hash)
143
- response.body.should have_key('permalink')
144
- response.body['permalink'].should == @permalink
145
- end
146
-
147
- it "finds the new wordlist (method 1, using the wordList resource)" do
148
- list = Wordnik.word_list.get(@permalink)
149
- list.should have_key('permalink')
150
- list['permalink'].should == @permalink
151
- end
152
-
153
- it "finds the new wordlist (method 2, among user's wordlists)" do
154
- lists = Wordnik.account.get_word_lists
155
- permalinks = lists.map { |list| list['permalink'] }
156
- permalinks.should include(@permalink)
157
- end
158
-
159
- it "adds words to it" do
160
- body = [
161
- {:word => 'foo'},
162
- {:word => 'bar'},
163
- {:word => 'metasyntactic'},
164
- ]
165
- request = Wordnik.word_list.build_post_words(@permalink, body)
166
- # raise request.response.inspect
167
-
168
- list = Wordnik.word_list.get(@permalink)
169
- # raise list.inspect
170
- end
171
-
172
- it "updates words"
173
-
174
- it "get all the words"
175
-
176
- it "deletes a wordlist"
177
-
178
- end
179
-
180
- end
78
+ it "maps shorthand Wordnik.resource calls to their resources" do
79
+ Wordnik.word.class.should == Wordnik::Resource
80
+ Wordnik.word.name.should == :word
81
+ end
181
82
 
182
83
  end
data/wordnik.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency 'activemodel', '>=3.0.3'
22
22
  s.add_dependency 'json', '>=1.4.6'
23
23
 
24
- s.add_development_dependency 'rspec', '>=2.4.0'
24
+ s.add_development_dependency 'rspec', '>=2.5.0'
25
25
  s.add_development_dependency 'vcr', '>=1.5.1'
26
26
  s.add_development_dependency 'webmock', '>=1.6.2'
27
27
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: wordnik
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.5
5
+ version: 0.4.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Zeke Sikelianos
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-04-21 00:00:00 -07:00
14
+ date: 2011-05-03 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -88,7 +88,7 @@ dependencies:
88
88
  requirements:
89
89
  - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: 2.4.0
91
+ version: 2.5.0
92
92
  type: :development
93
93
  version_requirements: *id007
94
94
  - !ruby/object:Gem::Dependency
@@ -125,6 +125,7 @@ extra_rdoc_files: []
125
125
 
126
126
  files:
127
127
  - .gitignore
128
+ - .rspec-tm
128
129
  - Gemfile
129
130
  - Gemfile.lock
130
131
  - README.md
@@ -151,6 +152,13 @@ files:
151
152
  - lib/wordnik/operation_parameter.rb
152
153
  - lib/wordnik/request.rb
153
154
  - lib/wordnik/resource.rb
155
+ - lib/wordnik/resource_modules/account.rb
156
+ - lib/wordnik/resource_modules/system.rb
157
+ - lib/wordnik/resource_modules/user.rb
158
+ - lib/wordnik/resource_modules/word.rb
159
+ - lib/wordnik/resource_modules/word_list.rb
160
+ - lib/wordnik/resource_modules/word_lists.rb
161
+ - lib/wordnik/resource_modules/words.rb
154
162
  - lib/wordnik/response.rb
155
163
  - lib/wordnik/version.rb
156
164
  - spec/active_support_spec.rb