wordnik 0.4.4 → 0.4.5

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wordnik (0.4.2)
4
+ wordnik (0.4.5)
5
5
  activemodel (>= 3.0.3)
6
6
  addressable (>= 2.2.4)
7
7
  htmlentities (>= 4.2.4)
@@ -12,16 +12,16 @@ PATH
12
12
  GEM
13
13
  remote: http://rubygems.org/
14
14
  specs:
15
- activemodel (3.0.5)
16
- activesupport (= 3.0.5)
15
+ activemodel (3.0.6)
16
+ activesupport (= 3.0.6)
17
17
  builder (~> 2.1.2)
18
- i18n (~> 0.4)
19
- activesupport (3.0.5)
18
+ i18n (~> 0.5.0)
19
+ activesupport (3.0.6)
20
20
  addressable (2.2.4)
21
21
  builder (2.1.2)
22
22
  crack (0.1.8)
23
23
  diff-lcs (1.1.2)
24
- htmlentities (4.2.4)
24
+ htmlentities (4.3.0)
25
25
  i18n (0.5.0)
26
26
  json (1.5.1)
27
27
  mime-types (1.16)
@@ -165,14 +165,11 @@ module Wordnik
165
165
  :headers => self.headers.stringify_keys
166
166
  )
167
167
  end
168
-
169
- @response_obj = Response.new(response)
168
+ Response.new(response)
170
169
  end
171
170
 
172
- # If the request has been made, return the existing response
173
- # If not, make the request and return the response
174
171
  def response
175
- @response_obj || self.make
172
+ self.make
176
173
  end
177
174
 
178
175
  def response_code_pretty
@@ -58,11 +58,25 @@ module Wordnik
58
58
  # Ruby turns all key-value arguments at the end into a single hash
59
59
  # e.g. Wordnik.word.get_examples('dingo', :limit => 10, :part_of_speech => 'verb')
60
60
  # becomes {:limit => 10, :part_of_speech => 'verb'}
61
- params = args.last.is_a?(Hash) ? args.pop : {}
61
+ last_arg = args.pop if args.last.is_a?(Hash)
62
+ last_arg = args.pop if args.last.is_a?(Array)
63
+ last_arg ||= {}
64
+
65
+ if [:post, :put].include?(http_method)
66
+ params = nil
67
+ body = last_arg
68
+ else
69
+ params = last_arg
70
+ body = nil
71
+ end
62
72
 
63
73
  # Find the path that corresponds to this method nickname
64
74
  # e.g. post_words -> "/wordList.{format}/{wordListId}/words"
65
- path = self.path_for_operation_nickname(nickname)
75
+ begin
76
+ path = self.path_for_operation_nickname(nickname)
77
+ rescue
78
+ raise "Cannot find a resource path that corresponds to the method nickname '#{nickname}'"
79
+ end
66
80
 
67
81
  # Take the '.{format}' portion out of the string so it doesn't interfere with
68
82
  # the interpolation we're going to do on the path.
@@ -75,7 +89,7 @@ module Wordnik
75
89
 
76
90
  # TODO: treat kwargs as body instead of params if request method is post or put
77
91
 
78
- request = Wordnik::Request.new(http_method, path, :params => params)
92
+ request = Wordnik::Request.new(http_method, path, :params => params, :body => body)
79
93
 
80
94
  if build_only
81
95
  request
@@ -1,3 +1,3 @@
1
1
  module Wordnik
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -46,4 +46,4 @@ configure_wordnik
46
46
 
47
47
  # A random string to tack onto stuff to ensure we're not seeing
48
48
  # data from a previous test run
49
- RAND = ("a".."z").to_a.sample(4).join
49
+ RAND = ("a".."z").to_a.sample(8).join
data/spec/wordnik_spec.rb CHANGED
@@ -106,7 +106,19 @@ describe Wordnik do
106
106
  @request.query_string.should == "?limit=10&skip=2"
107
107
  end
108
108
 
109
- it "puts key-value arguments in the request body instead of the query params"
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
110
122
 
111
123
  end
112
124
 
@@ -114,28 +126,48 @@ describe Wordnik do
114
126
 
115
127
  before do
116
128
  configure_wordnik
117
- Wordnik.authenticate
129
+ Wordnik.authenticate
130
+ @permalink = "wordnik-ruby-test-list-#{RAND}"
118
131
  end
119
132
 
120
133
  it "creates a wordlist" do
121
134
  body = {
122
- :name=> "Wordnik Ruby Test List #{RAND}",
135
+ :name => "Wordnik Ruby Test List #{RAND}",
123
136
  :description => 'This is created by the test suite.',
124
137
  :type => 'PUBLIC',
125
138
  :user_id => Wordnik.configuration.user_id
126
139
  }
127
- request = Wordnik::Request.new(:post, "wordLists", :body => body)
128
- request.response.body.should be_a_kind_of(Hash)
129
- request.response.body.should have_key('permalink')
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
130
151
  end
131
152
 
132
- it "finds the new wordlist" do
153
+ it "finds the new wordlist (method 2, among user's wordlists)" do
133
154
  lists = Wordnik.account.get_word_lists
134
155
  permalinks = lists.map { |list| list['permalink'] }
135
- permalinks.should include("wordnik-ruby-test-list-#{RAND}")
156
+ permalinks.should include(@permalink)
136
157
  end
137
158
 
138
- it "finds the new wordlist and adds words to it"
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
139
171
 
140
172
  it "updates words"
141
173
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: wordnik
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.4
5
+ version: 0.4.5
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-06 00:00:00 -07:00
14
+ date: 2011-04-21 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency