json_model_rb 0.1.11 → 0.1.12

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,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c8abfd3efdffc114b9968dc02c151d4f79cd49bb87aff04553641c284814f12
4
- data.tar.gz: 34ccde981e5e99ff2df38e89bb25a240c4036782dc00b6af930121884894d813
3
+ metadata.gz: 452a7c1ae9d8d3c1df881d768520e439d92dce607b3e4fa609b8cafdce702b70
4
+ data.tar.gz: eba5d91dfd64620a0d64fd82e610837644d8e019fb3d7e4978eed050ea009487
5
5
  SHA512:
6
- metadata.gz: 9918e40ee08f267dcef942ea23ef74c8f2006325b83c845f966212d946de25f41f7d8c5bdace36ced950ba624c24c9eaf94e16701b8b51b50858a3eed94ca705
7
- data.tar.gz: b9624a3dc52e2a1b902629233b11953393052f9242a9da5182361932a4eda86665e337f433bb1ec2f804e32c58e6d5a83779a9193a8d6b8beed3ad034b5f8823
6
+ metadata.gz: e9f23593b4a6d8647d0854be6c50e2e62ea5929571273bbe5229cf1f67f069d38638bd8cd2acc066fb69c513e48da929eed72782ba195bfd3d39f592391e9471
7
+ data.tar.gz: 777dd3fe984c380aabddd1d199e69bbaeafc94a5ebca9e6bf6a889138095133c8bb0ae002efcc944b733123a103b6adf06ab9e82b06d1654c86c9b23d137f2e6
@@ -29,8 +29,8 @@ module JsonModel
29
29
  def assign_attribute(name, value)
30
30
  if respond_to?("#{name}=")
31
31
  send("#{name}=", value)
32
- elsif !self.class.additional_properties && JsonModel.config.validate_after_instantiation
33
- raise(Errors::UnknownAttributeError.new(self.class, name))
32
+ else
33
+ self.class.raise_unknown_attribute_error(name)
34
34
  end
35
35
  end
36
36
 
@@ -38,10 +38,17 @@ module JsonModel
38
38
  # @param [::Object] json
39
39
  # @return [::Object, nil]
40
40
  def from_json(json)
41
- attributes = json.transform_keys { |key| aliased_properties[key]&.name || key }
41
+ attributes = json.transform_keys { |key| aliased_properties[key]&.name || raise_unknown_attribute_error(key) }
42
42
  new(attributes)
43
43
  end
44
44
 
45
+ # @param [Symbol] name
46
+ def raise_unknown_attribute_error(name)
47
+ if !additional_properties && JsonModel.config.validate_after_instantiation
48
+ raise(Errors::UnknownAttributeError.new(self, name))
49
+ end
50
+ end
51
+
45
52
  # @param [Symbol] ref_mode
46
53
  # @param [Hash] _options
47
54
  # @return [Hash]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonModel
4
- VERSION = '0.1.11'
4
+ VERSION = '0.1.12'
5
5
  end
data/spec/schema_spec.rb CHANGED
@@ -63,6 +63,21 @@ RSpec.describe(JsonModel::Schema) do
63
63
  end
64
64
  end
65
65
 
66
+ describe('.from_json') do
67
+ let(:klass) do
68
+ Class.new do
69
+ include(JsonModel::Schema)
70
+
71
+ property(:foo_bar, type: String, as: :fooBar)
72
+ end
73
+ end
74
+
75
+ it('can be instantiated from json') do
76
+ instance = klass.from_json({ fooBar: 'baz' })
77
+ expect(instance.foo_bar).to(eq('baz'))
78
+ end
79
+ end
80
+
66
81
  describe('.as_schema') do
67
82
  let(:klass) do
68
83
  Class.new do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_model_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Gillesberger