activeresource-response 0.5.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|