From ebe859bd23ace61fc76d2ad6a9d7c62bedcf42dc Mon Sep 17 00:00:00 2001 From: Martin Hradil Date: Wed, 19 Oct 2016 14:59:38 +0000 Subject: [PATCH 1/2] StorageController spec - test functionality needed for links to specific datastore Need to test that we don't fail and actually render the right template, not the list. This is used when going to /storage/show/123 --- spec/controllers/storage_controller_spec.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/spec/controllers/storage_controller_spec.rb b/spec/controllers/storage_controller_spec.rb index f632c814d61..16ed45529f2 100644 --- a/spec/controllers/storage_controller_spec.rb +++ b/spec/controllers/storage_controller_spec.rb @@ -205,6 +205,19 @@ flash_messages = assigns(:flash_array) expect(flash_messages.first[:message]).to_not include("Datastores no longer exists") end + + it 'can render datastore details' do + tree_node_id = TreeBuilder.build_node_id(storage) + session[:sandboxes] = {} # no prior data in @sb + session[:exp_parms] = {:controller => 'storage', + :action => 'show', + :id => tree_node_id} + + get :explorer + expect(response.status).to eq(200) + expect(response.body).to_not be_empty + expect(response).to render_template('shared/summary/_textual') + end end context "#tree_select" do From 9291c3227fee5bbabda697e6bdb59cd30b96b119 Mon Sep 17 00:00:00 2001 From: Martin Hradil Date: Tue, 18 Oct 2016 12:32:08 +0000 Subject: [PATCH 2/2] StorageController#show - set x_node when called with an id going to a specific datastore from lists that live outside of `storage_controller` - for example from `/ems_infra/123?display=storages` - works by linking to /storage/show/456 However, that path updates x_node before the trees are build and so before the right tree is selected. Forcing to :storage_tree in such a case. https://bugzilla.redhat.com/show_bug.cgi?id=1380707 --- app/controllers/storage_controller.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/controllers/storage_controller.rb b/app/controllers/storage_controller.rb index a882f8e3aa3..3545f7da18c 100644 --- a/app/controllers/storage_controller.rb +++ b/app/controllers/storage_controller.rb @@ -30,8 +30,7 @@ def show_new(id = nil) def show(record = nil) return if perfmenu_click? @display = params[:display] || "main" unless control_selected? - @record = @storage = find_record( Storage, record || params[:id]) - # @storage = @record = identify_record(params[:id]) + @record = @storage = find_record(Storage, record || params[:id]) return if record_no_longer_exists?(@storage) if !@explorer && @display == "main" @@ -59,7 +58,6 @@ def show(record = nil) end @gtl_url = "/show" - # drop_breadcrumb({:name=>ui_lookup(:tables=>"storages"), :url=>"/storage/show_list?page=#{@current_page}&refresh=y"}, true) case @display when "all_miq_templates", "all_vms" @@ -406,7 +404,8 @@ def explorer nodetype, id = params[:id].split("-") # treebuilder initializes x_node to root first time in locals_for_render, # need to set this here to force & activate node when link is clicked outside of explorer. - @reselect_node = self.x_node = "#{nodetype}-#{to_cid(id)}" + self.x_active_tree = :storage_tree + self.x_node = @reselect_node = "#{nodetype}-#{to_cid(id)}" end build_accordions_and_trees