wordnik 0.4.5 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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