activeresource-response 0.5.3 → 1.0.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.
- data/.travis.yml +0 -5
- data/activeresource-response.gemspec +1 -1
- data/lib/active_resource_response/custom_methods.rb +2 -2
- data/lib/active_resource_response/response_method.rb +17 -17
- data/lib/active_resource_response/version.rb +1 -1
- data/test/active_resource_response_test.rb +13 -3
- metadata +9 -9
data/.travis.yml
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.description = %q{This gem adds possibility to access http response object from result of ActiveResource::Base find method }
|
14
14
|
|
15
15
|
|
16
|
-
s.add_dependency('activeresource', '>=
|
16
|
+
s.add_dependency('activeresource', '>= 4.0.0')
|
17
17
|
|
18
18
|
s.add_dependency "jruby-openssl" if RUBY_PLATFORM == "java"
|
19
19
|
s.add_development_dependency "test-unit"
|
@@ -31,7 +31,7 @@ module ActiveResourceResponse
|
|
31
31
|
def get(custom_method_name, options = {})
|
32
32
|
result = self.origin_get(custom_method_name, options)
|
33
33
|
if self.respond_to? :http_response_method
|
34
|
-
result = self.
|
34
|
+
result = self.wrap_result(result)
|
35
35
|
end
|
36
36
|
result
|
37
37
|
end
|
@@ -41,7 +41,7 @@ module ActiveResourceResponse
|
|
41
41
|
def get(custom_method_name, options = {})
|
42
42
|
result = super(custom_method_name, options)
|
43
43
|
if self.class.respond_to? :http_response_method
|
44
|
-
result = self.class.
|
44
|
+
result = self.class.wrap_result(result)
|
45
45
|
end
|
46
46
|
result
|
47
47
|
end
|
@@ -20,6 +20,7 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
+
require 'delegate'
|
23
24
|
module ActiveResourceResponse
|
24
25
|
|
25
26
|
module ResponseMethod
|
@@ -36,34 +37,33 @@ module ActiveResourceResponse
|
|
36
37
|
|
37
38
|
def add_response_method(method_name = :http_response)
|
38
39
|
class_attribute :http_response_method
|
39
|
-
self.http_response_method = method_name
|
40
|
+
self.http_response_method = method_name
|
40
41
|
class << self
|
41
42
|
alias :find_without_http_response :find
|
42
43
|
|
43
44
|
def find(*arguments)
|
44
45
|
result = find_without_http_response(*arguments)
|
45
|
-
self.
|
46
|
+
self.wrap_result(result)
|
46
47
|
end
|
47
48
|
end unless methods.map(&:to_sym).include?(:find_without_http_response)
|
48
49
|
end
|
49
|
-
|
50
|
+
|
50
51
|
def remove_response_method
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
52
|
+
class << self
|
53
|
+
undef :find
|
54
|
+
alias :find :find_without_http_response
|
55
|
+
undef :find_without_http_response
|
56
|
+
undef :http_response_method
|
57
|
+
undef :http_response_method=
|
58
|
+
end
|
58
59
|
end
|
59
60
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
rescue StandardError
|
61
|
+
def wrap_result(result)
|
62
|
+
|
63
|
+
result = SimpleDelegator.new(result)
|
64
|
+
result.instance_variable_set(:@http_response, connection.http_response)
|
65
|
+
result.singleton_class.send(:define_method, self.http_response_method) do
|
66
|
+
@http_response
|
67
67
|
end
|
68
68
|
result
|
69
69
|
end
|
@@ -33,12 +33,13 @@ require "fixtures/city"
|
|
33
33
|
require "fixtures/region"
|
34
34
|
require "fixtures/street"
|
35
35
|
require "active_resource_response/http_mock"
|
36
|
+
|
36
37
|
class ActiveResourceResponseTest < Test::Unit::TestCase
|
37
38
|
|
38
39
|
|
39
40
|
def setup
|
40
41
|
@country = {:country => {:id => 1, :name => "Ukraine", :iso=>"UA"}}
|
41
|
-
@country_create_error = {
|
42
|
+
@country_create_error = {:errors => {:base => ["country exists"]}}
|
42
43
|
@city = {:city => {:id => 1, :name => "Odessa", :population => 2500000}}
|
43
44
|
@region = {:region => {:id => 1, :name => "Odessa region", :population => 4500000}}
|
44
45
|
@street = {:street => {:id => 1, :name => "Deribasovskaya", :population => 2300}}
|
@@ -51,7 +52,7 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
51
52
|
mock.get "/regions/cities.json", {}, [@city].to_json, 200, {"X-total"=>'2'}
|
52
53
|
mock.get "/countries/1.json", {}, @country.to_json, 200, {"X-total"=>'1', 'Set-Cookie'=>['path=/; expires=Tue, 20-Jan-2015 15:03:14 GMT, foo=bar, bar=foo']}
|
53
54
|
mock.get "/countries/1/population.json", {}, {:count => 45000000}.to_json, 200, {"X-total"=>'1'}
|
54
|
-
mock.post "/countries.json", {}, @
|
55
|
+
mock.post "/countries.json", {}, @country_create_error.to_json, 422, {"X-total"=>'1'}
|
55
56
|
mock.get "/countries/1/cities.json", {}, [@city].to_json, 200, {"X-total"=>'1'}
|
56
57
|
mock.get "/regions/1/cities.json", {}, [@city].to_json, 200, {"X-total"=>'1'}
|
57
58
|
mock.get "/cities/1/population.json", {}, {:count => 2500000}.to_json, 200, {"X-total"=>'1'}
|
@@ -87,7 +88,13 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
87
88
|
assert cities.respond_to?(:http_response)
|
88
89
|
assert_equal cities.http_response.headers[:x_total].to_i, 2
|
89
90
|
count = Country.find(1).get("population")
|
90
|
-
|
91
|
+
|
92
|
+
#immutable objects doing good
|
93
|
+
some_numeric = 45000000
|
94
|
+
assert_equal count.to_i, some_numeric
|
95
|
+
assert count.respond_to?(:http)
|
96
|
+
assert !some_numeric.respond_to?(:http)
|
97
|
+
|
91
98
|
assert_equal Country.connection.http_response.headers[:x_total].to_i, 1
|
92
99
|
assert_equal Country.http_response.headers[:x_total].to_i, 1
|
93
100
|
cities = Country.find(1).get("cities")
|
@@ -107,6 +114,7 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
107
114
|
assert_kind_of City, cities.first
|
108
115
|
count = cities.first.get("population")
|
109
116
|
assert_equal count.to_i, 2500000
|
117
|
+
|
110
118
|
end
|
111
119
|
|
112
120
|
def test_get_headers_from_find
|
@@ -128,6 +136,8 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
128
136
|
country = Country.create(@country[:country])
|
129
137
|
assert_equal Country.http_response.headers[:x_total].to_i, 1
|
130
138
|
assert_equal Country.http_response.code, 422
|
139
|
+
assert_equal country.errors.full_messages.count ,1
|
140
|
+
assert_equal country.errors.count ,1
|
131
141
|
end
|
132
142
|
|
133
143
|
def test_remove_method
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeresource-response
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activeresource
|
16
|
-
requirement: &
|
16
|
+
requirement: &70196300726880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 4.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70196300726880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: test-unit
|
27
|
-
requirement: &
|
27
|
+
requirement: &70196300725540 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70196300725540
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70196300738620 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70196300738620
|
47
47
|
description: ! 'This gem adds possibility to access http response object from result
|
48
48
|
of ActiveResource::Base find method '
|
49
49
|
email:
|