Skip to content

Commit 3fd528c

Browse files
Fix dialog tag control and specs
1 parent 3f7c1b7 commit 3fd528c

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

app/models/service_orchestration/provision_tagging.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module ServiceOrchestration::ProvisionTagging
2-
DIALOG_TAG_KEY_REGEX = /^Array::dialog_tag_(?<sequence>\d*)_(?<option_key>.*)/i
2+
DIALOG_TAG_KEY_REGEX = /^dialog_tag_(?<sequence>\d*)_(?<option_key>.*)/i
33
DIALOG_TAG_VALUE_REGEX = /Classification::(\d*)/
44

55
private
@@ -22,11 +22,19 @@ def provisioning_tag_ids
2222
provision_sequence = miq_request_task.provision_priority + 1
2323
dialog_options = root_service.options[:dialog] || {}
2424

25+
tags = []
2526
dialog_options.flat_map do |key_name, value|
2627
if (match = DIALOG_TAG_KEY_REGEX.match(key_name))
2728
tag_sequence = match[:sequence].to_i
28-
value.scan(DIALOG_TAG_VALUE_REGEX).flatten if tag_sequence.zero? || tag_sequence == provision_sequence
29+
if value.kind_of?(Array)
30+
value.each do |tag|
31+
tags.push(tag.scan(DIALOG_TAG_VALUE_REGEX).flatten) if tag_sequence.zero? || tag_sequence == provision_sequence
32+
end
33+
else
34+
tags.push(value.scan(DIALOG_TAG_VALUE_REGEX).flatten) if tag_sequence.zero? || tag_sequence == provision_sequence
35+
end
2936
end
3037
end.compact
38+
tags.flatten
3139
end
3240
end

spec/models/dialog_field_tag_control_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,13 @@ def add_entry(cat, options)
139139
it "automate_output_value with an single value" do
140140
tag = Classification.first
141141
@df.value = tag.id.to_s
142-
expect(@df.automate_output_value).to eq([tag.id.to_s])
142+
expect(@df.automate_output_value).to eq(["#{tag.class.name}::#{tag.id}"])
143143
end
144144

145145
it "automate_output_value with multiple values" do
146146
tags = [Classification.first, Classification.last]
147147
@df.value = tags.collect(&:id).join(",")
148-
expect(@df.automate_output_value).to match_array(tags.collect { |tag| tag.id.to_s })
148+
expect(@df.automate_output_value).to match_array(tags.collect { |tag| "#{tag.class.name}::#{tag.id}" })
149149
end
150150
end
151151
end

spec/models/service_orchestration/provision_tagging_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
let(:service) { FactoryBot.build(:service_orchestration, :miq_request_task => miq_request_task) }
2121
let(:dialog_tag_options) do
2222
{:dialog => {
23-
'Array::dialog_tag_0_env' => 'Classification::1',
24-
'Array::dialog_tag_1_network' => 'Classification::11',
25-
'Array::dialog_tag_2_dept' => 'Classification::21,Classification::22,Classification::23'
23+
'dialog_tag_0_env' => ['Classification::1'],
24+
'dialog_tag_1_network' => 'Classification::11,Classification::12', # Verify it works with both strings and arrays
25+
'dialog_tag_2_dept' => ['Classification::21,Classification::22,Classification::23']
2626
}}
2727
end
2828

@@ -42,7 +42,7 @@
4242

4343
context 'Calls Classification.bulk_reassignment with VM and tag IDs for provision_priority 0' do
4444
let(:provision_priority) { 0 }
45-
let(:tag_ids) { %w[1 11] }
45+
let(:tag_ids) { %w[1 11 12] }
4646

4747
it_behaves_like 'service_orchestration VM tagging'
4848
end
@@ -59,7 +59,7 @@
5959

6060
context 'Calls Classification.bulk_reassignment with VM and tag IDs for provision_priority 0' do
6161
let(:provision_priority) { 0 }
62-
let(:tag_ids) { %w[1 11] }
62+
let(:tag_ids) { %w[1 11 12] }
6363

6464
it_behaves_like 'service_orchestration VM tagging'
6565
end

0 commit comments

Comments
 (0)