acfs 0.23.1 → 0.23.2.b199

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,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 86289d5859ba20599d5eb05d95bcbb71e6e7926b
4
- data.tar.gz: daa9e0ca7cba3c8f118b5a5530cd31a6c448bc46
5
- SHA512:
6
- metadata.gz: 5e95b2353c13accec3a77b1d479d104df74e8b055bc146b852dd8c2e0a0bc7707eb6ca268e6ef1c6a3816da1a24047ef1e1207ff5af324df74b8e3deb32ff814
7
- data.tar.gz: 6daa523f2762ab2fe320da616263ddc9ed286815720f461efff5a5f44558258cda2c95e96a50bd51a7d6344c604a68347d015142bc6d4f25c6709caefd598a3c
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MjA0OGFmMDhhMGZhMDY5Zjc0YmEzNzNhMDg5MDA2MThjOGUzZTg5ZA==
5
+ data.tar.gz: !binary |-
6
+ OWNhYzY2MzM1YjQ1YmVkNzY0ODg5OTcyZjA5NTdjYjBkZTY0YjZmYw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NjU4ZTllOWQ4MmE4ZDM2YjA2YTFhMjA3NGM5ZmY1ZGM4NDY1NTBjNTFhMTcx
10
+ ZGI3YTNhMmM2OTc3NDYwOTEwZjI4YzNkMjEwMWY1NDc1NjdkYmYyNjJjZTU1
11
+ ZDgzNmRjOWU1NTkyZGM0M2YyOWRkZDY2YTQwNDUzY2M1ZDAzNzk=
12
+ data.tar.gz: !binary |-
13
+ NWExMGY4MjIzZGMyNzQyMjk4ZmM4NzkxOGJlZGY4MWIzZDE5NzE0YTQ4YWVh
14
+ NThjN2JkMTA4MTdhNmFmZGM5ZWJmYzJkMTljZTg4ZmNkOGFjNGFmMTUxZWEx
15
+ MDI1YzZiMjIxYWE4YjUxMTE2NGM0MjJmNjY2NjY0NzAyZGJhOWY=
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.23.2
4
+
5
+ * Fix regression in delegator usage by #find due to resource type inheritance.
6
+
7
+ ## 0.23.1
8
+
9
+ * Fix error class name typo
10
+
11
+ ## 0.23.0
12
+
13
+ * Add Resource Type Inheritance
14
+
3
15
  ## 0.22.2
4
16
 
5
17
  * Preserve errors received from service on revalidation (2f1fc178)
@@ -86,9 +86,14 @@ module Acfs::Model
86
86
  end
87
87
  alias :where :all
88
88
 
89
+ # TODO: Replace delegator with promise or future for the long run.
90
+ class ResourceDelegator < SimpleDelegator
91
+ delegate :class, :is_a?, :kind_of?, to: :__getobj__
92
+ end
93
+
89
94
  private
90
95
  def find_single(id, opts, &block)
91
- model = SimpleDelegator.new self.new
96
+ model = ResourceDelegator.new self.new
92
97
 
93
98
  opts[:params] ||= {}
94
99
  opts[:params].merge!({ id: id })
@@ -2,7 +2,7 @@ module Acfs
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 23
5
- PATCH = 1
5
+ PATCH = 2
6
6
  STAGE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join('.')
@@ -8,6 +8,7 @@ describe Acfs::Model::QueryMethods do
8
8
  context 'with successful response' do
9
9
  before do
10
10
  stub_request(:get, 'http://users.example.org/users/1').to_return response({ id: 1, name: 'Anon', age: 12 })
11
+ stub_request(:get, 'http://users.example.org/users/2').to_return response({ id: 2, type: 'Customer', name: 'Clare Customer', age: 24 })
11
12
  end
12
13
 
13
14
  it 'should load a single remote resource' do
@@ -20,13 +21,28 @@ describe Acfs::Model::QueryMethods do
20
21
  it 'should invoke callback after model is loaded' do
21
22
  proc = Proc.new { }
22
23
  proc.should_receive(:call) do |user|
23
- expect(user.__getobj__).to equal @user.__getobj__
24
+ expect(user).to equal @user
24
25
  expect(user).to be_loaded
25
26
  end
26
27
 
27
28
  @user = model.find 1, &proc
28
29
  Acfs.run
29
30
  end
31
+
32
+ context 'with resource type inheritance' do
33
+ let!(:user) { MyUser.find 2 }
34
+ subject { user }
35
+ before { Acfs.run }
36
+
37
+ it 'should respect resource type inheritance' do
38
+ expect(subject).to be_a Customer
39
+ end
40
+
41
+ it 'should implement ActiveModel class interface' do
42
+ expect(subject.class).to be_a ActiveModel::Naming
43
+ expect(subject.class).to be_a ActiveModel::Translation
44
+ end
45
+ end
30
46
  end
31
47
 
32
48
  context 'with 404 response' do
@@ -62,6 +78,8 @@ describe Acfs::Model::QueryMethods do
62
78
  before do
63
79
  stub_request(:get, 'http://users.example.org/users/1').to_return response({ id: 1, name: 'Anon', age: 12 })
64
80
  stub_request(:get, 'http://users.example.org/users/2').to_return response({ id: 2, name: 'Johnny', age: 42 })
81
+ stub_request(:get, 'http://users.example.org/users/3').to_return response({ id: 3, type: 'Customer', name: 'Anon', age: 12 })
82
+ stub_request(:get, 'http://users.example.org/users/4').to_return response({ id: 4, name: 'Johnny', age: 42 })
65
83
  end
66
84
 
67
85
  context 'with successful response' do
@@ -85,6 +103,14 @@ describe Acfs::Model::QueryMethods do
85
103
  @users = model.find 1, 2, &proc
86
104
  Acfs.run
87
105
  end
106
+
107
+ it 'should respect resource type inheritance' do
108
+ customers = MyUser.find 3, 4
109
+ Acfs.run
110
+
111
+ expect(customers[0]).to be_a Customer
112
+ expect(customers[1]).to be_a MyUser
113
+ end
88
114
  end
89
115
 
90
116
  context 'with one 404 response' do
@@ -25,7 +25,7 @@ class MyUser < Acfs::Resource
25
25
  attribute :age, :integer
26
26
  end
27
27
 
28
- class MyUserInherited < MyUser
28
+ class Customer < MyUser
29
29
 
30
30
  end
31
31
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.1
4
+ version: 0.23.2.b199
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
@@ -14,84 +14,84 @@ dependencies:
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: actionpack
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: multi_json
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: typhoeus
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rack
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ! '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
@@ -212,14 +212,14 @@ require_paths:
212
212
  - lib
213
213
  required_ruby_version: !ruby/object:Gem::Requirement
214
214
  requirements:
215
- - - '>='
215
+ - - ! '>='
216
216
  - !ruby/object:Gem::Version
217
217
  version: '0'
218
218
  required_rubygems_version: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - '>='
220
+ - - ! '>'
221
221
  - !ruby/object:Gem::Version
222
- version: '0'
222
+ version: 1.3.1
223
223
  requirements: []
224
224
  rubyforge_project:
225
225
  rubygems_version: 2.0.3
@@ -253,4 +253,3 @@ test_files:
253
253
  - spec/spec_helper.rb
254
254
  - spec/support/response.rb
255
255
  - spec/support/service.rb
256
- has_rdoc: