Skip to content

Commit b5911c2

Browse files
authored
Merge pull request #9622 from GilbertCherrie/fix_single_tag
Fix single tag page bug
2 parents d740ef5 + 26fdf36 commit b5911c2

18 files changed

+43
-28
lines changed

app/controllers/application_controller/tags.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ def tag_edit_build_screen
172172

173173
@tagitems = @tagging.constantize.where(:id => @object_ids).sort_by { |t| t.name.try(:downcase).to_s }
174174

175-
@view = get_db_view(@tagging, :clickable => false) # Instantiate the MIQ Report view object
175+
@view = get_db_view(@tagging, :clickable => false, :no_checkboxes => true) # Instantiate the MIQ Report view object
176176

177177
@edit[:new][:assignments] = assignments = @tagitems.map do |tagitem|
178178
Classification.find_assigned_entries(tagitem).reject { |e| e.parent.read_only? }

app/controllers/mixins/checked_id_mixin.rb

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,21 @@ def checked_item_id(hash = params)
1010
# Common routine to find checked items on a page (checkbox ids are
1111
# "check_xxx" where xxx is the item id or index)
1212
def find_checked_items(prefix = nil)
13-
if params[:miq_grid_checks].present?
13+
nested_list_item_key = ""
14+
# Check if nested list items are tagged.
15+
if params["miq_grid_checks"].present?
16+
nested_list_item = params["miq_grid_checks"].split(",")[0]
17+
18+
# Create param string
19+
nested_list_item_key = "select-row-#{nested_list_item}"
20+
end
21+
22+
has_no_check = params.each_key.none? { |var| var.start_with?("check_") }
23+
24+
# If id is present use id, unless when nested list exists, example on summary pages
25+
if params[:id].present? && params[nested_list_item_key] != "on" && has_no_check
26+
Array.wrap(params[:id])
27+
elsif params[:miq_grid_checks].present?
1428
params[:miq_grid_checks].split(",").collect(&:to_i)
1529
else
1630
prefix = "check" if prefix.nil?

spec/controllers/application_controller_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,14 @@
120120
end
121121

122122
describe "#find_checked_items" do
123-
it "returns empty array when button is pressed from summary screen with params as symbol" do
123+
it "returns array with id when button is pressed from summary screen with params as symbol" do
124124
controller.params = {:id => "1"}
125-
expect(controller.send(:find_checked_items)).to eq([])
125+
expect(controller.send(:find_checked_items)).to eq(["1"])
126126
end
127127

128-
it "returns empty array when button is pressed from summary screen with params as string" do
128+
it "returns array with id when button is pressed from summary screen with params as string" do
129129
controller.params = {"id" => "1"}
130-
expect(controller.send(:find_checked_items)).to eq([])
130+
expect(controller.send(:find_checked_items)).to eq(["1"])
131131
end
132132

133133
it "returns list of items selected from list view" do

spec/controllers/auth_key_pair_cloud_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
allow(controller).to receive(:performed?).and_return(true)
9191
allow(controller).to receive(:render)
9292
controller.instance_variable_set(:@display, 'instances')
93-
controller.params = {:miq_grid_checks => vm_instance.id.to_s, :pressed => 'instance_check_compliance', :id => kp.id.to_s, :controller => 'auth_key_pair_cloud'}
93+
controller.params = {:miq_grid_checks => vm_instance.id.to_s, "select-row-#{vm_instance.id.to_s}" => "on", :pressed => 'instance_check_compliance', :id => kp.id.to_s, :controller => 'auth_key_pair_cloud'}
9494
end
9595

9696
it 'does not initiate Check Compliance because of missing Compliance policies' do

spec/controllers/availability_zone_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
allow(controller).to receive(:performed?).and_return(true)
3333
allow(controller).to receive(:render)
3434
controller.instance_variable_set(:@display, 'instances')
35-
controller.params = {:miq_grid_checks => vm_instance.id.to_s, :pressed => 'instance_check_compliance', :id => av_zone.id.to_s, :controller => 'availability_zone'}
35+
controller.params = {:miq_grid_checks => vm_instance.id.to_s, "select-row-#{vm_instance.id.to_s}" => "on", :pressed => 'instance_check_compliance', :id => av_zone.id.to_s, :controller => 'availability_zone'}
3636
end
3737

3838
it 'does not initiate Check Compliance because of missing Compliance policies' do

spec/controllers/cloud_network_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@
396396
end
397397

398398
context 'Check Compliance of Instances displayed in a nested list' do
399-
let(:params) { {:miq_grid_checks => vm_instance.id.to_s, :pressed => 'instance_check_compliance', :id => network.id.to_s, :controller => 'cloud_network'} }
399+
let(:params) { {:miq_grid_checks => vm_instance.id.to_s, "select-row-#{vm_instance.id.to_s}" => "on", :pressed => 'instance_check_compliance', :id => network.id.to_s, :controller => 'cloud_network'} }
400400
let(:vm_instance) { FactoryBot.create(:vm_or_template) }
401401

402402
before { allow(controller).to receive(:performed?).and_return(true) }

spec/controllers/cloud_subnet_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@
334334
end
335335

336336
context 'Check Compliance of Instances displayed in a nested list' do
337-
let(:params) { {:miq_grid_checks => vm_instance.id.to_s, :pressed => 'instance_check_compliance', :id => cloud_subnet.id.to_s, :controller => 'cloud_subnet'} }
337+
let(:params) { {:miq_grid_checks => vm_instance.id.to_s, "select-row-#{vm_instance.id.to_s}" => "on", :pressed => 'instance_check_compliance', :id => cloud_subnet.id.to_s, :controller => 'cloud_subnet'} }
338338
let(:vm_instance) { FactoryBot.create(:vm_or_template) }
339339

340340
before { allow(controller).to receive(:performed?).and_return(true) }

spec/controllers/cloud_tenant_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
allow(controller).to receive(:performed?).and_return(true)
5151
allow(controller).to receive(:render)
5252
controller.instance_variable_set(:@display, 'instances')
53-
controller.params = {:miq_grid_checks => vm_instance.id.to_s, :pressed => 'instance_check_compliance', :id => tenant.id.to_s, :controller => 'cloud_tenant'}
53+
controller.params = {:miq_grid_checks => vm_instance.id.to_s, "select-row-#{vm_instance.id.to_s}" => "on", :pressed => 'instance_check_compliance', :id => tenant.id.to_s, :controller => 'cloud_tenant'}
5454
end
5555

5656
it 'does not initiate Check Compliance because of missing Compliance policies' do

spec/controllers/ems_cloud_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ def verify_password_and_confirm(password, verify)
274274
allow(controller).to receive(:performed?).and_return(true)
275275
allow(controller).to receive(:render)
276276
controller.instance_variable_set(:@display, 'instances')
277-
controller.params = {:miq_grid_checks => vm_instance.id.to_s, :pressed => 'instance_check_compliance', :id => ems.id.to_s, :controller => 'ems_cloud'}
277+
controller.params = {:miq_grid_checks => vm_instance.id.to_s, "select-row-#{vm_instance.id.to_s}" => "on", :pressed => 'instance_check_compliance', :id => ems.id.to_s, :controller => 'ems_cloud'}
278278
end
279279

280280
it 'does not initiate Check Compliance because of missing Compliance policies' do

spec/controllers/ems_cluster_controller_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
allow(controller).to receive(:render)
7272
allow(controller).to receive(:show)
7373
controller.instance_variable_set(:@display, 'vms')
74-
controller.params = {:miq_grid_checks => vm.id.to_s, :pressed => 'vm_check_compliance', :id => cluster.id.to_s, :controller => 'ems_cluster'}
74+
controller.params = {:miq_grid_checks => vm.id.to_s, "select-row-#{vm.id.to_s}" => "on", :pressed => 'vm_check_compliance', :id => cluster.id.to_s, :controller => 'ems_cluster'}
7575
end
7676

7777
it 'does not initiate Check Compliance because of missing Compliance policies' do
@@ -105,7 +105,7 @@
105105
allow(controller).to receive(:drop_breadcrumb)
106106
allow(controller).to receive(:records_support_feature?).and_return(true)
107107
allow(controller).to receive(:render)
108-
controller.params = {:id => cluster.id.to_s, :miq_grid_checks => vm.id.to_s, :pressed => 'vm_scan' }
108+
controller.params = {:id => cluster.id.to_s, :miq_grid_checks => vm.id.to_s, "select-row-#{vm.id.to_s}" => "on", :pressed => 'vm_scan' }
109109
end
110110

111111
%w[vms all_vms].each do |display|
@@ -127,7 +127,7 @@
127127
it 'initiates SSA for selected Template successfully' do
128128
controller.params = {:display => 'miq_templates', :id => cluster.id.to_s}
129129
controller.send(:show)
130-
controller.params = {:id => cluster.id.to_s, :miq_grid_checks => template.id.to_s, :pressed => 'miq_template_scan'}
130+
controller.params = {:id => cluster.id.to_s, :miq_grid_checks => template.id.to_s, "select-row-#{template.id.to_s}" => "on", :pressed => 'miq_template_scan'}
131131
controller.send(:button)
132132
expect(controller.instance_variable_get(:@record)).to eq(cluster)
133133
expect(controller.instance_variable_get(:@view).db).to eq('MiqTemplate')

0 commit comments

Comments
 (0)