reviewed 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/README.md +12 -5
  2. data/lib/faraday/api_key.rb +14 -0
  3. data/lib/faraday/errors.rb +14 -0
  4. data/lib/reviewed/article.rb +3 -1
  5. data/lib/reviewed/award.rb +4 -0
  6. data/lib/reviewed/base.rb +23 -11
  7. data/lib/reviewed/client.rb +47 -26
  8. data/lib/reviewed/collection.rb +8 -8
  9. data/lib/reviewed/product.rb +2 -0
  10. data/lib/reviewed/request.rb +43 -0
  11. data/lib/reviewed/version.rb +1 -1
  12. data/lib/reviewed.rb +13 -20
  13. data/reviewed.gemspec +1 -0
  14. data/spec/article_spec.rb +21 -21
  15. data/spec/award_spec.rb +4 -0
  16. data/spec/base_spec.rb +23 -49
  17. data/spec/client_spec.rb +97 -27
  18. data/spec/collection_spec.rb +6 -4
  19. data/spec/faraday/api_key_spec.rb +42 -0
  20. data/spec/faraday/errors_spec.rb +73 -0
  21. data/spec/fixtures/vcr/Reviewed_Article/associations/attachments/does_not_have_any_matching_attachments.yml +601 -0
  22. data/spec/fixtures/vcr/Reviewed_Article/associations/attachments/finds_attachments_by_tag.yml +601 -0
  23. data/spec/fixtures/vcr/Reviewed_Article/associations/attachments/has_many_attachments.yml +601 -0
  24. data/spec/fixtures/vcr/Reviewed_Article/associations/attachments/returns_all_attachments.yml +601 -0
  25. data/spec/fixtures/vcr/Reviewed_Article/associations/attachments/returns_attachments_of_the_correct_class.yml +601 -0
  26. data/spec/fixtures/vcr/Reviewed_Article/associations/pages/has_many_pages.yml +601 -0
  27. data/spec/fixtures/vcr/Reviewed_Article/associations/products/has_many_products.yml +582 -0
  28. data/spec/fixtures/vcr/Reviewed_Article/associations/products/returns_products_of_the_correct_class.yml +601 -0
  29. data/spec/fixtures/vcr/Reviewed_Article/find_page/finds_a_page_with_a_matching_slug.yml +784 -0
  30. data/spec/fixtures/vcr/Reviewed_Article/primary_product/returns_a_product_of_the_correct_class.yml +1199 -0
  31. data/spec/fixtures/vcr/Reviewed_Article/primary_product/returns_nil_if_does_not_respond_to_products.yml +1199 -0
  32. data/spec/fixtures/vcr/Reviewed_Article/primary_product/returns_the_primary_product.yml +1199 -0
  33. data/spec/fixtures/vcr/Reviewed_Client/_perform/request_params/not_set/has_nil_query_params.yml +254 -0
  34. data/spec/fixtures/vcr/Reviewed_Client/_perform/request_params/set/merges_quest_params.yml +98 -0
  35. data/spec/fixtures/vcr/Reviewed_Collection/collection_data/fetches_the_first_page_by_default.yml +183 -0
  36. data/spec/fixtures/vcr/Reviewed_Collection/collection_data/is_enumerable.yml +183 -0
  37. data/spec/fixtures/vcr/Reviewed_Collection/next_page/fetches_the_next_page_of_results.yml +310 -0
  38. data/spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/indicates_if_the_page_number_is_out_of_bounds.yml +183 -0
  39. data/spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/indicates_whether_this_is_the_first_or_last_page.yml +183 -0
  40. data/spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_limit_value_max_per_page_.yml +183 -0
  41. data/spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_number_of_entries_on_the_current_page.yml +183 -0
  42. data/spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_offset.yml +183 -0
  43. data/spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_total_item_count.yml +183 -0
  44. data/spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_total_number_of_pages.yml +183 -0
  45. data/spec/fixtures/vcr/Reviewed_Collection/previous_page/fetches_the_previous_page_of_results.yml +490 -0
  46. data/spec/fixtures/vcr/Reviewed_Collection/previous_page/returns_nil_if_there_is_no_previous_page.yml +183 -0
  47. data/spec/fixtures/vcr/Reviewed_Product/associations/attachments/does_not_have_any_matching_attachments.yml +116 -0
  48. data/spec/fixtures/vcr/Reviewed_Product/associations/attachments/finds_attachments_by_tag.yml +116 -0
  49. data/spec/fixtures/vcr/Reviewed_Product/associations/attachments/has_many_attachments.yml +119 -0
  50. data/spec/fixtures/vcr/Reviewed_Product/associations/attachments/returns_all_attachments.yml +116 -0
  51. data/spec/fixtures/vcr/Reviewed_Product/associations/attachments/returns_attachments_of_the_correct_class.yml +119 -0
  52. data/spec/fixtures/vcr/Reviewed_Product/manufacturer_specs/has_many_manufacturer_specs.yml +116 -0
  53. data/spec/fixtures/vcr/Reviewed_Product/manufacturer_specs/returns_attachments_of_the_correct_class.yml +116 -0
  54. data/spec/fixtures/vcr/Reviewed_Request/_where/filters_collections_using_other_supported_options.yml +110 -0
  55. data/spec/fixtures/vcr/Reviewed_Request/_where/returns_a_collection.yml +254 -0
  56. data/spec/fixtures/vcr/Reviewed_Request/_where/returns_an_empty_set_if_no_matching_data_was_found.yml +86 -0
  57. data/spec/fixtures/vcr/Reviewed_Request/_where/returns_the_appropriate_page_of_results.yml +288 -0
  58. data/spec/fixtures/vcr/Reviewed_Request/collection_from_response/returns_a_collection_object.yml +254 -0
  59. data/spec/fixtures/vcr/Reviewed_Request/collection_from_response/returns_objects_of_the_correct_class.yml +254 -0
  60. data/spec/fixtures/vcr/Reviewed_Request/object_from_response/returns_an_object_of_the_correct_class.yml +601 -0
  61. data/spec/product_spec.rb +8 -6
  62. data/spec/request_spec.rb +117 -0
  63. data/spec/reviewed_spec.rb +5 -31
  64. data/spec/spec_helper.rb +6 -5
  65. data/spec/website_spec.rb +1 -2
  66. metadata +111 -40
  67. data/lib/faraday/global_params.rb +0 -21
  68. data/lib/reviewed/configurable.rb +0 -26
  69. data/lib/reviewed/utils.rb +0 -21
  70. data/spec/configurable_spec.rb +0 -44
  71. data/spec/faraday/global_params_spec.rb +0 -33
  72. data/spec/fixtures/vcr/article/attachments.yml +0 -1065
  73. data/spec/fixtures/vcr/article/find_page.yml +0 -383
  74. data/spec/fixtures/vcr/article/products.yml +0 -1065
  75. data/spec/fixtures/vcr/base/article/find.yml +0 -14825
  76. data/spec/fixtures/vcr/base/where_collection.yml +0 -1203
  77. data/spec/fixtures/vcr/collection/products.yml +0 -922
  78. data/spec/fixtures/vcr/faraday/global_params/request.yml +0 -109
  79. data/spec/fixtures/vcr/faraday/global_params/request_no_params.yml +0 -885
  80. data/spec/fixtures/vcr/faraday/global_params/request_params.yml +0 -405
  81. data/spec/fixtures/vcr/product/attachments.yml +0 -221
  82. data/spec/fixtures/vcr/product/manufacturer_specs.yml +0 -194
  83. data/spec/fixtures/vcr/utils/collection.yml +0 -644
  84. data/spec/fixtures/vcr/utils/object.yml +0 -7658
  85. data/spec/fixtures/vcr/utils.yml +0 -7961
  86. data/spec/utils_spec.rb +0 -33
@@ -0,0 +1,117 @@
1
+ require 'spec_helper.rb'
2
+
3
+ describe Reviewed::Request do
4
+
5
+ let(:request) do
6
+ Reviewed::Request.new(
7
+ resource: Reviewed::Article,
8
+ client: Reviewed::Client.new(api_key: TEST_KEY, base_uri: TEST_URL)
9
+ )
10
+ end
11
+
12
+ describe 'initialize' do
13
+
14
+ context 'class' do
15
+
16
+ it 'sets the path' do
17
+ request.path.should eql('articles')
18
+ end
19
+
20
+ it 'sets the resource' do
21
+ request.resource.should eql(Reviewed::Article)
22
+ end
23
+ end
24
+
25
+ context 'string' do
26
+
27
+ let(:request) { Reviewed::Request.new(resource: 'test') }
28
+
29
+ it 'sets the path' do
30
+ request = Reviewed::Request.new(resource: 'test')
31
+ request.path.should eql('test')
32
+ end
33
+
34
+ it 'does not set the resource' do
35
+ request.resource.should be_nil
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#find' do
41
+
42
+ it 'delegates to object_from_response' do
43
+ request.should_receive(:object_from_response).with(:get, "articles/123", {})
44
+ request.find(123)
45
+ end
46
+
47
+ it 'cgi escapes id params' do
48
+ request.should_receive(:object_from_response).with(:get, "articles/Smith+%26+Wesson+v%2Fs+Colt%3A+Which+Makes+you+Manlier%3F", {})
49
+ request.find('Smith & Wesson v/s Colt: Which Makes you Manlier?')
50
+ end
51
+ end
52
+
53
+ describe '#where', vcr: true do
54
+
55
+ it 'delegates to object_from_response' do
56
+ request.should_receive(:collection_from_response).with(:get, "articles", {})
57
+ request.where
58
+ end
59
+
60
+ it 'returns a collection' do
61
+ collection = request.where
62
+ collection.class.should == Reviewed::Collection
63
+ end
64
+
65
+ it 'returns the appropriate page of results' do
66
+ collection = request.where(:page => 2)
67
+ collection.total.should > 1
68
+ collection.current_page.should == 2
69
+ end
70
+
71
+ it 'filters collections using other supported options' do
72
+ collection = request.where(:keywords => 'minden')
73
+ collection.total.should == 1
74
+ collection.last_page.should be_true
75
+ end
76
+
77
+ it 'returns an empty set if no matching data was found' do
78
+ collection = request.where(:keywords => 'doesnotcompute')
79
+ collection.should be_empty
80
+ collection.total.should == 0
81
+ collection.out_of_bounds.should be_true
82
+ end
83
+ end
84
+
85
+ describe '#all' do
86
+
87
+ it 'delegates to where' do
88
+ request.should_receive(:where).with({})
89
+ request.all
90
+ end
91
+ end
92
+
93
+ describe 'object_from_response', vcr: true do
94
+
95
+ let(:article_id) { 'big-green-egg-medium-charcoal-grill-review' }
96
+
97
+ it 'returns an object of the correct class' do
98
+ response = request.object_from_response(:get, "articles/#{article_id}")
99
+ response.should be_an_instance_of(request.resource)
100
+ end
101
+ end
102
+
103
+ describe 'collection_from_response', vcr: true do
104
+
105
+ it 'returns a collection object' do
106
+ collection = request.collection_from_response(:get, "articles")
107
+ collection.should be_an_instance_of(Reviewed::Collection)
108
+ end
109
+
110
+ it 'returns objects of the correct class' do
111
+ collection = request.collection_from_response(:get, "articles")
112
+ collection.items.each do |obj|
113
+ obj.should be_an_instance_of(request.resource)
114
+ end
115
+ end
116
+ end
117
+ end
@@ -2,38 +2,12 @@ require 'spec_helper.rb'
2
2
 
3
3
  describe Reviewed do
4
4
 
5
- describe 'accessors' do
5
+ describe 'errors' do
6
6
 
7
- after(:each) do
8
- Reviewed.global_params = nil
9
- end
10
-
11
- it 'global params' do
12
- Reviewed.global_params = { foo: 'bar' }
13
- Reviewed.global_params.should eql( { foo: 'bar' } )
14
- end
15
- end
16
-
17
- describe '.global_params' do
18
-
19
- it 'returns a hash' do
20
- Reviewed.global_params.should eql({})
21
- end
22
- end
23
-
24
-
25
- describe '.client' do
26
-
27
- it 'returns a Reviewed::Client' do
28
- Reviewed.client.should be_an_instance_of(Reviewed::Client)
29
- end
30
- end
31
-
32
- describe '.method_missing' do
33
-
34
- it 'delegates to the client' do
35
- Reviewed::Client.any_instance.should_receive(:api_key)
36
- Reviewed.api_key
7
+ it 'should respond to url' do
8
+ error = Reviewed::ResourceNotFound.new(url: 'url', msg: "msg")
9
+ error.url.should eql('url')
10
+ error.message.should eql('msg')
37
11
  end
38
12
  end
39
13
  end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
 
4
- require 'reviewed'
5
4
  require 'vcr'
5
+ require 'reviewed'
6
6
 
7
7
  Dir['spec/support/*'].each { |f| require f }
8
8
 
@@ -11,15 +11,16 @@ RSpec.configure do |config|
11
11
  config.alias_example_to :fit, :focused => true
12
12
  config.alias_example_to :pit, :pending => true
13
13
  config.run_all_when_everything_filtered = true
14
-
15
- config.extend VCR::RSpec::Macros
16
14
  end
17
15
 
18
16
  VCR.configure do |config|
19
17
  config.default_cassette_options = { record: :new_episodes }
20
18
  config.cassette_library_dir = 'spec/fixtures/vcr'
21
19
  config.hook_into :webmock
20
+ config.configure_rspec_metadata!
22
21
  end
23
22
 
24
- TEST_URL = Reviewed.base_uri = 'https://the-guide-staging.herokuapp.com/api'
25
- TEST_KEY = Reviewed.api_key = '1234567890'
23
+
24
+ TEST_URL = 'https://the-guide-staging.herokuapp.com/api/v1'
25
+ TEST_KEY = ENV['REVIEWED_API_KEY']
26
+
data/spec/website_spec.rb CHANGED
@@ -2,8 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Reviewed::Website do
4
4
 
5
- describe 'all' do
6
- use_vcr_cassette 'website/where_collection'
5
+ describe 'all', vcr: true do
7
6
 
8
7
  it 'calls "where" with correct arguements' do
9
8
  Reviewed::Website.should_receive(:where).with({per_page: 'all'})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reviewed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-27 00:00:00.000000000 Z
13
+ date: 2013-03-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -108,6 +108,22 @@ dependencies:
108
108
  - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
111
127
  - !ruby/object:Gem::Dependency
112
128
  name: rspec
113
129
  requirement: !ruby/object:Gem::Requirement
@@ -202,52 +218,80 @@ files:
202
218
  - LICENSE
203
219
  - README.md
204
220
  - Rakefile
205
- - lib/faraday/global_params.rb
221
+ - lib/faraday/api_key.rb
222
+ - lib/faraday/errors.rb
206
223
  - lib/reviewed.rb
207
224
  - lib/reviewed/article.rb
208
225
  - lib/reviewed/attachment.rb
209
226
  - lib/reviewed/author.rb
227
+ - lib/reviewed/award.rb
210
228
  - lib/reviewed/base.rb
211
229
  - lib/reviewed/brand.rb
212
230
  - lib/reviewed/client.rb
213
231
  - lib/reviewed/collection.rb
214
- - lib/reviewed/configurable.rb
215
232
  - lib/reviewed/embeddable.rb
216
233
  - lib/reviewed/manufacturer_spec.rb
217
234
  - lib/reviewed/page.rb
218
235
  - lib/reviewed/product.rb
219
- - lib/reviewed/utils.rb
236
+ - lib/reviewed/request.rb
220
237
  - lib/reviewed/version.rb
221
238
  - lib/reviewed/website.rb
222
239
  - reviewed.gemspec
223
240
  - spec/article_spec.rb
224
241
  - spec/author_spec.rb
242
+ - spec/award_spec.rb
225
243
  - spec/base_spec.rb
226
244
  - spec/brand_spec.rb
227
245
  - spec/client_spec.rb
228
246
  - spec/collection_spec.rb
229
- - spec/configurable_spec.rb
230
247
  - spec/embeddable_spec.rb
231
- - spec/faraday/global_params_spec.rb
232
- - spec/fixtures/vcr/article/attachments.yml
233
- - spec/fixtures/vcr/article/find_page.yml
234
- - spec/fixtures/vcr/article/products.yml
235
- - spec/fixtures/vcr/base/article/find.yml
236
- - spec/fixtures/vcr/base/where_collection.yml
237
- - spec/fixtures/vcr/collection/products.yml
238
- - spec/fixtures/vcr/faraday/global_params/request.yml
239
- - spec/fixtures/vcr/faraday/global_params/request_no_params.yml
240
- - spec/fixtures/vcr/faraday/global_params/request_params.yml
241
- - spec/fixtures/vcr/product/attachments.yml
242
- - spec/fixtures/vcr/product/manufacturer_specs.yml
243
- - spec/fixtures/vcr/utils.yml
244
- - spec/fixtures/vcr/utils/collection.yml
245
- - spec/fixtures/vcr/utils/object.yml
248
+ - spec/faraday/api_key_spec.rb
249
+ - spec/faraday/errors_spec.rb
250
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/does_not_have_any_matching_attachments.yml
251
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/finds_attachments_by_tag.yml
252
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/has_many_attachments.yml
253
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/returns_all_attachments.yml
254
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/returns_attachments_of_the_correct_class.yml
255
+ - spec/fixtures/vcr/Reviewed_Article/associations/pages/has_many_pages.yml
256
+ - spec/fixtures/vcr/Reviewed_Article/associations/products/has_many_products.yml
257
+ - spec/fixtures/vcr/Reviewed_Article/associations/products/returns_products_of_the_correct_class.yml
258
+ - spec/fixtures/vcr/Reviewed_Article/find_page/finds_a_page_with_a_matching_slug.yml
259
+ - spec/fixtures/vcr/Reviewed_Article/primary_product/returns_a_product_of_the_correct_class.yml
260
+ - spec/fixtures/vcr/Reviewed_Article/primary_product/returns_nil_if_does_not_respond_to_products.yml
261
+ - spec/fixtures/vcr/Reviewed_Article/primary_product/returns_the_primary_product.yml
262
+ - spec/fixtures/vcr/Reviewed_Client/_perform/request_params/not_set/has_nil_query_params.yml
263
+ - spec/fixtures/vcr/Reviewed_Client/_perform/request_params/set/merges_quest_params.yml
264
+ - spec/fixtures/vcr/Reviewed_Collection/collection_data/fetches_the_first_page_by_default.yml
265
+ - spec/fixtures/vcr/Reviewed_Collection/collection_data/is_enumerable.yml
266
+ - spec/fixtures/vcr/Reviewed_Collection/next_page/fetches_the_next_page_of_results.yml
267
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/indicates_if_the_page_number_is_out_of_bounds.yml
268
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/indicates_whether_this_is_the_first_or_last_page.yml
269
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_limit_value_max_per_page_.yml
270
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_number_of_entries_on_the_current_page.yml
271
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_offset.yml
272
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_total_item_count.yml
273
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_total_number_of_pages.yml
274
+ - spec/fixtures/vcr/Reviewed_Collection/previous_page/fetches_the_previous_page_of_results.yml
275
+ - spec/fixtures/vcr/Reviewed_Collection/previous_page/returns_nil_if_there_is_no_previous_page.yml
276
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/does_not_have_any_matching_attachments.yml
277
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/finds_attachments_by_tag.yml
278
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/has_many_attachments.yml
279
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/returns_all_attachments.yml
280
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/returns_attachments_of_the_correct_class.yml
281
+ - spec/fixtures/vcr/Reviewed_Product/manufacturer_specs/has_many_manufacturer_specs.yml
282
+ - spec/fixtures/vcr/Reviewed_Product/manufacturer_specs/returns_attachments_of_the_correct_class.yml
283
+ - spec/fixtures/vcr/Reviewed_Request/_where/filters_collections_using_other_supported_options.yml
284
+ - spec/fixtures/vcr/Reviewed_Request/_where/returns_a_collection.yml
285
+ - spec/fixtures/vcr/Reviewed_Request/_where/returns_an_empty_set_if_no_matching_data_was_found.yml
286
+ - spec/fixtures/vcr/Reviewed_Request/_where/returns_the_appropriate_page_of_results.yml
287
+ - spec/fixtures/vcr/Reviewed_Request/collection_from_response/returns_a_collection_object.yml
288
+ - spec/fixtures/vcr/Reviewed_Request/collection_from_response/returns_objects_of_the_correct_class.yml
289
+ - spec/fixtures/vcr/Reviewed_Request/object_from_response/returns_an_object_of_the_correct_class.yml
246
290
  - spec/product_spec.rb
291
+ - spec/request_spec.rb
247
292
  - spec/reviewed_spec.rb
248
293
  - spec/spec_helper.rb
249
294
  - spec/support/.gitkeep
250
- - spec/utils_spec.rb
251
295
  - spec/website_spec.rb
252
296
  homepage: ''
253
297
  licenses: []
@@ -269,37 +313,64 @@ required_rubygems_version: !ruby/object:Gem::Requirement
269
313
  version: '0'
270
314
  requirements: []
271
315
  rubyforge_project:
272
- rubygems_version: 1.8.24
316
+ rubygems_version: 1.8.25
273
317
  signing_key:
274
318
  specification_version: 3
275
319
  summary: A Ruby Gem for Accessing the Reviewed.com API
276
320
  test_files:
277
321
  - spec/article_spec.rb
278
322
  - spec/author_spec.rb
323
+ - spec/award_spec.rb
279
324
  - spec/base_spec.rb
280
325
  - spec/brand_spec.rb
281
326
  - spec/client_spec.rb
282
327
  - spec/collection_spec.rb
283
- - spec/configurable_spec.rb
284
328
  - spec/embeddable_spec.rb
285
- - spec/faraday/global_params_spec.rb
286
- - spec/fixtures/vcr/article/attachments.yml
287
- - spec/fixtures/vcr/article/find_page.yml
288
- - spec/fixtures/vcr/article/products.yml
289
- - spec/fixtures/vcr/base/article/find.yml
290
- - spec/fixtures/vcr/base/where_collection.yml
291
- - spec/fixtures/vcr/collection/products.yml
292
- - spec/fixtures/vcr/faraday/global_params/request.yml
293
- - spec/fixtures/vcr/faraday/global_params/request_no_params.yml
294
- - spec/fixtures/vcr/faraday/global_params/request_params.yml
295
- - spec/fixtures/vcr/product/attachments.yml
296
- - spec/fixtures/vcr/product/manufacturer_specs.yml
297
- - spec/fixtures/vcr/utils.yml
298
- - spec/fixtures/vcr/utils/collection.yml
299
- - spec/fixtures/vcr/utils/object.yml
329
+ - spec/faraday/api_key_spec.rb
330
+ - spec/faraday/errors_spec.rb
331
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/does_not_have_any_matching_attachments.yml
332
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/finds_attachments_by_tag.yml
333
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/has_many_attachments.yml
334
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/returns_all_attachments.yml
335
+ - spec/fixtures/vcr/Reviewed_Article/associations/attachments/returns_attachments_of_the_correct_class.yml
336
+ - spec/fixtures/vcr/Reviewed_Article/associations/pages/has_many_pages.yml
337
+ - spec/fixtures/vcr/Reviewed_Article/associations/products/has_many_products.yml
338
+ - spec/fixtures/vcr/Reviewed_Article/associations/products/returns_products_of_the_correct_class.yml
339
+ - spec/fixtures/vcr/Reviewed_Article/find_page/finds_a_page_with_a_matching_slug.yml
340
+ - spec/fixtures/vcr/Reviewed_Article/primary_product/returns_a_product_of_the_correct_class.yml
341
+ - spec/fixtures/vcr/Reviewed_Article/primary_product/returns_nil_if_does_not_respond_to_products.yml
342
+ - spec/fixtures/vcr/Reviewed_Article/primary_product/returns_the_primary_product.yml
343
+ - spec/fixtures/vcr/Reviewed_Client/_perform/request_params/not_set/has_nil_query_params.yml
344
+ - spec/fixtures/vcr/Reviewed_Client/_perform/request_params/set/merges_quest_params.yml
345
+ - spec/fixtures/vcr/Reviewed_Collection/collection_data/fetches_the_first_page_by_default.yml
346
+ - spec/fixtures/vcr/Reviewed_Collection/collection_data/is_enumerable.yml
347
+ - spec/fixtures/vcr/Reviewed_Collection/next_page/fetches_the_next_page_of_results.yml
348
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/indicates_if_the_page_number_is_out_of_bounds.yml
349
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/indicates_whether_this_is_the_first_or_last_page.yml
350
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_limit_value_max_per_page_.yml
351
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_number_of_entries_on_the_current_page.yml
352
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_offset.yml
353
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_total_item_count.yml
354
+ - spec/fixtures/vcr/Reviewed_Collection/page_attributes_pagination_/returns_the_total_number_of_pages.yml
355
+ - spec/fixtures/vcr/Reviewed_Collection/previous_page/fetches_the_previous_page_of_results.yml
356
+ - spec/fixtures/vcr/Reviewed_Collection/previous_page/returns_nil_if_there_is_no_previous_page.yml
357
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/does_not_have_any_matching_attachments.yml
358
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/finds_attachments_by_tag.yml
359
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/has_many_attachments.yml
360
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/returns_all_attachments.yml
361
+ - spec/fixtures/vcr/Reviewed_Product/associations/attachments/returns_attachments_of_the_correct_class.yml
362
+ - spec/fixtures/vcr/Reviewed_Product/manufacturer_specs/has_many_manufacturer_specs.yml
363
+ - spec/fixtures/vcr/Reviewed_Product/manufacturer_specs/returns_attachments_of_the_correct_class.yml
364
+ - spec/fixtures/vcr/Reviewed_Request/_where/filters_collections_using_other_supported_options.yml
365
+ - spec/fixtures/vcr/Reviewed_Request/_where/returns_a_collection.yml
366
+ - spec/fixtures/vcr/Reviewed_Request/_where/returns_an_empty_set_if_no_matching_data_was_found.yml
367
+ - spec/fixtures/vcr/Reviewed_Request/_where/returns_the_appropriate_page_of_results.yml
368
+ - spec/fixtures/vcr/Reviewed_Request/collection_from_response/returns_a_collection_object.yml
369
+ - spec/fixtures/vcr/Reviewed_Request/collection_from_response/returns_objects_of_the_correct_class.yml
370
+ - spec/fixtures/vcr/Reviewed_Request/object_from_response/returns_an_object_of_the_correct_class.yml
300
371
  - spec/product_spec.rb
372
+ - spec/request_spec.rb
301
373
  - spec/reviewed_spec.rb
302
374
  - spec/spec_helper.rb
303
375
  - spec/support/.gitkeep
304
- - spec/utils_spec.rb
305
376
  - spec/website_spec.rb
@@ -1,21 +0,0 @@
1
- module Faraday
2
- class GlobalParams < Faraday::Middleware
3
-
4
- def call(env)
5
- params = Reviewed.global_params
6
-
7
- if params && params.is_a?(Hash)
8
- path = env[:url].path
9
-
10
- query = ::Rack::Utils.parse_nested_query(env[:url].query) || {}
11
- query = Faraday::Utils.build_query(query.merge(params))
12
-
13
- env[:url].query = query unless query.blank?
14
- end
15
-
16
- @app.call(env)
17
- end
18
- end
19
- end
20
-
21
- Faraday.register_middleware :request, global_params: Faraday::GlobalParams
@@ -1,26 +0,0 @@
1
- module Reviewed
2
- module Configurable
3
-
4
- class << self
5
-
6
- def options
7
- {
8
- api_key: nil,
9
- base_uri: 'http://localhost:3000/api',
10
- api_version: 'v1'
11
- }
12
- end
13
- end
14
-
15
- def configure
16
- yield self
17
- self
18
- end
19
-
20
- def verify_key!
21
- unless Reviewed.api_key
22
- raise ConfigurationError.new("Please set Reviewed.api_key before making a request")
23
- end
24
- end
25
- end
26
- end
@@ -1,21 +0,0 @@
1
- module Reviewed
2
- module Utils
3
-
4
- def self.included(klass)
5
- klass.extend(Reviewed::Utils::ClassMethods)
6
- end
7
-
8
- module ClassMethods
9
-
10
- def object_from_response(method, url, params={})
11
- response = Reviewed.send(method, url, params)
12
- self.new(response.body)
13
- end
14
-
15
- def collection_from_response(method, url, params={})
16
- response = Reviewed.send(method, url, params)
17
- Reviewed::Collection.new(self, response, params)
18
- end
19
- end
20
- end
21
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper.rb'
2
-
3
- describe Reviewed::Configurable do
4
-
5
- let(:client) { Reviewed::Client.new }
6
-
7
- describe '.options' do
8
-
9
- it 'returns a default set of options' do
10
- Reviewed::Configurable.options.should be_an_instance_of(Hash)
11
- end
12
- end
13
-
14
- describe '#configure' do
15
-
16
- it 'returns self' do
17
- client.configure{}.should be_an_instance_of(Reviewed::Client)
18
- end
19
-
20
- it 'yields self' do
21
- client.configure do |config|
22
- config.api_key = 'test_key'
23
- end
24
- client.api_key.should eql('test_key')
25
- end
26
- end
27
-
28
- describe '#verify_key' do
29
-
30
- after(:each) { Reviewed.api_key = TEST_KEY }
31
-
32
- it 'allow when api_key is present' do
33
- client.base_uri.should_not be_nil
34
- client.verify_key!
35
- end
36
-
37
- it 'raises a ConfigurationError if api_key not present' do
38
- Reviewed.api_key = nil
39
- expect {
40
- client.verify_key!
41
- }.to raise_error(Reviewed::ConfigurationError)
42
- end
43
- end
44
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper.rb'
2
-
3
- describe Faraday::GlobalParams do
4
-
5
- class FauxApp
6
- def call(env)
7
- return env
8
- end
9
- end
10
-
11
- let(:faraday) { Faraday::GlobalParams.new(FauxApp.new) }
12
- let(:env) { { url: URI.parse("http://www.the-guide-staging.com/api/v1/articles") } }
13
-
14
- context 'branch present' do
15
-
16
- before(:each) do
17
- Reviewed.stub!(:global_params).and_return( foo: "bar" )
18
- end
19
-
20
- it 'adds the branch to the query params' do
21
- out = faraday.call(env)
22
- out[:url].query.should eql("foo=bar")
23
- end
24
- end
25
-
26
- context 'no branch present' do
27
-
28
- it 'does not add the branch to the query params' do
29
- out = faraday.call(env)
30
- out[:url].query.should be_nil
31
- end
32
- end
33
- end