acfs 0.22.1 → 0.22.2.b193

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