forked from ManageIQ/manageiq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvm_or_template_controller_spec.rb
130 lines (109 loc) · 4.68 KB
/
vm_or_template_controller_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
describe VmOrTemplateController do
let(:template_vmware) { FactoryGirl.create(:template_vmware, :name => 'template_vmware Name') }
let(:vm_vmware) { FactoryGirl.create(:vm_vmware, :name => "vm_vmware Name") }
before { set_user_privileges }
# All of the x_button is a suplement for Rails routes that is written in
# controller.
#
# You pass in query param 'pressed' and from that the actual route is
# determined.
#
# So we need a test for each possible value of 'presses' until all this is
# converted into proper routes and test is changed to test the new routes.
describe 'x_button' do
before do
ApplicationController.handle_exceptions = true
end
describe 'corresponding methods are called for allowed actions' do
ApplicationController::Explorer::X_BUTTON_ALLOWED_ACTIONS.each_pair do |action_name, method|
actual_action = 'vm_' + action_name
actual_method = [:s1, :s2].include?(method) ? actual_action : method.to_s
it "calls the appropriate method: '#{actual_method}' for action '#{actual_action}'" do
expect(controller).to receive(actual_method)
get :x_button, :params => { :id => nil, :pressed => actual_action }
end
end
end
it 'exception is raised for unknown action' do
get :x_button, :params => { :pressed => 'random_dude', :format => :html }
expect(response).to render_template('layouts/exception')
end
context "x_button method check" do
before { controller.instance_variable_set(:@_orig_action, "x_history") }
it "should set correct VM for right-sizing when on vm list view" do
expect(controller).to receive(:replace_right_cell)
post :x_button, :params => { :pressed => "vm_right_size", :id => vm_vmware.id, :check_10r839 => '1' }
expect(controller.send(:flash_errors?)).not_to be_truthy
assigns(:record).id == vm_vmware.id
end
it "should set correct VM for right-sizing when from vm summary screen" do
expect(controller).to receive(:replace_right_cell)
post :x_button, :params => { :pressed => "vm_right_size", :id => vm_vmware.id }
expect(controller.send(:flash_errors?)).not_to be_truthy
assigns(:record).id == vm_vmware.id
end
end
end
context "skip or drop breadcrumb" do
before do
session[:settings] = {:views => {}, :perpage => {:list => 10}}
EvmSpecHelper.create_guid_miq_server_zone
get :explorer
end
it 'skips dropping a breadcrumb when a button action is executed' do
ApplicationController.handle_exceptions = true
post :x_button, :params => { :id => nil, :pressed => 'miq_template_ownership' }
breadcrumbs = controller.instance_variable_get(:@breadcrumbs)
expect(breadcrumbs).to eq([{:name => "VMs and Instances", :url => "/vm_or_template/explorer"}])
end
it 'drops a breadcrumb when an action allowing breadcrumbs is executed' do
post :accordion_select, :params => { :id => "templates_images_filter" }
breadcrumbs = controller.instance_variable_get(:@breadcrumbs)
expect(breadcrumbs).to eq([{:name => "VM Templates and Images", :url => "/vm_or_template/explorer"}])
end
end
context 'render_views' do
render_views
context '#explorer' do
before do
session[:settings] = {:views => {}, :perpage => {:list => 10}}
EvmSpecHelper.create_guid_miq_server_zone
end
it 'can render the explorer' do
get :explorer
expect(response.status).to eq(200)
expect(response.body).to_not be_empty
end
it 'shows a template in the templates list' do
template_vmware
session[:sb] = {:active_accord => :templates_images_filter}
seed_session_trees('vm_or_template', :templates_images_filter_tree, 'root')
get :explorer
expect(response.body).to match(%r({"text":\s*"template_vmware Name"}))
end
it 'show a vm in the vms instances list' do
vm_vmware
get :explorer
expect(response.body).to match(%r({"text":\s*"vm_vmware Name"}))
end
end
context "#tree_select" do
before do
template_vmware
vm_vmware
end
[
['Vms & Instances', 'vms_instances_filter_tree'],
['Templates & Image', 'templates_images_filter_tree'],
].each do |elements, tree|
it "renders list of #{elements} for #{tree} root node" do
session[:settings] = {}
seed_session_trees('vm_or_template', tree.to_sym)
post :tree_select, :params => { :id => 'root', :format => :js }
expect(response).to render_template('layouts/gtl/_list')
expect(response.status).to eq(200)
end
end
end
end
end