Skip to content

Commit b490a1c

Browse files
committed
Fix wrong parsing of rules
1 parent 9f60fc6 commit b490a1c

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

app/services/runtimes/data_types/update_service.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,26 @@ def find_data_type(identifier, t)
158158
def update_rules(rules, data_type)
159159
db_rules = data_type.rules.first(rules.length)
160160
rules.each_with_index do |rule, index|
161+
config = rule.rule_config.to_h.transform_values do |value|
162+
case value
163+
when Tucana::Shared::DataTypeIdentifier
164+
if value.data_type_identifier.present?
165+
value.data_type_identifier
166+
elsif value.generic_key.present?
167+
{ generic_key: value.generic_key }
168+
else
169+
{ generic_type: value.generic_type }
170+
end
171+
else
172+
value
173+
end
174+
end
175+
161176
db_rules[index] ||= DataTypeRule.new
162-
db_rules[index].assign_attributes(variant: rule.variant.to_s.downcase, config: rule.rule_config.to_h)
177+
db_rules[index].assign_attributes(
178+
variant: rule.variant.to_s.downcase,
179+
config: config
180+
)
163181
end
164182

165183
db_rules

spec/requests/grpc/sagittarius/data_type_service_spec.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
{ code: 'de_DE', content: 'Zahl: ${0}' }
2424
],
2525
rules: [
26-
Tucana::Shared::DefinitionDataTypeRule.create(:number_range, { from: 1, to: 10 })
26+
Tucana::Shared::DefinitionDataTypeRule.create(
27+
:contains_type,
28+
{ data_type_identifier: { generic_key: 'T' } }
29+
)
2730
],
2831
version: {
2932
major: 0,
@@ -58,8 +61,8 @@
5861
expect(data_type.display_messages.first.code).to eq('de_DE')
5962
expect(data_type.display_messages.first.content).to eq('Zahl: ${0}')
6063
expect(data_type.rules.count).to eq(1)
61-
expect(data_type.rules.first.variant).to eq('number_range')
62-
expect(data_type.rules.first.config).to eq({ 'from' => 1, 'to' => 10, 'steps' => 0 })
64+
expect(data_type.rules.first.variant).to eq('contains_type')
65+
expect(data_type.rules.first.config).to eq({ 'data_type_identifier' => { 'generic_key' => 'T' } })
6366
end
6467

6568
context 'with dependent data types' do

0 commit comments

Comments
 (0)