restful_resource 0.8.20 → 0.8.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e331eba07a0e8c7a74b10add8adb9b76b913133f
4
- data.tar.gz: 5a9ec4b285423351c9e9495c655e62e9b9c3abdf
3
+ metadata.gz: 2a732e7bc8b6e209642bf2606202c10c111d9e94
4
+ data.tar.gz: 9e78ed6cfafb5b9705465d7e7991a4b89550b919
5
5
  SHA512:
6
- metadata.gz: eae107d9e38d8cf10ffcf9ca9895ceefe1d34bcc1e28b41ba55bffa154b8b323102fbb1e1a34edfcffa6d005cc13be0ec527af73a7f52bf94d9b3fda0b28e6e0
7
- data.tar.gz: b7f374115802d5259c635c0f4d3e65b05fe681d701d28da534da6aa3b40e76a2c71052022de34c526abe4958907d9eadad2211ace3e0ac682d5e6e417827ef16
6
+ metadata.gz: b6697c2d6ee89fc98dc290122f671ff04af6f261d38527ecbefa2a54652741ea3cdffc220758977c87068893d07d56101e3efda5afee908d04c6d1d0dcdd9744
7
+ data.tar.gz: 712efa62b49ef8978636cee84959faef7615ae9ddf0b1b0a935c086566ebe20771384656155908b7775976bcf7d83f505b953044cf6ac3ff3fe1d92f5afe770f
@@ -2,24 +2,32 @@ module RestfulResource
2
2
  module Associations
3
3
  def has_many(nested_resource_type)
4
4
  namespace = self.to_s.deconstantize
5
- klass_name = "#{nested_resource_type.to_s.singularize.camelize}"
5
+ klass_name = "#{nested_resource_type.to_s.singularize.camelize.to_s}"
6
6
  klass_name = "#{namespace}::#{klass_name}" if namespace.present?
7
7
 
8
8
  self.send(:define_method, nested_resource_type) do
9
- klass = klass_name.safe_constantize
10
- klass = RestfulResource::OpenObject if (klass.nil? || !(klass < RestfulResource::Base))
9
+ klass = begin
10
+ klass_name.safe_constantize
11
+ rescue NameError
12
+ nil
13
+ end
14
+ klass = RestfulResource::OpenObject if (klass.nil? || !(klass < RestfulResource::OpenObject))
11
15
  @inner_object.send(nested_resource_type).map { |obj| klass.new(obj) }
12
16
  end
13
17
  end
14
18
 
15
19
  def has_one(nested_resource_type)
16
20
  namespace = self.to_s.deconstantize
17
- klass_name = "#{nested_resource_type.to_s.camelize}"
21
+ klass_name = "#{nested_resource_type.to_s.camelize.to_s}"
18
22
  klass_name = "#{namespace}::#{klass_name}" if namespace.present?
19
23
 
20
24
  self.send(:define_method, nested_resource_type) do
21
- klass = klass_name.safe_constantize
22
- klass = RestfulResource::OpenObject if (klass.nil? || !(klass < RestfulResource::Base))
25
+ klass = begin
26
+ klass_name.safe_constantize
27
+ rescue NameError
28
+ nil
29
+ end
30
+ klass = RestfulResource::OpenObject if (klass.nil? || !(klass < RestfulResource::OpenObject))
23
31
  nested_resource = @inner_object.send(nested_resource_type)
24
32
  return nil if nested_resource.nil?
25
33
  klass.new(@inner_object.send(nested_resource_type))
@@ -4,9 +4,9 @@ module RestfulResource
4
4
  @inner_object = OpenStruct.new(attributes)
5
5
  end
6
6
 
7
- def method_missing(method)
7
+ def method_missing(method, *args, &block)
8
8
  if @inner_object.respond_to?(method)
9
- @inner_object.send(method)
9
+ @inner_object.send(method, *args, &block)
10
10
  else
11
11
  super(method)
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module RestfulResource
2
- VERSION = "0.8.20"
2
+ VERSION = "0.8.21"
3
3
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
23
+ spec.add_development_dependency "rspec", "~> 3.1"
24
24
 
25
25
  spec.add_dependency "rest-client"
26
26
  spec.add_dependency "link_header"
data/spec/fixtures.rb CHANGED
@@ -32,6 +32,7 @@ module ComplicatedModule
32
32
  class Parent < BaseA
33
33
  resource_path "parent"
34
34
  has_many :children
35
+ has_many :other_things
35
36
 
36
37
  def is_parent?
37
38
  true
@@ -5,6 +5,7 @@ describe RestfulResource::Associations do
5
5
  before :each do
6
6
  @parent = ComplicatedModule::Parent.new({
7
7
  name: 'John Doe',
8
+ other_things: [{stuff: 'aaa'}, {stuff: 'bbb'}],
8
9
  children:
9
10
  [
10
11
  {first_name: 'David', second_name: 'Doe'},
@@ -22,6 +23,10 @@ describe RestfulResource::Associations do
22
23
  it "should pick the right class for the instantiation of chilren" do
23
24
  expect(@parent.children.first.full_name).to eq 'David Doe'
24
25
  end
26
+
27
+ it "should use open object when can't infer class name of association" do
28
+ expect(@parent.other_things.first.stuff).to eq 'aaa'
29
+ end
25
30
  end
26
31
 
27
32
  describe "#has_one" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restful_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.20
4
+ version: 0.8.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Santoro
@@ -43,16 +43,16 @@ dependencies:
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ~>
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: '3.1'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ~>
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: '3.1'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rest-client
58
58
  requirement: !ruby/object:Gem::Requirement