lhs 14.3.0 → 14.3.1
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 +4 -4
- data/README.md +28 -1
- data/lib/lhs/concerns/proxy/problems.rb +2 -1
- data/lib/lhs/version.rb +1 -1
- data/spec/item/access_errors_spec.rb +31 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 592b02ea75646240c5b91bedd2c780898ed87a4b
|
4
|
+
data.tar.gz: b91803f278dbdc05c0b1c5405a75d7daa3191116
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61c954708c2abf0147112c0d34ec044ef0f9dd4e53f75b26db3a26f430b138ff203127e1dc49a45066fe02c1cce9806a6b0dab7338fc207fc8b87547890aa29a
|
7
|
+
data.tar.gz: 088c03a54f417a2844bc6a85e318e42ea0d2a12540cc3745a2c1c20940448848c2760413eb180a5b8c0154b829a737eb76a04ab4296036c45a1cabad487039ce
|
data/README.md
CHANGED
@@ -760,7 +760,7 @@ or with parameters:
|
|
760
760
|
|
761
761
|
In order to validate LHS::Records before persisting them, you can use the `valid?` (`validate` alias) method.
|
762
762
|
|
763
|
-
The specific endpoint has to support validations without
|
763
|
+
The specific endpoint has to support validations without persistance. An endpoint has to be enabled (opt-in) for validations in the service configuration.
|
764
764
|
|
765
765
|
```ruby
|
766
766
|
class User < LHS::Record
|
@@ -861,6 +861,33 @@ lhs.errors.fallback_message
|
|
861
861
|
### Know issue with `ActiveModel::Validations`
|
862
862
|
If you are using `ActiveModel::Validations` and add errors to the LHS::Record instance - as described above - then those errors will be overwritten by the errors from `ActiveModel::Validations` when using `save` or `valid?`. [Open issue](https://github.com/local-ch/lhs/issues/159)
|
863
863
|
|
864
|
+
### Blocking errors, original "errors"
|
865
|
+
|
866
|
+
The fact that records could have errors is not coupled to any response status code.
|
867
|
+
|
868
|
+
LHS makes errors accessible, if they are present:
|
869
|
+
|
870
|
+
```
|
871
|
+
{
|
872
|
+
company_name: 'localsearch',
|
873
|
+
field_errors: [{
|
874
|
+
code: 'REQUIRED_PROPERTY_VALUE',
|
875
|
+
path: ['place', 'opening_hours']
|
876
|
+
}
|
877
|
+
}
|
878
|
+
```
|
879
|
+
|
880
|
+
LHS makes those errors available when accessing `.errors`:
|
881
|
+
|
882
|
+
```ruby
|
883
|
+
presence = Presence.create(
|
884
|
+
place: { href: 'http://storage/places/1' }
|
885
|
+
)
|
886
|
+
|
887
|
+
presence.errors.any? # true
|
888
|
+
presence.place.errors.messages[:opening_hours] # ['REQUIRED_PROPERTY_VALUE']
|
889
|
+
```
|
890
|
+
|
864
891
|
### Non blocking validation errors, so called warnings
|
865
892
|
|
866
893
|
In some cases, you need non blocking meta information about potential problems with the created record, so called warnings.
|
@@ -14,7 +14,8 @@ class LHS::Proxy
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def errors
|
17
|
-
|
17
|
+
response = _raw.present? && _raw.is_a?(Hash) && _raw[:field_errors] ? OpenStruct.new(body: _raw.to_json) : nil
|
18
|
+
@errors ||= LHS::Problems::Errors.new(response, record)
|
18
19
|
end
|
19
20
|
|
20
21
|
def warnings
|
data/lib/lhs/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe LHS::Item do
|
4
|
+
|
5
|
+
context 'make errors available' do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
class Presence < LHS::Record
|
9
|
+
endpoint 'http://opm/presences'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:place_href) { 'http://datastore/places/1' }
|
14
|
+
|
15
|
+
it 'makes errors available no matter the response code' do
|
16
|
+
stub_request(:post, "http://opm/presences")
|
17
|
+
.to_return(
|
18
|
+
status: 200,
|
19
|
+
body: {
|
20
|
+
place: { href: place_href },
|
21
|
+
field_errors: [{
|
22
|
+
code: 'REQUIRED_PROPERTY_VALUE',
|
23
|
+
path: ['place', 'opening_hours']
|
24
|
+
}]
|
25
|
+
}.to_json
|
26
|
+
)
|
27
|
+
presence = Presence.create(place: { href: place_href })
|
28
|
+
expect(presence.errors.any?).to be true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lhs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.3.
|
4
|
+
version: 14.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/local-ch/lhs/graphs/contributors
|
@@ -321,6 +321,7 @@ files:
|
|
321
321
|
- spec/dummy/public/500.html
|
322
322
|
- spec/dummy/public/favicon.ico
|
323
323
|
- spec/endpoint/for_url_spec.rb
|
324
|
+
- spec/item/access_errors_spec.rb
|
324
325
|
- spec/item/accessors_spec.rb
|
325
326
|
- spec/item/add_error_spec.rb
|
326
327
|
- spec/item/becomes_spec.rb
|
@@ -499,6 +500,7 @@ test_files:
|
|
499
500
|
- spec/dummy/public/500.html
|
500
501
|
- spec/dummy/public/favicon.ico
|
501
502
|
- spec/endpoint/for_url_spec.rb
|
503
|
+
- spec/item/access_errors_spec.rb
|
502
504
|
- spec/item/accessors_spec.rb
|
503
505
|
- spec/item/add_error_spec.rb
|
504
506
|
- spec/item/becomes_spec.rb
|