deimos-ruby 1.13.1 → 1.13.2

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
  SHA256:
3
- metadata.gz: 2fe5f643562c8cebecd6991d31222c3809115cee282b2f8fcef0e36b1b19f972
4
- data.tar.gz: a9de46de1265d73a7d94e94f24c43a0c210687b93f4862a7a2fefee73c40fb89
3
+ metadata.gz: f51b89a9bf8a619db4c9294092b5e7b4f78c075c35f4aa2bc39c547da99ec67c
4
+ data.tar.gz: e4da7d718fff36bb28ca249a788fbf78ad5f980e9fa32983ecf019cd53cd40b8
5
5
  SHA512:
6
- metadata.gz: 0365bcefe9cd82d91bf9f5eb587f6f72725f0ef981336722571465e8308d615b69fabc7516755761ebdad473ba1b8e0027e1546a81076d1bdf5c9c8cfe5e9d0f
7
- data.tar.gz: 5e4f15b372217ac878b9c82ab606c90e16a0a370947956bef2b6aae5ffa4ac8c4739ff74e10d7bf442c29968ee0bba0135624d7be2966d51b85d8c777f2e2573
6
+ metadata.gz: 7ac325f814c79a29985cba298ef0cde7daa4b0c561ce155eee22dab15470b2c1a933f5baa0181fd9375500062fa89fc846dcb01504d10466645275fa3644ec53
7
+ data.tar.gz: 021dd749b7040b136f84fcc7142a207847a982e2ab889439486af4b5dc4267ed4eed25f4d71c9a6496c51d8e84f3bedc6220e3dbd1f0a0133bca8c8cc1fe24e5
data/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## UNRELEASED
9
9
 
10
+ # 1.13.2 - 2022-04-07
11
+
12
+ - Fix an issue with generating schema classes for schemas containing an enum with default value
13
+
10
14
  # 1.13.1 - 2022-04-06
11
15
 
12
16
  - Fix circular reference schema generation
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deimos
4
- VERSION = '1.13.1'
4
+ VERSION = '1.13.2'
5
5
  end
@@ -88,7 +88,7 @@ module Deimos
88
88
  @discovered_schemas = Set.new
89
89
  schemas = collect_all_schemas(schema_base.schema_store.schemas.values)
90
90
 
91
- sub_schemas = schemas.reject { |s| s.name == schema_base.schema }
91
+ sub_schemas = schemas.reject { |s| s.name == schema_base.schema }.sort_by(&:name)
92
92
  @sub_schema_templates = sub_schemas.map do |schema|
93
93
  _generate_class_template_from_schema(schema)
94
94
  end
@@ -206,8 +206,8 @@ module Deimos
206
206
  return ' nil' if default == :no_default || default.nil? || IGNORE_DEFAULTS.include?(field.name)
207
207
 
208
208
  case field.type.type_sym
209
- when :string
210
- " '#{default}'"
209
+ when :string, :enum
210
+ " \"#{default}\""
211
211
  when :record
212
212
  schema_name = Deimos::SchemaBackends::AvroBase.schema_classname(field.type)
213
213
  class_instance = Utils::SchemaClass.instance(field.default, schema_name)
@@ -57,7 +57,7 @@ RSpec.describe Schemas::MySchemaWithComplexTypes do
57
57
  end
58
58
 
59
59
  let(:schema_fields) do
60
- %w(test_id test_float test_int_array test_optional_int test_string_array some_integer_map some_record some_optional_record some_record_array some_record_map some_enum_array some_optional_enum)
60
+ %w(test_id test_float test_int_array test_optional_int test_string_array some_integer_map some_record some_optional_record some_record_array some_record_map some_enum_array some_optional_enum some_enum_with_default)
61
61
  end
62
62
 
63
63
  it 'should return the name of the schema and namespace' do
@@ -90,14 +90,15 @@ RSpec.describe Schemas::MySchemaWithComplexTypes do
90
90
  'record_1' => { 'a_record_field' => 'field 5' },
91
91
  'record_2' => { 'a_record_field' => 'field 6' }
92
92
  },
93
- 'some_enum_array' => %w(sym1 sym2)
93
+ 'some_enum_array' => %w(sym1 sym2),
94
+ 'some_enum_with_default' => 'sym6'
94
95
  }
95
96
 
96
97
  expect(klass.as_json).to eq(payload_h)
97
98
  end
98
99
 
99
100
  it 'should return a JSON string of the payload' do
100
- s = '{"test_id":"test id","test_float":1.2,"test_string_array":["abc","def"],"test_int_array":[123,456],"test_optional_int":123,"some_integer_map":{"int_1":1,"int_2":2},"some_record":{"a_record_field":"field 1"},"some_optional_record":{"a_record_field":"field 2"},"some_record_array":[{"a_record_field":"field 3"},{"a_record_field":"field 4"}],"some_record_map":{"record_1":{"a_record_field":"field 5"},"record_2":{"a_record_field":"field 6"}},"some_enum_array":["sym1","sym2"],"some_optional_enum":null}'
101
+ s = '{"test_id":"test id","test_float":1.2,"test_string_array":["abc","def"],"test_int_array":[123,456],"test_optional_int":123,"some_integer_map":{"int_1":1,"int_2":2},"some_record":{"a_record_field":"field 1"},"some_optional_record":{"a_record_field":"field 2"},"some_record_array":[{"a_record_field":"field 3"},{"a_record_field":"field 4"}],"some_record_map":{"record_1":{"a_record_field":"field 5"},"record_2":{"a_record_field":"field 6"}},"some_enum_array":["sym1","sym2"],"some_optional_enum":null,"some_enum_with_default":"sym6"}'
101
102
  expect(klass.to_json).to eq(s)
102
103
  end
103
104
  end
@@ -3,28 +3,6 @@
3
3
  # This file is autogenerated by Deimos, Do NOT modify
4
4
  module Schemas
5
5
  ### Secondary Schema Classes ###
6
- # Autogenerated Schema for Enum at com.my-namespace.AnEnum
7
- class AnEnum < Deimos::SchemaClass::Enum
8
- # @return ['sym1', 'sym2']
9
- attr_accessor :an_enum
10
-
11
- # :nodoc:
12
- def initialize(an_enum)
13
- super
14
- self.an_enum = an_enum
15
- end
16
-
17
- # @override
18
- def symbols
19
- %w(sym1 sym2)
20
- end
21
-
22
- # @override
23
- def to_h
24
- @an_enum
25
- end
26
- end
27
-
28
6
  # Autogenerated Schema for Record at com.my-namespace.ARecord
29
7
  class ARecord < Deimos::SchemaClass::Record
30
8
  ### Attribute Accessors ###
@@ -55,6 +33,28 @@ module Schemas
55
33
  end
56
34
  end
57
35
 
36
+ # Autogenerated Schema for Enum at com.my-namespace.AnEnum
37
+ class AnEnum < Deimos::SchemaClass::Enum
38
+ # @return ['sym1', 'sym2']
39
+ attr_accessor :an_enum
40
+
41
+ # :nodoc:
42
+ def initialize(an_enum)
43
+ super
44
+ self.an_enum = an_enum
45
+ end
46
+
47
+ # @override
48
+ def symbols
49
+ %w(sym1 sym2)
50
+ end
51
+
52
+ # @override
53
+ def to_h
54
+ @an_enum
55
+ end
56
+ end
57
+
58
58
  ### Primary Schema Class ###
59
59
  # Autogenerated Schema for Record at com.my-namespace.Generated
60
60
  class Generated < Deimos::SchemaClass::Record
@@ -77,6 +77,28 @@ module Schemas
77
77
  end
78
78
  end
79
79
 
80
+ # Autogenerated Schema for Enum at com.my-namespace.YetAnotherEnum
81
+ class YetAnotherEnum < Deimos::SchemaClass::Enum
82
+ # @return ['sym5', 'sym6']
83
+ attr_accessor :yet_another_enum
84
+
85
+ # :nodoc:
86
+ def initialize(yet_another_enum)
87
+ super
88
+ self.yet_another_enum = yet_another_enum
89
+ end
90
+
91
+ # @override
92
+ def symbols
93
+ %w(sym5 sym6)
94
+ end
95
+
96
+ # @override
97
+ def to_h
98
+ @yet_another_enum
99
+ end
100
+ end
101
+
80
102
  ### Primary Schema Class ###
81
103
  # Autogenerated Schema for Record at com.my-namespace.MySchemaWithComplexTypes
82
104
  class MySchemaWithComplexTypes < Deimos::SchemaClass::Record
@@ -93,6 +115,8 @@ module Schemas
93
115
  attr_reader :some_enum_array
94
116
  # @return [nil, AnotherEnum]
95
117
  attr_reader :some_optional_enum
118
+ # @return [YetAnotherEnum]
119
+ attr_reader :some_enum_with_default
96
120
 
97
121
  ### Attribute Accessors ###
98
122
  # @param value [String]
@@ -145,6 +169,11 @@ module Schemas
145
169
  @some_optional_enum = AnotherEnum.initialize_from_value(value)
146
170
  end
147
171
 
172
+ # @param value [YetAnotherEnum]
173
+ def some_enum_with_default=(value)
174
+ @some_enum_with_default = YetAnotherEnum.initialize_from_value(value)
175
+ end
176
+
148
177
  # @override
149
178
  def initialize(test_id: nil,
150
179
  test_float: nil,
@@ -157,7 +186,8 @@ module Schemas
157
186
  some_record_array: nil,
158
187
  some_record_map: nil,
159
188
  some_enum_array: nil,
160
- some_optional_enum: nil)
189
+ some_optional_enum: nil,
190
+ some_enum_with_default: "sym6")
161
191
  super
162
192
  self.test_id = test_id
163
193
  self.test_float = test_float
@@ -171,6 +201,7 @@ module Schemas
171
201
  self.some_record_map = some_record_map
172
202
  self.some_enum_array = some_enum_array
173
203
  self.some_optional_enum = some_optional_enum
204
+ self.some_enum_with_default = some_enum_with_default
174
205
  end
175
206
 
176
207
  # @override
@@ -197,7 +228,8 @@ module Schemas
197
228
  'some_record_array' => @some_record_array.map { |v| v&.to_h },
198
229
  'some_record_map' => @some_record_map.transform_values { |v| v&.to_h },
199
230
  'some_enum_array' => @some_enum_array.map { |v| v&.to_h },
200
- 'some_optional_enum' => @some_optional_enum&.to_h
231
+ 'some_optional_enum' => @some_optional_enum&.to_h,
232
+ 'some_enum_with_default' => @some_enum_with_default&.to_h
201
233
  }
202
234
  end
203
235
  end
@@ -101,6 +101,15 @@
101
101
  "symbols": ["sym3", "sym4"]
102
102
  }
103
103
  ]
104
+ },
105
+ {
106
+ "name": "some_enum_with_default",
107
+ "default": "sym6",
108
+ "type": {
109
+ "type": "enum",
110
+ "name": "YetAnotherEnum",
111
+ "symbols": ["sym5", "sym6"]
112
+ }
104
113
  }
105
114
  ]
106
115
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deimos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.1
4
+ version: 1.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-06 00:00:00.000000000 Z
11
+ date: 2022-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro_turf