restful_resource 0.8.20 → 0.8.21

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