avromatic 0.9.0.rc4 → 0.9.0.rc6

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
  SHA1:
3
- metadata.gz: 1d65e7071a11c5a0b6ffa58c3d495b8b8a551461
4
- data.tar.gz: fe9c6e799c8bc16e05520b6de4d3960030e6ae8b
3
+ metadata.gz: ba5443f9bd3883ce2b78d8a27782069b8b6f9387
4
+ data.tar.gz: 010950770be1bea00cc8aa4143e8124667d00379
5
5
  SHA512:
6
- metadata.gz: 8277129ab8bdc6f7265f798654d04029b1ca58065b33581d786c1d00ec007ca89d5b9dd1329c70d509800ebbeb558f0d2d2b35e9e0e7220ac21cdf6c28763579
7
- data.tar.gz: 70a0355e84f6d7ddffb2a12b5085f1b3ef3d5b9e840bcbf82c855de1dc01b10c169c7fc5434165a459a6e6f76e738f6131915a40c547f7bb93ec61a2f7207d40
6
+ metadata.gz: 353f84a00f41772c41d4b9889f3610750b66364151d051ab315429f3f5b77a353376f70cd2101c896e043b486a4df22f20e7467158ef29eb5c47d72d9109444b
7
+ data.tar.gz: f86f38a32fad99f98f8c697119cc0b4c4b2a8f4e76264b6e8755d8a148b2ee3a3076d19b51c16ca5fefaeb07ff450c3e1b1376dbd3836719648bd353699689dd
data/CHANGELOG.md CHANGED
@@ -5,6 +5,10 @@
5
5
  - Allow nested models to be referenced and reused.
6
6
  - Fix the serialization of nested complex types.
7
7
  - Add support for recursive models.
8
+ - Allow required array and map fields to be empty. Only nil values for required
9
+ array and map fields are now considered invalid.
10
+ - Validate nested models. This does not apply to nested models embedded
11
+ within other complex types (array, map, and union).
8
12
 
9
13
  ## v0.8.0
10
14
  - Add support for logical types. Currently this requires using the
data/avromatic.gemspec CHANGED
@@ -34,6 +34,6 @@ Gem::Specification.new do |spec|
34
34
  # For FakeSchemaRegistryServer
35
35
  spec.add_development_dependency 'sinatra'
36
36
  spec.add_development_dependency 'salsify_rubocop', '~> 0.42.0'
37
- spec.add_development_dependency 'overcommit'
37
+ spec.add_development_dependency 'overcommit', '0.35.0'
38
38
  spec.add_development_dependency 'appraisal'
39
39
  end
@@ -77,14 +77,32 @@ module Avromatic
77
77
  inclusion: { in: Set.new(field.type.symbols.map(&:freeze)).freeze })
78
78
  when :fixed
79
79
  validates(field.name, length: { is: field.type.size })
80
+ when :record
81
+ validate_record(field.name)
80
82
  end
81
83
 
82
84
  add_required_validation(field)
83
85
  end
84
86
 
87
+ def validate_record(field_name)
88
+ validate do |instance|
89
+ record = instance.send(field_name)
90
+ if record && record.invalid?
91
+ record.errors.each do |key, message|
92
+ errors.add(field_name.to_sym, "invalid: #{key} #{message}")
93
+ end
94
+ end
95
+ end
96
+ end
97
+
85
98
  def add_required_validation(field)
86
99
  if required?(field) && field.default == :no_default
87
- validates(field.name, presence: true)
100
+ case field.type.type_sym
101
+ when :array, :map, :boolean
102
+ validates(field.name, exclusion: { in: [nil], message: "can't be nil" })
103
+ else
104
+ validates(field.name, presence: true)
105
+ end
88
106
  end
89
107
  end
90
108
 
@@ -19,6 +19,7 @@ module Avromatic
19
19
  raise 'models with a key schema are not supported' if model.key_avro_schema
20
20
  name = model.avro_schema.fullname
21
21
  name = remove_prefix(name)
22
+ raise "'#{name}' has already been registered" if registered?(name)
22
23
  @hash[name] = model
23
24
  end
24
25
 
@@ -1,3 +1,3 @@
1
1
  module Avromatic
2
- VERSION = '0.9.0.rc4'.freeze
2
+ VERSION = '0.9.0.rc6'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avromatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.rc4
4
+ version: 0.9.0.rc6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify Engineering
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-21 00:00:00.000000000 Z
11
+ date: 2016-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro
@@ -196,16 +196,16 @@ dependencies:
196
196
  name: overcommit
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ">="
199
+ - - '='
200
200
  - !ruby/object:Gem::Version
201
- version: '0'
201
+ version: 0.35.0
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ">="
206
+ - - '='
207
207
  - !ruby/object:Gem::Version
208
- version: '0'
208
+ version: 0.35.0
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: appraisal
211
211
  requirement: !ruby/object:Gem::Requirement