harpy 1.0.0 → 1.1.0

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.
@@ -5,7 +5,7 @@ describe Harpy::EntryPoint do
5
5
  subject { Harpy::EntryPoint.new url}
6
6
 
7
7
  it "should store url" do
8
- subject.url.should == url
8
+ expect(subject.url).to eq(url)
9
9
  end
10
10
 
11
11
  describe "#resource_url(resource_type)" do
@@ -14,20 +14,20 @@ describe Harpy::EntryPoint do
14
14
  let(:success_response) { Typhoeus::Response.new :code => 200, :body => json_response }
15
15
  let(:error_response) { Typhoeus::Response.new :code => 500 }
16
16
  it "gets entry point from url using client" do
17
- Harpy.client.should_receive(:get).with(url).and_return success_response
17
+ expect(Harpy.client).to receive(:get).with(url).and_return success_response
18
18
  subject.resource_url "user"
19
19
  end
20
20
  it "return nil if no link for resource_type" do
21
- Harpy.client.should_receive(:get).with(url).and_return success_response
22
- subject.resource_url("user").should be_nil
21
+ expect(Harpy.client).to receive(:get).with(url).and_return success_response
22
+ expect(subject.resource_url("user")).to be_nil
23
23
  end
24
24
  it "return url for existing resource_type" do
25
- Harpy.client.should_receive(:get).with(url).and_return success_response
26
- subject.resource_url("company_url").should be_nil
25
+ expect(Harpy.client).to receive(:get).with(url).and_return success_response
26
+ expect(subject.resource_url("company_url")).to be_nil
27
27
  end
28
28
  it "delegates response code != 200 to client" do
29
- Harpy.client.should_receive(:get).with(url).and_return error_response
30
- Harpy.client.should_receive(:invalid_code).with error_response
29
+ expect(Harpy.client).to receive(:get).with(url).and_return error_response
30
+ expect(Harpy.client).to receive(:invalid_code).with error_response
31
31
  subject.resource_url("company_url")
32
32
  end
33
33
  end
@@ -39,16 +39,16 @@ describe Harpy::EntryPoint do
39
39
  let(:error_response) { Typhoeus::Response.new :code => 500 }
40
40
  let(:not_found_response) { Typhoeus::Response.new :code => 404 }
41
41
  it "query remote for this urn using client" do
42
- Harpy.client.should_receive(:get).with("#{url}/#{urn}").and_return success_response
43
- subject.urn(urn).should == company_url
42
+ expect(Harpy.client).to receive(:get).with("#{url}/#{urn}").and_return success_response
43
+ expect(subject.urn(urn)).to eq(company_url)
44
44
  end
45
45
  it "return nil if not found" do
46
- Harpy.client.should_receive(:get).with("#{url}/#{urn}").and_return not_found_response
47
- subject.urn(urn).should be_nil
46
+ expect(Harpy.client).to receive(:get).with("#{url}/#{urn}").and_return not_found_response
47
+ expect(subject.urn(urn)).to be_nil
48
48
  end
49
49
  it "delegates response code != 301 or 404 to client" do
50
- Harpy.client.should_receive(:get).with("#{url}/#{urn}").and_return error_response
51
- Harpy.client.should_receive(:invalid_code).with error_response
50
+ expect(Harpy.client).to receive(:get).with("#{url}/#{urn}").and_return error_response
51
+ expect(Harpy.client).to receive(:invalid_code).with error_response
52
52
  subject.urn(urn)
53
53
  end
54
54
  end
@@ -8,9 +8,9 @@ describe Harpy::Resource do
8
8
  it "queries multiple resources in parallel and return instances" do
9
9
  Typhoeus.stub(company_url, method: :get){ success_response }
10
10
  responses = Harpy::Resource.from_url({ Harpy::Spec::Company => [company_url] })
11
- responses.should have(1).keys
12
- responses[Harpy::Spec::Company].should have(1).item
13
- responses[Harpy::Spec::Company].first.name.should == "Harpy ltd"
11
+ expect(responses.size).to eq(1)
12
+ expect(responses[Harpy::Spec::Company].size).to eq(1)
13
+ expect(responses[Harpy::Spec::Company].first.name).to eq("Harpy ltd")
14
14
  end
15
15
  end
16
16
  end
@@ -35,7 +35,7 @@ module Harpy
35
35
  super
36
36
  end
37
37
  def check_lastname
38
- !!lastname
38
+ throw :abort unless lastname
39
39
  end
40
40
  def callback_before_save
41
41
  @callbacks << :save
@@ -67,21 +67,21 @@ describe "class including Harpy::Resource" do
67
67
  ]
68
68
  }
69
69
  eos
70
- Harpy.client.should_receive(:get).with(url).and_return response
70
+ expect(Harpy.client).to receive(:get).with(url).and_return response
71
71
  result = Harpy::Spec::Company.from_url url
72
- result.should be_kind_of Harpy::Spec::Company
73
- result.name.should == "Harpy Ltd"
74
- result.link("self").should == url
72
+ expect(result).to be_kind_of Harpy::Spec::Company
73
+ expect(result.name).to eq("Harpy Ltd")
74
+ expect(result.link("self")).to eq(url)
75
75
  end
76
76
  it "is nil when not found" do
77
77
  response = Typhoeus::Response.new :code => 404
78
- Harpy.client.should_receive(:get).with(url).and_return response
79
- Harpy::Spec::Company.from_url(url).should be_nil
78
+ expect(Harpy.client).to receive(:get).with(url).and_return response
79
+ expect(Harpy::Spec::Company.from_url(url)).to be_nil
80
80
  end
81
81
  it "delegates response code != 200 or 404 to client" do
82
82
  response = Typhoeus::Response.new :code => 500
83
- Harpy.client.should_receive(:get).with(url).and_return response
84
- Harpy.client.should_receive(:invalid_code).with response
83
+ expect(Harpy.client).to receive(:get).with(url).and_return response
84
+ expect(Harpy.client).to receive(:invalid_code).with response
85
85
  Harpy::Spec::Company.from_url(url)
86
86
  end
87
87
  end
@@ -108,22 +108,22 @@ describe "class including Harpy::Resource" do
108
108
  Typhoeus.stub(url1, method: :get){ response1 }
109
109
  Typhoeus.stub(url2, method: :get){ response2 }
110
110
  results = Harpy::Spec::Company.from_url [url1, url2]
111
- results.should have(2).items
112
- results[0].should be_kind_of Harpy::Spec::Company
113
- results[0].name.should == "Harpy Ltd"
114
- results[0].link("self").should == url1
115
- results[1].should be_kind_of Harpy::Spec::Company
116
- results[1].name.should == "Harpy Inc"
117
- results[1].link("self").should == url2
111
+ expect(results.size).to eq(2)
112
+ expect(results[0]).to be_kind_of Harpy::Spec::Company
113
+ expect(results[0].name).to eq("Harpy Ltd")
114
+ expect(results[0].link("self")).to eq(url1)
115
+ expect(results[1]).to be_kind_of Harpy::Spec::Company
116
+ expect(results[1].name).to eq("Harpy Inc")
117
+ expect(results[1].link("self")).to eq(url2)
118
118
  end
119
119
  end
120
120
  end
121
121
  describe ".from_urn(urn)" do
122
122
  context "when entry point is not set" do
123
123
  it "raises Harpy::EntryPointRequired" do
124
- lambda{
124
+ expect{
125
125
  Harpy::Spec::Company.from_urn("urn:harpy:company:1")
126
- }.should raise_error Harpy::EntryPointRequired
126
+ }.to raise_error Harpy::EntryPointRequired
127
127
  end
128
128
  end
129
129
  context "when entry point is set" do
@@ -132,38 +132,38 @@ describe "class including Harpy::Resource" do
132
132
  it "asks Harpy.entry_point to convert urn to url then call .from_url" do
133
133
  # urn:harpy:company:1 -> http://localhost/company/1
134
134
  Harpy.entry_point = double
135
- Harpy.entry_point.should_receive(:urn).with(urn).and_return url
135
+ expect(Harpy.entry_point).to receive(:urn).with(urn).and_return url
136
136
 
137
137
  # http://localhost/company/1 -> Harpy::Spec::Company instance
138
- Harpy::Spec::Company.should_receive(:from_url).with(url).and_return(expected = double)
139
- Harpy::Spec::Company.from_urn(urn).should be expected
138
+ expect(Harpy::Spec::Company).to receive(:from_url).with(url).and_return(expected = double)
139
+ expect(Harpy::Spec::Company.from_urn(urn)).to be expected
140
140
  end
141
141
  it "is nil if urn is not found" do
142
142
  # urn:harpy:company:1 -> nil
143
143
  Harpy.entry_point = double
144
- Harpy.entry_point.should_receive(:urn).with(urn)
144
+ expect(Harpy.entry_point).to receive(:urn).with(urn)
145
145
 
146
- Harpy::Spec::Company.from_urn(urn).should be_nil
146
+ expect(Harpy::Spec::Company.from_urn(urn)).to be_nil
147
147
  end
148
148
  end
149
149
  end
150
150
  describe ".from_id(id)" do
151
151
  context "when urn has not been overriden" do
152
152
  it "raises NotImplementedError" do
153
- lambda{
153
+ expect{
154
154
  Harpy::Spec::Company.from_id(1)
155
- }.should raise_error NotImplementedError
155
+ }.to raise_error NotImplementedError
156
156
  end
157
157
  end
158
158
  context "when urn has been overriden but entry point is not set" do
159
159
  let(:urn) { "urn:harpy:company:1" }
160
160
  it "raises Harpy::EntryPointRequired" do
161
161
  # 1 -> urn:harpy:company:1
162
- Harpy::Spec::Company.should_receive(:urn).with(1).and_return urn
162
+ expect(Harpy::Spec::Company).to receive(:urn).with(1).and_return urn
163
163
 
164
- lambda{
164
+ expect{
165
165
  Harpy::Spec::Company.from_id(1)
166
- }.should raise_error Harpy::EntryPointRequired
166
+ }.to raise_error Harpy::EntryPointRequired
167
167
  end
168
168
  end
169
169
  context "when entry point is set and urn has been overriden" do
@@ -171,25 +171,25 @@ describe "class including Harpy::Resource" do
171
171
  let(:url) { "http://localhost/company/1" }
172
172
  it "asks Harpy.entry_point to convert urn to url then call .from_url" do
173
173
  # 1 -> urn:harpy:company:1
174
- Harpy::Spec::Company.should_receive(:urn).with(1).and_return urn
174
+ expect(Harpy::Spec::Company).to receive(:urn).with(1).and_return urn
175
175
 
176
176
  # urn:harpy:company:1 -> http://localhost/company/1
177
177
  Harpy.entry_point = double
178
- Harpy.entry_point.should_receive(:urn).with(urn).and_return url
178
+ expect(Harpy.entry_point).to receive(:urn).with(urn).and_return url
179
179
 
180
180
  # http://localhost/company/1 -> Harpy::Spec::Company instance
181
- Harpy::Spec::Company.should_receive(:from_url).with(url).and_return(expected = double)
182
- Harpy::Spec::Company.from_id(1).should be expected
181
+ expect(Harpy::Spec::Company).to receive(:from_url).with(url).and_return(expected = double)
182
+ expect(Harpy::Spec::Company.from_id(1)).to be expected
183
183
  end
184
184
  it "is nil if urn is not found" do
185
185
  # 1 -> urn:harpy:company:1
186
- Harpy::Spec::Company.should_receive(:urn).with(1).and_return urn
186
+ expect(Harpy::Spec::Company).to receive(:urn).with(1).and_return urn
187
187
 
188
188
  # urn:harpy:company:1 -> nil
189
189
  Harpy.entry_point = double
190
- Harpy.entry_point.should_receive(:urn).with(urn)
190
+ expect(Harpy.entry_point).to receive(:urn).with(urn)
191
191
 
192
- Harpy::Spec::Company.from_id(1).should be_nil
192
+ expect(Harpy::Spec::Company.from_id(1)).to be_nil
193
193
  end
194
194
  end
195
195
  end
@@ -198,19 +198,19 @@ describe "class including Harpy::Resource" do
198
198
  let(:url){ "http://localhost/company/1" }
199
199
  it "is true on success" do
200
200
  response = Typhoeus::Response.new :code => 204
201
- Harpy.client.should_receive(:delete).with(url).and_return response
201
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
202
202
  result = Harpy::Spec::Company.delete_from_url url
203
- result.should be_true
203
+ expect(result).to be_truthy
204
204
  end
205
205
  it "is false when not found" do
206
206
  response = Typhoeus::Response.new :code => 404
207
- Harpy.client.should_receive(:delete).with(url).and_return response
208
- Harpy::Spec::Company.delete_from_url(url).should be_false
207
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
208
+ expect(Harpy::Spec::Company.delete_from_url(url)).to be_falsey
209
209
  end
210
210
  it "delegates response code != 204 or 404 to client" do
211
211
  response = Typhoeus::Response.new :code => 500
212
- Harpy.client.should_receive(:delete).with(url).and_return response
213
- Harpy.client.should_receive(:invalid_code).with response
212
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
213
+ expect(Harpy.client).to receive(:invalid_code).with response
214
214
  Harpy::Spec::Company.delete_from_url url
215
215
  end
216
216
  end
@@ -218,9 +218,9 @@ describe "class including Harpy::Resource" do
218
218
  describe ".delete_from_urn(urn)" do
219
219
  context "when entry point is not set" do
220
220
  it "raises Harpy::EntryPointRequired" do
221
- lambda{
221
+ expect{
222
222
  Harpy::Spec::Company.delete_from_urn("urn:harpy:company:1")
223
- }.should raise_error Harpy::EntryPointRequired
223
+ }.to raise_error Harpy::EntryPointRequired
224
224
  end
225
225
  end
226
226
  context "when entry point is set" do
@@ -229,38 +229,38 @@ describe "class including Harpy::Resource" do
229
229
  it "asks Harpy.entry_point to convert urn to url then call .from_url" do
230
230
  # urn:harpy:company:1 -> http://localhost/company/1
231
231
  Harpy.entry_point = double
232
- Harpy.entry_point.should_receive(:urn).with(urn).and_return url
232
+ expect(Harpy.entry_point).to receive(:urn).with(urn).and_return url
233
233
 
234
234
  # http://localhost/company/1 -> Harpy::Spec::Company instance
235
- Harpy::Spec::Company.should_receive(:delete_from_url).with(url).and_return(expected = double)
236
- Harpy::Spec::Company.delete_from_urn(urn).should be expected
235
+ expect(Harpy::Spec::Company).to receive(:delete_from_url).with(url).and_return(expected = double)
236
+ expect(Harpy::Spec::Company.delete_from_urn(urn)).to be expected
237
237
  end
238
238
  it "is nil if urn is not found" do
239
239
  # urn:harpy:company:1 -> nil
240
240
  Harpy.entry_point = double
241
- Harpy.entry_point.should_receive(:urn).with(urn)
241
+ expect(Harpy.entry_point).to receive(:urn).with(urn)
242
242
 
243
- Harpy::Spec::Company.delete_from_urn(urn).should be_false
243
+ expect(Harpy::Spec::Company.delete_from_urn(urn)).to be_falsey
244
244
  end
245
245
  end
246
246
  end
247
247
  describe ".delete_from_id(id)" do
248
248
  context "when urn has not been overriden" do
249
249
  it "raises NotImplementedError" do
250
- lambda{
250
+ expect{
251
251
  Harpy::Spec::Company.delete_from_id(1)
252
- }.should raise_error NotImplementedError
252
+ }.to raise_error NotImplementedError
253
253
  end
254
254
  end
255
255
  context "when urn has been overriden but entry point is not set" do
256
256
  let(:urn) { "urn:harpy:company:1" }
257
257
  it "raises Harpy::EntryPointRequired" do
258
258
  # 1 -> urn:harpy:company:1
259
- Harpy::Spec::Company.should_receive(:urn).with(1).and_return urn
259
+ expect(Harpy::Spec::Company).to receive(:urn).with(1).and_return urn
260
260
 
261
- lambda{
261
+ expect{
262
262
  Harpy::Spec::Company.delete_from_id(1)
263
- }.should raise_error Harpy::EntryPointRequired
263
+ }.to raise_error Harpy::EntryPointRequired
264
264
  end
265
265
  end
266
266
  context "when entry point is set and urn has been overriden" do
@@ -268,45 +268,45 @@ describe "class including Harpy::Resource" do
268
268
  let(:url) { "http://localhost/company/1" }
269
269
  it "asks Harpy.entry_point to convert urn to url then call .from_url" do
270
270
  # 1 -> urn:harpy:company:1
271
- Harpy::Spec::Company.should_receive(:urn).with(1).and_return urn
271
+ expect(Harpy::Spec::Company).to receive(:urn).with(1).and_return urn
272
272
 
273
273
  # urn:harpy:company:1 -> http://localhost/company/1
274
274
  Harpy.entry_point = double
275
- Harpy.entry_point.should_receive(:urn).with(urn).and_return url
275
+ expect(Harpy.entry_point).to receive(:urn).with(urn).and_return url
276
276
 
277
277
  # http://localhost/company/1 -> Harpy::Spec::Company instance
278
- Harpy::Spec::Company.should_receive(:delete_from_url).with(url).and_return(expected = double)
279
- Harpy::Spec::Company.delete_from_id(1).should be expected
278
+ expect(Harpy::Spec::Company).to receive(:delete_from_url).with(url).and_return(expected = double)
279
+ expect(Harpy::Spec::Company.delete_from_id(1)).to be expected
280
280
  end
281
281
  it "is nil if urn is not found" do
282
282
  # 1 -> urn:harpy:company:1
283
- Harpy::Spec::Company.should_receive(:urn).with(1).and_return urn
283
+ expect(Harpy::Spec::Company).to receive(:urn).with(1).and_return urn
284
284
 
285
285
  # urn:harpy:company:1 -> nil
286
286
  Harpy.entry_point = double
287
- Harpy.entry_point.should_receive(:urn).with(urn)
287
+ expect(Harpy.entry_point).to receive(:urn).with(urn)
288
288
 
289
- Harpy::Spec::Company.delete_from_id(1).should be_false
289
+ expect(Harpy::Spec::Company.delete_from_id(1)).to be_falsey
290
290
  end
291
291
  end
292
292
  end
293
293
  describe ".urn(id)" do
294
294
  it "raises NotImplementedError" do
295
- lambda{
295
+ expect{
296
296
  Harpy::Spec::Company.urn(1)
297
- }.should raise_error NotImplementedError
297
+ }.to raise_error NotImplementedError
298
298
  end
299
299
  end
300
300
  describe ".resource_name" do
301
301
  it "defaults to underscored class name" do
302
- Harpy::Spec::Company.resource_name.should == "harpy/spec/company"
302
+ expect(Harpy::Spec::Company.resource_name).to eq("harpy/spec/company")
303
303
  end
304
304
  end
305
305
  describe ".search(conditions)" do
306
306
  let(:url){ "http://localhost/company" }
307
307
  before do
308
308
  Harpy.entry_point = double
309
- Harpy.entry_point.should_receive(:resource_url).with("harpy/spec/company").and_return url
309
+ expect(Harpy.entry_point).to receive(:resource_url).with("harpy/spec/company").and_return url
310
310
  end
311
311
  it "return properly filled instances on 200" do
312
312
  response = Typhoeus::Response.new :code => 200, :body => <<-eos
@@ -325,31 +325,31 @@ describe "class including Harpy::Resource" do
325
325
  ]
326
326
  }
327
327
  eos
328
- Harpy.client.should_receive(:get).with(url, :params => {"firstname" => "Anthony"}).and_return response
328
+ expect(Harpy.client).to receive(:get).with(url, :params => {"firstname" => "Anthony"}).and_return response
329
329
  companies = Harpy::Spec::Company.search "firstname" => "Anthony"
330
- companies.should be_kind_of Harpy::Collection
331
- companies.should have(1).item
332
- companies.should have(1).items
333
- companies.first.should be_kind_of Harpy::Spec::Company
334
- companies.first.firstname.should == "Anthony"
335
- companies.first.id.should == "1"
336
- companies.url.should == url
337
- companies.each do |company|
338
- company.firstname.should == "Anthony"
339
- end.should be_kind_of Array
340
- companies.each.should be_kind_of(defined?(Enumerator) ? Enumerator : Enumerable::Enumerator)
341
- companies.to_a.should == [companies.first]
342
- companies.detect{ true }.should be companies.first
343
- companies.should be_present
344
- companies.should_not be_blank
330
+ expect(companies).to be_kind_of Harpy::Collection
331
+ expect(companies.size).to eq(1)
332
+ expect(companies.size).to eq(1)
333
+ expect(companies.first).to be_kind_of Harpy::Spec::Company
334
+ expect(companies.first.firstname).to eq("Anthony")
335
+ expect(companies.first.id).to eq("1")
336
+ expect(companies.url).to eq(url)
337
+ expect(companies.each do |company|
338
+ expect(company.firstname).to eq("Anthony")
339
+ end).to be_kind_of Array
340
+ expect(companies.each).to be_kind_of(defined?(Enumerator) ? Enumerator : Enumerable::Enumerator)
341
+ expect(companies.to_a).to eq([companies.first])
342
+ expect(companies.detect{ true }).to be companies.first
343
+ expect(companies.present?).to be true
344
+ expect(companies.blank?).not_to be true
345
345
  companies.replace []
346
- companies.should_not be_present
347
- companies.should be_blank
346
+ expect(companies.present?).not_to be true
347
+ expect(companies.blank?).to be true
348
348
  end
349
349
  it "delegates other response codes to client" do
350
350
  response = Typhoeus::Response.new :code => 500
351
- Harpy.client.should_receive(:get).with(url, :params => {}).and_return response
352
- Harpy.client.should_receive(:invalid_code).with response
351
+ expect(Harpy.client).to receive(:get).with(url, :params => {}).and_return response
352
+ expect(Harpy.client).to receive(:invalid_code).with response
353
353
  Harpy::Spec::Company.search
354
354
  end
355
355
  end
@@ -357,8 +357,8 @@ describe "class including Harpy::Resource" do
357
357
  let(:url){ "http://localhost/user/1/company" }
358
358
  it "overrides url used for searches" do
359
359
  response = Typhoeus::Response.new :code => 500
360
- Harpy.client.should_receive(:get).with(url, :params => {}).and_return response
361
- Harpy.client.should_receive(:invalid_code).with response
360
+ expect(Harpy.client).to receive(:get).with(url, :params => {}).and_return response
361
+ expect(Harpy.client).to receive(:invalid_code).with response
362
362
  Harpy::Spec::Company.with_url(url) do
363
363
  Harpy::Spec::Company.search
364
364
  end
@@ -366,9 +366,9 @@ describe "class including Harpy::Resource" do
366
366
  it "can be nested" do
367
367
  url2 = "http://localhost/user/2/company"
368
368
  response = Typhoeus::Response.new :code => 500
369
- Harpy.client.should_receive(:get).ordered.with(url2, :params => {}).and_return response
370
- Harpy.client.should_receive(:get).ordered.with(url, :params => {}).and_return response
371
- Harpy.client.should_receive(:invalid_code).twice.with response
369
+ expect(Harpy.client).to receive(:get).ordered.with(url2, :params => {}).and_return response
370
+ expect(Harpy.client).to receive(:get).ordered.with(url, :params => {}).and_return response
371
+ expect(Harpy.client).to receive(:invalid_code).twice.with response
372
372
  Harpy::Spec::Company.with_url(url) do
373
373
  Harpy::Spec::Company.with_url(url2) do
374
374
  Harpy::Spec::Company.search
@@ -380,43 +380,43 @@ describe "class including Harpy::Resource" do
380
380
  describe "mass assignment" do
381
381
  it "sets any attribute on initialization" do
382
382
  company = Harpy::Spec::Company.new "name" => "Harpy Ltd"
383
- company.name.should == "Harpy Ltd"
383
+ expect(company.name).to eq("Harpy Ltd")
384
384
  end
385
385
  it "initialization works with string keys only" do
386
386
  company = Harpy::Spec::Company.new :name => "Harpy Ltd"
387
- company.name.should be_nil
387
+ expect(company.name).to be_nil
388
388
  end
389
389
  it "#attributes=(attrs) merges new attributes with previous ones" do
390
390
  company = Harpy::Spec::Company.new "name" => "Harpy Ltd", "deleted" => false
391
391
  company.attributes = {"name" => "Harpy Inc", "custom" => true}
392
- company.name.should eql "Harpy Inc"
393
- company.deleted.should be_false
394
- company.custom.should be_true
392
+ expect(company.name).to eql "Harpy Inc"
393
+ expect(company.deleted).to be_falsey
394
+ expect(company.custom).to be_truthy
395
395
  end
396
396
  it "#attributes=(attrs) works with string keys only" do
397
397
  company = Harpy::Spec::Company.new "name" => "Harpy Ltd"
398
398
  company.attributes = {:name => "Harpy Inc"}
399
- company.name.should eql "Harpy Ltd"
399
+ expect(company.name).to eql "Harpy Ltd"
400
400
  end
401
401
  it "doesn't define writers for each attribute" do
402
402
  company = Harpy::Spec::Company.new "name" => "Harpy Ltd"
403
- lambda{ company.name = "test" }.should raise_error NoMethodError
404
- lambda{ company[1] }.should raise_error NoMethodError
403
+ expect{ company.name = "test" }.to raise_error NoMethodError
404
+ expect{ company[1] }.to raise_error NoMethodError
405
405
  end
406
406
  it "allows accessing undefined attributes when not persisted" do
407
- subject.name.should be_nil
407
+ expect(subject.name).to be_nil
408
408
  end
409
409
  it "doesn't allows accessing undefined attributes when not persisted" do
410
- subject.should_receive(:persisted?).and_return true
411
- lambda{ subject.name }.should raise_error NoMethodError
410
+ expect(subject).to receive(:persisted?).and_return true
411
+ expect{ subject.name }.to raise_error NoMethodError
412
412
  end
413
413
  it "use existing setters if available" do
414
414
  company = Harpy::Spec::Company.new "tax_id" => "123"
415
- company.tax_id.should == "123"
416
- company.as_json.should == {}
415
+ expect(company.tax_id).to eq("123")
416
+ expect(company.as_json).to eq({})
417
417
  company.attributes = {:tax_id => 123}
418
- company.tax_id.should == 123
419
- company.as_json.should == {}
418
+ expect(company.tax_id).to eq(123)
419
+ expect(company.as_json).to eq({})
420
420
  end
421
421
  end
422
422
  describe "advanced attribute readers" do
@@ -424,111 +424,111 @@ describe "class including Harpy::Resource" do
424
424
  subject{ Harpy::Spec::Company.new "link" => [{"rel" => "self", "href" => url}] }
425
425
  describe "#link(rel)" do
426
426
  it "searches link with matching rel and return href" do
427
- subject.link("self").should == url
427
+ expect(subject.link("self")).to eq(url)
428
428
  end
429
429
  it "works with symbols too" do
430
- subject.link(:self).should == url
430
+ expect(subject.link(:self)).to eq(url)
431
431
  end
432
432
  it "is nil if no matching link can be found" do
433
- subject.link("user").should be_nil
433
+ expect(subject.link("user")).to be_nil
434
434
  end
435
435
  end
436
436
  describe "#url" do
437
437
  it "searches url to self inside links" do
438
- subject.should_receive(:link).with("self").and_return (expected = double)
439
- subject.url.should be expected
438
+ expect(subject).to receive(:link).with("self").and_return (expected = double)
439
+ expect(subject.url).to be expected
440
440
  end
441
441
  it "is nil when no link to self can be found" do
442
- subject.should_receive(:link).with "self"
443
- subject.url.should be_nil
442
+ expect(subject).to receive(:link).with "self"
443
+ expect(subject.url).to be_nil
444
444
  end
445
445
  end
446
446
  describe "#url_collection" do
447
447
  it "defaults to entry_point link which rel matches resource name" do
448
448
  Harpy.entry_point = double
449
- Harpy.entry_point.should_receive(:resource_url).with("harpy/spec/company").and_return (expected = double)
450
- subject.url_collection.should be expected
449
+ expect(Harpy.entry_point).to receive(:resource_url).with("harpy/spec/company").and_return (expected = double)
450
+ expect(subject.url_collection).to be expected
451
451
  end
452
452
  end
453
453
  describe "#id" do
454
454
  it "extracts last part from urn" do
455
455
  company = Harpy::Spec::Company.new "urn" => "urn:harpy:company:1"
456
- company.id.should == "1"
456
+ expect(company.id).to eq("1")
457
457
  end
458
458
  it "works with alphanumeric ids too" do
459
459
  company = Harpy::Spec::Company.new "urn" => "urn:harpy:company:e{39,^"
460
- company.id.should == "e{39,^"
460
+ expect(company.id).to eq("e{39,^")
461
461
  end
462
462
  it "works with urns having more than 4 parts" do
463
463
  company = Harpy::Spec::Company.new "urn" => "urn:harpy:api:company:1"
464
- company.id.should == "1"
464
+ expect(company.id).to eq("1")
465
465
  end
466
466
  it "is nil without urn" do
467
- subject.id.should be_nil
467
+ expect(subject.id).to be_nil
468
468
  end
469
469
  it "is nil if urn is an empty string" do
470
470
  company = Harpy::Spec::Company.new "urn" => ""
471
- company.id.should be_nil
471
+ expect(company.id).to be_nil
472
472
  end
473
473
  it "never uses manually assigned id attribute" do
474
474
  company = Harpy::Spec::Company.new "id" => "1"
475
- company.id.should be_nil
475
+ expect(company.id).to be_nil
476
476
  end
477
477
  end
478
478
  describe "#persisted?" do
479
479
  it "defaults to false when no urn is defined" do
480
480
  company = Harpy::Spec::Company.new
481
- company.persisted?.should be_false
481
+ expect(company.persisted?).to be_falsey
482
482
  end
483
483
  it "is true when an urn is present" do
484
484
  company = Harpy::Spec::Company.new "urn" => "urn:harpy:company:1"
485
- company.persisted?.should be_true
485
+ expect(company.persisted?).to be_truthy
486
486
  end
487
487
  it "is false when urn is an empty string" do
488
488
  company = Harpy::Spec::Company.new "urn" => ""
489
- company.persisted?.should be_false
489
+ expect(company.persisted?).to be_falsey
490
490
  end
491
491
  end
492
492
  describe "#inspect" do
493
493
  subject { Harpy::Spec::Company.new "firstname" => "Anthony" }
494
494
  it "shows class name, attributes, errors and persisted state" do
495
- subject.inspect.should == '<Harpy::Spec::Company @attrs:{"firstname"=>"Anthony"} @errors:[] persisted:false>'
495
+ expect(subject.inspect).to eq('<Harpy::Spec::Company @attrs:{"firstname"=>"Anthony"} @errors:[] persisted:false>')
496
496
  end
497
497
  end
498
498
  describe "#has_key?(key)" do
499
499
  it "is true when attribute is present" do
500
- subject.has_key?("link").should be_true
500
+ expect(subject.has_key?("link")).to be_truthy
501
501
  end
502
502
  it "does accept symbols too" do
503
- subject.has_key?(:link).should be_true
503
+ expect(subject.has_key?(:link)).to be_truthy
504
504
  end
505
505
  it "is true when attribute is an empty string" do
506
506
  company = Harpy::Spec::Company.new "urn" => ""
507
- company.has_key?("urn").should be_true
507
+ expect(company.has_key?("urn")).to be_truthy
508
508
  end
509
509
  it "is false when attribute is not defined" do
510
- subject.has_key?("custom").should be_false
510
+ expect(subject.has_key?("custom")).to be_falsey
511
511
  end
512
512
  it "is false when key matches an existing method but not an attribute" do
513
- subject.has_key?(:url).should be_false
513
+ expect(subject.has_key?(:url)).to be_falsey
514
514
  end
515
515
  it "does not raise error when checking for an undefined attribute even when persisted" do
516
- subject.stub(:persisted?).and_return true
517
- subject.has_key?("custom").should be_false
516
+ allow(subject).to receive(:persisted?).and_return true
517
+ expect(subject.has_key?("custom")).to be_falsey
518
518
  end
519
519
  end
520
520
  end
521
521
  describe "#valid?" do
522
522
  it "has ActiveModel validations" do
523
523
  user = Harpy::Spec::User.new "lastname" => "Stark"
524
- user.should_not be_valid
525
- user.should have(1).error
526
- user.errors[:firstname].should =~ ["can't be blank"]
524
+ expect(user).not_to be_valid
525
+ expect(user.errors.size).to eq(1)
526
+ expect(user.errors[:firstname]).to match_array(["can't be blank"])
527
527
  end
528
- it "calls before_validation which prevents validation on false" do
528
+ it "calls before_validation which prevents validation on throw" do
529
529
  user = Harpy::Spec::User.new
530
- user.should_not be_valid
531
- user.should have(:no).error
530
+ expect(user).not_to be_valid
531
+ expect(user.errors.size).to eq(0)
532
532
  end
533
533
  end
534
534
  describe "#as_json" do
@@ -542,27 +542,27 @@ describe "class including Harpy::Resource" do
542
542
  end
543
543
 
544
544
  it "exclude link and urn from attributes" do
545
- subject.as_json.should == {"company_name" => "Stark Enterprises"}
545
+ expect(subject.as_json).to eq({"company_name" => "Stark Enterprises"})
546
546
  end
547
547
  it "does not remove link and urn from object attributes" do
548
548
  subject.as_json
549
- subject.urn.should == "urn:harpy:user:1"
550
- subject.url.should == url
549
+ expect(subject.urn).to eq("urn:harpy:user:1")
550
+ expect(subject.url).to eq(url)
551
551
  end
552
552
  end
553
553
  describe "#save" do
554
554
  subject{ Harpy::Spec::User.new "company_name" => "Stark Enterprises" }
555
555
  it "is false and does not call before_save callback if not valid" do
556
- subject.should_receive :valid?
557
- subject.save.should be_false
558
- subject.callbacks.should =~ []
556
+ expect(subject).to receive :valid?
557
+ expect(subject.save).to be_falsey
558
+ expect(subject.callbacks).to match_array([])
559
559
  end
560
560
  context "on create (valid, not persisted)" do
561
561
  let(:url) { "http://localhost/user" }
562
562
  let(:body) { '{"company_name":"Stark Enterprises"}' }
563
563
  before do
564
- subject.should_receive(:valid?).and_return true
565
- subject.should_receive(:url_collection).and_return url
564
+ expect(subject).to receive(:valid?).and_return true
565
+ expect(subject).to receive(:url_collection).and_return url
566
566
  end
567
567
  [200, 201, 302].each do |response_code|
568
568
  it "is true and merges response attributes on #{response_code}" do
@@ -575,25 +575,25 @@ describe "class including Harpy::Resource" do
575
575
  ]
576
576
  }
577
577
  eos
578
- Harpy.client.should_receive(:post).with(url, :body => body).and_return response
579
- subject.save.should be_true
580
- subject.callbacks.should =~ [:save, :create]
581
- subject.firstname.should == "Anthony"
582
- subject.company_name.should == "Stark Enterprises"
583
- subject.urn.should == "urn:harpy:user:1"
578
+ expect(Harpy.client).to receive(:post).with(url, :body => body).and_return response
579
+ expect(subject.save).to be_truthy
580
+ expect(subject.callbacks).to match_array([:save, :create])
581
+ expect(subject.firstname).to eq("Anthony")
582
+ expect(subject.company_name).to eq("Stark Enterprises")
583
+ expect(subject.urn).to eq("urn:harpy:user:1")
584
584
  end
585
585
  end
586
586
  it "raises Harpy::InvalidResponseCode on 204" do
587
587
  response = Typhoeus::Response.new :code => 204
588
- Harpy.client.should_receive(:post).with(url, :body => body).and_return response
589
- lambda { subject.save }.should raise_error Harpy::InvalidResponseCode, "204"
590
- subject.callbacks.should =~ [:save, :create]
588
+ expect(Harpy.client).to receive(:post).with(url, :body => body).and_return response
589
+ expect { subject.save }.to raise_error Harpy::InvalidResponseCode, "204"
590
+ expect(subject.callbacks).to match_array([:save, :create])
591
591
  end
592
592
  it "raises Harpy::Unauthorized on 401" do
593
593
  response = Typhoeus::Response.new :code => 401
594
- Harpy.client.should_receive(:post).with(url, :body => body).and_return response
595
- lambda { subject.save }.should raise_error Harpy::Unauthorized, "Server returned a 401 response code"
596
- subject.callbacks.should =~ [:save, :create]
594
+ expect(Harpy.client).to receive(:post).with(url, :body => body).and_return response
595
+ expect { subject.save }.to raise_error Harpy::Unauthorized, "Server returned a 401 response code"
596
+ expect(subject.callbacks).to match_array([:save, :create])
597
597
  end
598
598
  it "is false and fills in errors on 422" do
599
599
  response = Typhoeus::Response.new :code => 422, :body => <<-eos
@@ -604,28 +604,28 @@ describe "class including Harpy::Resource" do
604
604
  }
605
605
  }
606
606
  eos
607
- Harpy.client.should_receive(:post).with(url, :body => body).and_return response
608
- subject.save.should be_false
609
- subject.callbacks.should =~ [:save, :create]
610
- subject.should have(2).errors
611
- subject.errors[:lastname].should =~ ["can't be blank", "must be unique"]
612
- subject.firstname.should be_nil
613
- subject.company_name.should == "Stark Enterprises"
607
+ expect(Harpy.client).to receive(:post).with(url, :body => body).and_return response
608
+ expect(subject.save).to be_falsey
609
+ expect(subject.callbacks).to match_array([:save, :create])
610
+ expect(subject.errors.size).to eq(2)
611
+ expect(subject.errors[:lastname]).to match_array(["can't be blank", "must be unique"])
612
+ expect(subject.firstname).to be_nil
613
+ expect(subject.company_name).to eq("Stark Enterprises")
614
614
  end
615
615
  it "delegates other response codes to client" do
616
616
  response = Typhoeus::Response.new :code => 500
617
- Harpy.client.should_receive(:post).with(url, :body => body).and_return response
618
- Harpy.client.should_receive(:invalid_code).with(response)
617
+ expect(Harpy.client).to receive(:post).with(url, :body => body).and_return response
618
+ expect(Harpy.client).to receive(:invalid_code).with(response)
619
619
  subject.save
620
- subject.callbacks.should =~ [:save, :create]
620
+ expect(subject.callbacks).to match_array([:save, :create])
621
621
  end
622
622
  end
623
623
  context "on update (valid, persisted but link to self is not present)" do
624
624
  it "raises Harpy::UrlRequired" do
625
- subject.should_receive(:valid?).and_return true
626
- subject.should_receive(:persisted?).and_return true
627
- lambda{ subject.save }.should raise_error Harpy::UrlRequired
628
- subject.callbacks.should =~ [:save, :update]
625
+ expect(subject).to receive(:valid?).and_return true
626
+ expect(subject).to receive(:persisted?).and_return true
627
+ expect{ subject.save }.to raise_error Harpy::UrlRequired
628
+ expect(subject.callbacks).to match_array([:save, :update])
629
629
  end
630
630
  end
631
631
  context "on update (valid, persisted and link to self is present)" do
@@ -639,7 +639,7 @@ describe "class including Harpy::Resource" do
639
639
  })
640
640
  end
641
641
  before do
642
- subject.should_receive(:valid?).and_return true
642
+ expect(subject).to receive(:valid?).and_return true
643
643
  end
644
644
  [200, 201, 302].each do |response_code|
645
645
  it "is true and merges response attributes on #{response_code}" do
@@ -652,25 +652,25 @@ describe "class including Harpy::Resource" do
652
652
  ]
653
653
  }
654
654
  eos
655
- Harpy.client.should_receive(:put).with(url, :body => body).and_return response
656
- subject.save.should be_true
657
- subject.callbacks.should =~ [:save, :update]
658
- subject.firstname.should == "Anthony"
659
- subject.company_name.should == "Stark Enterprises"
655
+ expect(Harpy.client).to receive(:put).with(url, :body => body).and_return response
656
+ expect(subject.save).to be_truthy
657
+ expect(subject.callbacks).to match_array([:save, :update])
658
+ expect(subject.firstname).to eq("Anthony")
659
+ expect(subject.company_name).to eq("Stark Enterprises")
660
660
  end
661
661
  end
662
662
  it "is true but doesn't touch attributes on 204" do
663
663
  response = Typhoeus::Response.new :code => 204
664
- Harpy.client.should_receive(:put).with(url, :body => body).and_return response
665
- subject.save.should be_true
666
- subject.callbacks.should =~ [:save, :update]
667
- subject.company_name.should == "Stark Enterprises"
664
+ expect(Harpy.client).to receive(:put).with(url, :body => body).and_return response
665
+ expect(subject.save).to be_truthy
666
+ expect(subject.callbacks).to match_array([:save, :update])
667
+ expect(subject.company_name).to eq("Stark Enterprises")
668
668
  end
669
669
  it "raises Harpy::Unauthorized on 401" do
670
670
  response = Typhoeus::Response.new :code => 401
671
- Harpy.client.should_receive(:put).with(url, :body => body).and_return response
672
- lambda { subject.save }.should raise_error Harpy::Unauthorized, "Server returned a 401 response code"
673
- subject.callbacks.should =~ [:save, :update]
671
+ expect(Harpy.client).to receive(:put).with(url, :body => body).and_return response
672
+ expect { subject.save }.to raise_error Harpy::Unauthorized, "Server returned a 401 response code"
673
+ expect(subject.callbacks).to match_array([:save, :update])
674
674
  end
675
675
  it "is false and fills in errors on 422" do
676
676
  response = Typhoeus::Response.new :code => 422, :body => <<-eos
@@ -681,20 +681,20 @@ describe "class including Harpy::Resource" do
681
681
  }
682
682
  }
683
683
  eos
684
- Harpy.client.should_receive(:put).with(url, :body => body).and_return response
685
- subject.save.should be_false
686
- subject.callbacks.should =~ [:save, :update]
687
- subject.should have(2).errors
688
- subject.errors[:lastname].should =~ ["can't be blank", "must be unique"]
689
- lambda { subject.firstname }.should raise_error NoMethodError
690
- subject.company_name.should == "Stark Enterprises"
684
+ expect(Harpy.client).to receive(:put).with(url, :body => body).and_return response
685
+ expect(subject.save).to be_falsey
686
+ expect(subject.callbacks).to match_array([:save, :update])
687
+ expect(subject.errors.size).to eq(2)
688
+ expect(subject.errors[:lastname]).to match_array(["can't be blank", "must be unique"])
689
+ expect { subject.firstname }.to raise_error NoMethodError
690
+ expect(subject.company_name).to eq("Stark Enterprises")
691
691
  end
692
692
  it "delegates other response codes to client" do
693
693
  response = Typhoeus::Response.new :code => 500
694
- Harpy.client.should_receive(:put).with(url, :body => body).and_return response
695
- Harpy.client.should_receive(:invalid_code).with(response)
694
+ expect(Harpy.client).to receive(:put).with(url, :body => body).and_return response
695
+ expect(Harpy.client).to receive(:invalid_code).with(response)
696
696
  subject.save
697
- subject.callbacks.should =~ [:save, :update]
697
+ expect(subject.callbacks).to match_array([:save, :update])
698
698
  end
699
699
  end
700
700
  end
@@ -702,8 +702,8 @@ describe "class including Harpy::Resource" do
702
702
  subject{ Harpy::Spec::User.new "company_name" => "Stark Enterprises" }
703
703
  context "when link to self is missing" do
704
704
  it "raises Harpy::UrlRequired" do
705
- lambda{ subject.destroy }.should raise_error Harpy::UrlRequired
706
- subject.callbacks.should =~ []
705
+ expect{ subject.destroy }.to raise_error Harpy::UrlRequired
706
+ expect(subject.callbacks).to match_array([])
707
707
  end
708
708
  end
709
709
  context "when link to self is present" do
@@ -726,25 +726,25 @@ describe "class including Harpy::Resource" do
726
726
  ]
727
727
  }
728
728
  eos
729
- Harpy.client.should_receive(:delete).with(url).and_return response
730
- subject.destroy.should be_true
731
- subject.callbacks.should =~ [:destroy]
732
- subject.firstname.should == "Anthony"
733
- subject.company_name.should == "Stark Enterprises"
729
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
730
+ expect(subject.destroy).to be_truthy
731
+ expect(subject.callbacks).to match_array([:destroy])
732
+ expect(subject.firstname).to eq("Anthony")
733
+ expect(subject.company_name).to eq("Stark Enterprises")
734
734
  end
735
735
  end
736
736
  it "is true but doesn't touch attributes on 204" do
737
737
  response = Typhoeus::Response.new :code => 204
738
- Harpy.client.should_receive(:delete).with(url).and_return response
739
- subject.destroy.should be_true
740
- subject.callbacks.should =~ [:destroy]
741
- subject.company_name.should == "Stark Enterprises"
738
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
739
+ expect(subject.destroy).to be_truthy
740
+ expect(subject.callbacks).to match_array([:destroy])
741
+ expect(subject.company_name).to eq("Stark Enterprises")
742
742
  end
743
743
  it "raises Harpy::Unauthorized on 401" do
744
744
  response = Typhoeus::Response.new :code => 401
745
- Harpy.client.should_receive(:delete).with(url).and_return response
746
- lambda { subject.destroy }.should raise_error Harpy::Unauthorized, "Server returned a 401 response code"
747
- subject.callbacks.should =~ [:destroy]
745
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
746
+ expect { subject.destroy }.to raise_error Harpy::Unauthorized, "Server returned a 401 response code"
747
+ expect(subject.callbacks).to match_array([:destroy])
748
748
  end
749
749
  it "is false and fills in errors on 422" do
750
750
  response = Typhoeus::Response.new :code => 422, :body => <<-eos
@@ -755,20 +755,20 @@ describe "class including Harpy::Resource" do
755
755
  }
756
756
  }
757
757
  eos
758
- Harpy.client.should_receive(:delete).with(url).and_return response
759
- subject.destroy.should be_false
760
- subject.callbacks.should =~ [:destroy]
761
- subject.should have(2).errors
762
- subject.errors[:lastname].should =~ ["can't be blank", "must be unique"]
763
- lambda { subject.firstname }.should raise_error NoMethodError
764
- subject.company_name.should == "Stark Enterprises"
758
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
759
+ expect(subject.destroy).to be_falsey
760
+ expect(subject.callbacks).to match_array([:destroy])
761
+ expect(subject.errors.size).to eq(2)
762
+ expect(subject.errors[:lastname]).to match_array(["can't be blank", "must be unique"])
763
+ expect { subject.firstname }.to raise_error NoMethodError
764
+ expect(subject.company_name).to eq("Stark Enterprises")
765
765
  end
766
766
  it "delegates other response codes to client" do
767
767
  response = Typhoeus::Response.new :code => 500
768
- Harpy.client.should_receive(:delete).with(url).and_return response
769
- Harpy.client.should_receive(:invalid_code).with(response)
768
+ expect(Harpy.client).to receive(:delete).with(url).and_return response
769
+ expect(Harpy.client).to receive(:invalid_code).with(response)
770
770
  subject.destroy
771
- subject.callbacks.should =~ [:destroy]
771
+ expect(subject.callbacks).to match_array([:destroy])
772
772
  end
773
773
  end
774
774
  end
@@ -776,22 +776,22 @@ describe "class including Harpy::Resource" do
776
776
  it "is equal to itself even without urn" do
777
777
  company1 = Harpy::Spec::Company.new
778
778
  company2 = company1
779
- company1.should == company2
779
+ expect(company1).to eq(company2)
780
780
  end
781
781
  it "two instances without urn are not equal" do
782
782
  company1 = Harpy::Spec::Company.new
783
783
  company2 = Harpy::Spec::Company.new
784
- company1.should_not == company2
784
+ expect(company1).not_to eq(company2)
785
785
  end
786
786
  it "two instances of the same class with the same urn are equal" do
787
787
  company1 = Harpy::Spec::Company.new "urn" => "urn:harpy:company:1"
788
788
  company2 = Harpy::Spec::Company.new "urn" => "urn:harpy:company:1"
789
- company1.should == company2
789
+ expect(company1).to eq(company2)
790
790
  end
791
791
  it "two instances of the same class with different urns are not equal" do
792
792
  company1 = Harpy::Spec::Company.new "urn" => "urn:harpy:company:1"
793
793
  company2 = Harpy::Spec::Company.new "urn" => "urn:harpy:company:2"
794
- company1.should_not == company2
794
+ expect(company1).not_to eq(company2)
795
795
  end
796
796
  end
797
797
  end