reviewed 0.1.2 → 0.1.4

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.
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