avromatic 0.9.0.rc4 → 0.9.0.rc6

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