reviewed 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/faraday/branches.rb +19 -0
- data/lib/reviewed/article.rb +4 -0
- data/lib/reviewed/client.rb +1 -0
- data/lib/reviewed/collection.rb +1 -1
- data/lib/reviewed/manufacturer_spec.rb +4 -0
- data/lib/reviewed/product.rb +1 -0
- data/lib/reviewed/utils.rb +1 -5
- data/lib/reviewed/version.rb +1 -1
- data/lib/reviewed.rb +2 -0
- data/spec/article_spec.rb +12 -0
- data/spec/embeddable_spec.rb +18 -4
- data/spec/faraday/branches_spec.rb +62 -0
- data/spec/fixtures/vcr/faraday/global_params/request.yml +109 -0
- data/spec/fixtures/vcr/faraday/global_params/request_no_params.yml +885 -0
- data/spec/fixtures/vcr/faraday/global_params/request_params.yml +405 -0
- data/spec/fixtures/vcr/product/manufacturer_specs.yml +109 -0
- data/spec/product_spec.rb +18 -0
- data/spec/utils_spec.rb +0 -7
- metadata +14 -2
@@ -0,0 +1,19 @@
|
|
1
|
+
module Faraday
|
2
|
+
class Branches < Faraday::Middleware
|
3
|
+
|
4
|
+
def call(env)
|
5
|
+
path = env[:url].path
|
6
|
+
branch = Reviewed::Article.branch
|
7
|
+
|
8
|
+
if path =~ /#{Reviewed::Article.resource_url}/ && branch
|
9
|
+
query = env[:url].query || {}
|
10
|
+
branch = Reviewed::Article.branch
|
11
|
+
env[:url].query = Faraday::Utils.build_query(query.merge(branch: branch))
|
12
|
+
end
|
13
|
+
|
14
|
+
@app.call(env)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Faraday.register_middleware :request, branches: Faraday::Branches
|
data/lib/reviewed/article.rb
CHANGED
data/lib/reviewed/client.rb
CHANGED
data/lib/reviewed/collection.rb
CHANGED
data/lib/reviewed/product.rb
CHANGED
data/lib/reviewed/utils.rb
CHANGED
@@ -9,17 +9,13 @@ module Reviewed
|
|
9
9
|
|
10
10
|
def object_from_response(method, url, params={})
|
11
11
|
response = Reviewed.send(method, url, params)
|
12
|
-
self.
|
12
|
+
self.new(response.body)
|
13
13
|
end
|
14
14
|
|
15
15
|
def collection_from_response(method, url, params={})
|
16
16
|
response = Reviewed.send(method, url, params)
|
17
17
|
Reviewed::Collection.new(self, response, params)
|
18
18
|
end
|
19
|
-
|
20
|
-
def from_response(data)
|
21
|
-
self.new(data)
|
22
|
-
end
|
23
19
|
end
|
24
20
|
end
|
25
21
|
end
|
data/lib/reviewed/version.rb
CHANGED
data/lib/reviewed.rb
CHANGED
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
|
|
2
2
|
|
3
3
|
require 'faraday'
|
4
4
|
require 'faraday_middleware'
|
5
|
+
require 'faraday/branches'
|
5
6
|
require 'active_support/inflector'
|
6
7
|
require 'active_support/core_ext'
|
7
8
|
require 'active_model'
|
@@ -14,6 +15,7 @@ require 'reviewed/client'
|
|
14
15
|
require 'reviewed/collection'
|
15
16
|
require 'reviewed/base'
|
16
17
|
|
18
|
+
require 'reviewed/manufacturer_spec'
|
17
19
|
require 'reviewed/product'
|
18
20
|
require 'reviewed/article'
|
19
21
|
require 'reviewed/author'
|
data/spec/article_spec.rb
CHANGED
@@ -2,6 +2,18 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Reviewed::Article do
|
4
4
|
|
5
|
+
describe 'accessors' do
|
6
|
+
|
7
|
+
after(:each) do
|
8
|
+
Reviewed::Article.branch = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'global params' do
|
12
|
+
Reviewed::Article.branch = 'test'
|
13
|
+
Reviewed::Article.branch.should eql('test')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
5
17
|
describe 'associations' do
|
6
18
|
|
7
19
|
describe 'pages' do
|
data/spec/embeddable_spec.rb
CHANGED
@@ -95,18 +95,32 @@ describe Reviewed::Embeddable do
|
|
95
95
|
|
96
96
|
describe 'objectify_has_many' do
|
97
97
|
|
98
|
-
let(:data) { { "articles" => [{},{}] } }
|
99
98
|
let(:mocked) { Reviewed::MockEmbeddable.new }
|
100
99
|
|
101
100
|
before(:each) do
|
102
101
|
Reviewed::MockEmbeddable._embedded_many = [ { "articles" => Reviewed::Article } ]
|
103
102
|
end
|
104
103
|
|
105
|
-
|
106
|
-
|
107
|
-
|
104
|
+
context 'relationship exists in json' do
|
105
|
+
|
106
|
+
let(:data) { { "articles" => [{},{}] } }
|
107
|
+
|
108
|
+
it 'objectifies' do
|
109
|
+
mocked.objectify_has_many(data)["articles"].each do |obj|
|
110
|
+
obj.should be_an_instance_of Reviewed::Article
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'relationship does not have json' do
|
116
|
+
|
117
|
+
let(:data) { { foo: 'bar' } }
|
118
|
+
|
119
|
+
it 'does not error' do
|
120
|
+
mocked.objectify_has_many(data).should eql( { foo: 'bar' } )
|
108
121
|
end
|
109
122
|
end
|
123
|
+
|
110
124
|
end
|
111
125
|
|
112
126
|
describe 'objectify_has_one' do
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper.rb'
|
2
|
+
|
3
|
+
describe Faraday::Branches do
|
4
|
+
|
5
|
+
class FauxApp
|
6
|
+
def call(env)
|
7
|
+
return env
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:faraday) { Faraday::Branches.new(FauxApp.new) }
|
12
|
+
|
13
|
+
context 'Articles' do
|
14
|
+
|
15
|
+
let(:env) { { url: URI.parse("http://www.the-guide-staging.com/api/v1/articles") } }
|
16
|
+
|
17
|
+
context 'branch present' do
|
18
|
+
|
19
|
+
before(:each) do
|
20
|
+
Reviewed::Article.stub!(:branch).and_return("test")
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'adds the branch to the query params' do
|
24
|
+
out = faraday.call(env)
|
25
|
+
out[:url].query.should eql("branch=test")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'no branch present' do
|
30
|
+
|
31
|
+
it 'does not add the branch to the query params' do
|
32
|
+
out = faraday.call(env)
|
33
|
+
out[:url].query.should be_nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'Others' do
|
39
|
+
|
40
|
+
let(:env) { { url: URI.parse("http://www.the-guide-staging.com/api/v1/products") } }
|
41
|
+
|
42
|
+
context 'branch present' do
|
43
|
+
|
44
|
+
before(:each) do
|
45
|
+
Reviewed::Article.stub!(:branch).and_return("test")
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'adds the branch to the query params' do
|
49
|
+
out = faraday.call(env)
|
50
|
+
out[:url].query.should eql(nil)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'no branch present' do
|
55
|
+
|
56
|
+
it 'does not add the branch to the query params' do
|
57
|
+
out = faraday.call(env)
|
58
|
+
out[:url].query.should be_nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://the-guide-staging.herokuapp.com/api/v1/products/minden-master-ii
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
X-Reviewed-Authorization:
|
11
|
+
- '1234567890'
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- ! '*/*'
|
16
|
+
User-Agent:
|
17
|
+
- Ruby
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: !binary |-
|
22
|
+
T0s=
|
23
|
+
headers:
|
24
|
+
!binary "QWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM=":
|
25
|
+
- !binary |-
|
26
|
+
dHJ1ZQ==
|
27
|
+
!binary "QWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycw==":
|
28
|
+
- !binary |-
|
29
|
+
eC1wYWdpbmF0aW9uLCB4LXJlcXVlc3RlZC13aXRoLCB4LXJlcXVlc3RlZC1i
|
30
|
+
eSwgeC1yZXZpZXdlZC1hdXRob3JpemF0aW9uLCBDb250ZW50LVR5cGU=
|
31
|
+
!binary "QWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcw==":
|
32
|
+
- !binary |-
|
33
|
+
T1BUSU9OUywgR0VULCBQT1NULCBQVVQsIERFTEVURQ==
|
34
|
+
!binary "QWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2lu":
|
35
|
+
- !binary |-
|
36
|
+
Kg==
|
37
|
+
!binary "QWNjZXNzLUNvbnRyb2wtTWF4LUFnZQ==":
|
38
|
+
- !binary |-
|
39
|
+
MTAwMA==
|
40
|
+
!binary "Q2FjaGUtQ29udHJvbA==":
|
41
|
+
- !binary |-
|
42
|
+
bm8tY2FjaGUsIG5vLXN0b3Jl
|
43
|
+
!binary "Q29udGVudC1FbmNvZGluZw==":
|
44
|
+
- !binary |-
|
45
|
+
Z3ppcA==
|
46
|
+
!binary "Q29udGVudC1UeXBl":
|
47
|
+
- !binary |-
|
48
|
+
YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==
|
49
|
+
!binary "RGF0ZQ==":
|
50
|
+
- !binary |-
|
51
|
+
TW9uLCAyNiBOb3YgMjAxMiAyMDozOTowMSBHTVQ=
|
52
|
+
!binary "TGFzdC1Nb2RpZmllZA==":
|
53
|
+
- !binary |-
|
54
|
+
RnJpLCAwOSBOb3YgMjAxMiAyMDoxNjo0MCBHTVQ=
|
55
|
+
!binary "U2VydmVy":
|
56
|
+
- !binary |-
|
57
|
+
dGhpbiAxLjUuMCBjb2RlbmFtZSBLbmlmZQ==
|
58
|
+
!binary "U3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eQ==":
|
59
|
+
- !binary |-
|
60
|
+
bWF4LWFnZT0zMTUzNjAwMA==
|
61
|
+
!binary "VmFyeQ==":
|
62
|
+
- !binary |-
|
63
|
+
QWNjZXB0LUVuY29kaW5n
|
64
|
+
!binary "WC1SYWNrLUNhY2hl":
|
65
|
+
- !binary |-
|
66
|
+
bWlzcw==
|
67
|
+
!binary "WC1SYXRlLUxpbWl0":
|
68
|
+
- !binary |-
|
69
|
+
MTAwMDAw
|
70
|
+
!binary "WC1SZXF1ZXN0LUlk":
|
71
|
+
- !binary |-
|
72
|
+
M2U2ZDkzNmYzM2MxODlhYmU5YzAxNWE4Y2YwY2ExZGE=
|
73
|
+
!binary "WC1SdW50aW1l":
|
74
|
+
- !binary |-
|
75
|
+
MC4yMDk1NTQ=
|
76
|
+
!binary "WC1VYS1Db21wYXRpYmxl":
|
77
|
+
- !binary |-
|
78
|
+
SUU9RWRnZSxjaHJvbWU9MQ==
|
79
|
+
!binary "VHJhbnNmZXItRW5jb2Rpbmc=":
|
80
|
+
- !binary |-
|
81
|
+
Y2h1bmtlZA==
|
82
|
+
!binary "Q29ubmVjdGlvbg==":
|
83
|
+
- !binary |-
|
84
|
+
a2VlcC1hbGl2ZQ==
|
85
|
+
body:
|
86
|
+
encoding: ASCII-8BIT
|
87
|
+
string: !binary |-
|
88
|
+
H4sIAKhknVAAA8RWS2/bOBD+K4au6wdJvSxd9rJAN4cAiyKnLRbC8CGHrV4g
|
89
|
+
qWTTIP+9Q8l25LZWUCBQfbA9nE+cb16aeQ60DPIgJpkIMwDFBCQqyeJYCJqJ
|
90
|
+
JFgHwihwShbgEMcIZRsSb2h8x2hOWU7jfxHTd/I7DKUbkt0xktMkj4jHNFAr
|
91
|
+
1N7qRqpmdQvWKbO6uUGNrfoDaupBs6kHzUZr1BTuqfMP/d3WKs8/GF1VFn/B
|
92
|
+
os6rbJB/Cv4xbQeNCv5bB51pZS9cYcDpBu9s+qpaBwaaL4P4HLjWQTU9H/+/
|
93
|
+
rIPami7IozTbknUAxmlRqULLwQJGR9Is5gmRKpU8SwVJIsm4N/mouNVuChVM
|
94
|
+
KTpCSxHGBD8cBnY9r7S9L9pmGsn9Hc3yMMoJ+YMQ/B7CKU4cO6OFKg4GOFem
|
95
|
+
GHKFANNzPC/OqWMlyS4sRlGJMI4eyglKlekFiu3T82U+Om/d92Mp+DTv75iv
|
96
|
+
gzxMr5fCJeZYCqilK0zmakjs6uPIA31WptbW6raxnhUaRV7O9OrE4CSNtk6S
|
97
|
+
VNaZ9mkUX17OqfF5mfr2s+zM+xbl8bxvYc4yrPSJb2Ot3jRluxVt7Z81WHfB
|
98
|
+
YTjWr8eilQP84827OY6VVkPTlyBcb7BobKeEjwGeg3Mg7mvVuMugyCSC/RiU
|
99
|
+
VNCU0GQv2dWgXPb1L/f+JkzI7V+bB2i0e9p+7g7HZkZAqSvlJTgMzTRCfOs8
|
100
|
+
KHMOi43J/zFB9L1zXb7bWYRje2+NetDqUcntxMutDbdQw9e2gUfrQ757Ve5C
|
101
|
+
zqSkkVSJoDwDXkIJRJaxwrcAj6MU20WknMvdaLG4Tt9SRNCFSR1tztFiCGEL
|
102
|
+
0zranKMVEmRO2aK0jjbnaOHLANO8dGUNNudoJQiJFqZ1tDlHK4uWp3W0+Rat
|
103
|
+
cOGSP9p8ixaly9NCmzO0WqORhN+IlqN1jc3LMMiE0Z3TfkMa9x+cLeBf+uP4
|
104
|
+
9CTtb2W5HmZUYfVXnFcsi8O9n+GNw8tPy6qu4aB2nzs1+PRuM31Y5i63tJ/v
|
105
|
+
c3MLO83ZlU3mR8zF0P5+TT9tNGOWqvbQFhP5vTY4A4+FFa3xO9wzylZAhayn
|
106
|
+
R7jqK+CVZ9o3Z+H1/M/T5e/D6RsAAAD//wMAIVflnjANAAA=
|
107
|
+
http_version:
|
108
|
+
recorded_at: Mon, 26 Nov 2012 20:39:03 GMT
|
109
|
+
recorded_with: VCR 2.3.0
|