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 +14 -6
- data/CHANGELOG.md +9 -0
- data/lib/acfs/model/persistence.rb +1 -3
- data/lib/acfs/model/validation.rb +17 -0
- data/lib/acfs/response.rb +1 -0
- data/lib/acfs/stub.rb +4 -3
- data/lib/acfs/version.rb +1 -1
- data/spec/acfs/model/validation_spec.rb +35 -0
- metadata +17 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
@@ -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
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 (
|
|
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
|
@@ -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.
|
|
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-
|
|
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:
|
|
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:
|