acfs 0.22.1 → 0.22.2.b193

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: a93b31b3407088da5bbe861a8ab92e4b0db54738
4
- data.tar.gz: a40bd7d92df507d6ac02518a92fe04093ddd6ce0
5
- SHA512:
6
- metadata.gz: 20283aaad9eef5da1777c2611c67063696d271f28df857fe04b8dca4f346c967e2cda0c82696c2f46d14804c25546a5fcf16daf63c60835bd665e73af5bd6af1
7
- data.tar.gz: 8544d2423cdc9570f3d787493ed7679788955bcdb2c03397a36b54d11d1eef118b2e672cc441ba170796f32fc3f807e88c5311fa4b2a56b9c38b3b5fa4a57b66
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NWI5YzUzYWUxMTk1ZTgyMjhhZDFiYmIzNTMwYTY4Zjg5ZThlYWM4ZQ==
5
+ data.tar.gz: !binary |-
6
+ NDBjYTFiZTg4ZGQ2YjQwNTZiNDE3NGE1ZTU4YmFhODc1ZWRhY2RkNg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ N2E1ZWFmM2QzMTA0NWM5OWU2ZTgwYzlhNTY0MmIyNDA5MTc0ZTFhNTVmYzU2
10
+ ZjI3MDA5NmRkYmI3YzNkOWU0N2ZiMTc4OGUzYWEzZWRiNWRhZGI5OWExMGQx
11
+ YmY0ZjRkMjQ1YjQwZmZjNWY2MzVkZGFjNTEyZjdhMTAwNWY1M2Q=
12
+ data.tar.gz: !binary |-
13
+ ZjcwMzEyYzhlNWQzNDM4MjI1NjQwYTg3YTEyOWU4M2QxZmNlMjM5MGNlMDk1
14
+ ZWI0MWVhNDE3ZTNhYTcxZmU1ZGM4ODJiNzFiZjE2YjdmNTA0YzYyZWEwZjI3
15
+ YWQ5MTJiY2FhZDhiNzQyMTM5MjQ2M2ZiYzY1N2Q3NWJjYWU4OTU=
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.22.2
4
+
5
+ * Preserve errors received from service on revalidation (2f1fc178)
6
+ * Fix parameter ordering bug on stubs (1dc78dc8)
7
+
8
+ ## 0.22.1
9
+
10
+ * Fix hash modification on iteration bug on ActiveModel::Errors due to string keys in error hash
11
+
3
12
  ## 0.22.0
4
13
 
5
14
  * Fill local resource errors hash also on 422 responses when saving resources
@@ -85,9 +85,7 @@ module Acfs
85
85
  update_with data
86
86
  end
87
87
  rescue InvalidResource => err
88
- (err.errors || []).each do |field, errors|
89
- self.errors.set field.to_sym, errors
90
- end
88
+ self.remote_errors = err.errors
91
89
  raise err
92
90
  end
93
91
 
@@ -4,6 +4,23 @@ module Acfs::Model
4
4
  #
5
5
  module Validation
6
6
 
7
+ def valid?(*args)
8
+ super
9
+ remote_errors.each { |f, e| errors.add f, e }
10
+ errors.empty?
11
+ end
12
+
13
+ def remote_errors
14
+ @remote_errors ||= ActiveModel::Errors.new self
15
+ end
16
+
17
+ def remote_errors=(errors)
18
+ (errors || []).each do |field, errors|
19
+ self.errors.set field.to_sym, errors
20
+ self.remote_errors.set field.to_sym, errors
21
+ end
22
+ end
23
+
7
24
  def save!(*_)
8
25
  raise ::Acfs::InvalidResource.new resource: self, errors: errors.to_a unless valid? (new? ? :create : :save)
9
26
 
data/lib/acfs/response.rb CHANGED
@@ -23,6 +23,7 @@ module Acfs
23
23
  @status = data[:status] || 0
24
24
  @headers = data[:headers] || {}
25
25
  @body = data[:body] || ''
26
+ @data = data[:data] || nil
26
27
  end
27
28
  end
28
29
  end
data/lib/acfs/stub.rb CHANGED
@@ -35,10 +35,10 @@ module Acfs
35
35
  def call(op)
36
36
  calls << op
37
37
 
38
- if (data = opts[:return])
39
- op.callback.call data
40
- elsif (err = opts[:raise])
38
+ if (err = opts[:raise])
41
39
  raise_error op, err, opts[:return]
40
+ elsif (data = opts[:return])
41
+ op.callback.call data
42
42
  else
43
43
  raise ArgumentError, 'Unsupported stub.'
44
44
  end
@@ -47,6 +47,7 @@ module Acfs
47
47
  private
48
48
  def raise_error(op, name, data)
49
49
  raise name if name.is_a? Class
50
+ data.stringify_keys! if data.respond_to? :stringify_keys!
50
51
 
51
52
  op.handle_failure ::Acfs::Response.new op.request, status: Rack::Utils.status_code(name), data: data
52
53
  end
data/lib/acfs/version.rb CHANGED
@@ -2,7 +2,7 @@ module Acfs
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 22
5
- PATCH = 1
5
+ PATCH = 2
6
6
  STAGE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join('.')
@@ -17,6 +17,26 @@ describe Acfs::Model::Validation do
17
17
 
18
18
  it { should_not be_valid }
19
19
  end
20
+
21
+ context 'on resource with service side errors' do
22
+ before { Acfs::Stub.enable }
23
+ after { Acfs::Stub.disable }
24
+
25
+ before do
26
+ Acfs::Stub.resource MyUser, :create, with: {}, return: {errors: {name: ['can\'t be blank']}}, raise: 422
27
+ end
28
+
29
+ let(:params) { {} }
30
+ let(:resource) { MyUser.create params }
31
+ subject { resource }
32
+
33
+ it { should_not be_valid }
34
+
35
+ it 'should not override errors' do
36
+ subject.valid?
37
+ expect(subject.errors.to_hash).to eq({name: ['can\'t be blank']})
38
+ end
39
+ end
20
40
  end
21
41
 
22
42
  describe '#errors' do
@@ -40,6 +60,21 @@ describe Acfs::Model::Validation do
40
60
  expect(subject.to_hash).to eq age: ["can't be blank"], name: ['is invalid']
41
61
  end
42
62
  end
63
+
64
+ context 'server side errors' do
65
+ before { Acfs::Stub.enable }
66
+ after { Acfs::Stub.disable }
67
+
68
+ before do
69
+ Acfs::Stub.resource MyUser, :create, with: {}, return: {errors: {name: ['can\'t be blank']}}, raise: 422
70
+ end
71
+
72
+ let(:params) { {} }
73
+ let(:resource) { MyUser.create params }
74
+ subject { resource }
75
+
76
+ its(:errors) { expect(subject.errors.to_hash).to eq({name: ['can\'t be blank']}) }
77
+ end
43
78
  end
44
79
 
45
80
  describe '#save!' do
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.1
4
+ version: 0.22.2.b193
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-19 00:00:00.000000000 Z
11
+ date: 2013-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
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
@@ -211,14 +211,14 @@ require_paths:
211
211
  - lib
212
212
  required_ruby_version: !ruby/object:Gem::Requirement
213
213
  requirements:
214
- - - '>='
214
+ - - ! '>='
215
215
  - !ruby/object:Gem::Version
216
216
  version: '0'
217
217
  required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  requirements:
219
- - - '>='
219
+ - - ! '>'
220
220
  - !ruby/object:Gem::Version
221
- version: '0'
221
+ version: 1.3.1
222
222
  requirements: []
223
223
  rubyforge_project:
224
224
  rubygems_version: 2.0.3
@@ -252,4 +252,3 @@ test_files:
252
252
  - spec/spec_helper.rb
253
253
  - spec/support/response.rb
254
254
  - spec/support/service.rb
255
- has_rdoc: