foreman_datacenter 1.22.1 → 1.24.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/foreman_datacenter/application_controller.rb +2 -0
- data/app/controllers/foreman_datacenter/racks_controller.rb +8 -1
- data/app/models/foreman_datacenter/rack.rb +36 -0
- data/app/views/foreman_datacenter/device_roles/show.html.erb +1 -2
- data/app/views/foreman_datacenter/device_types/show.html.erb +1 -2
- data/app/views/foreman_datacenter/manufacturers/show.html.erb +1 -2
- data/app/views/foreman_datacenter/platforms/show.html.erb +1 -2
- data/app/views/foreman_datacenter/rack_groups/show.html.erb +1 -2
- data/app/views/foreman_datacenter/racks/_device_position.html.erb +10 -1
- data/app/views/foreman_datacenter/racks/show.html.erb +1 -2
- data/app/views/foreman_datacenter/sites/show.html.erb +1 -2
- data/config/routes.rb +21 -1
- data/lib/foreman_datacenter/version.rb +1 -1
- data/test/controllers/foreman_datacenter/device_roles_controller_test.rb +133 -0
- data/test/controllers/foreman_datacenter/device_types_contoller_test.rb +108 -47
- data/test/controllers/foreman_datacenter/devices_controller_test.rb +132 -0
- data/test/controllers/foreman_datacenter/manufacturers_controller_test.rb +133 -0
- data/test/controllers/foreman_datacenter/platforms_contoller_test.rb +91 -48
- data/test/controllers/foreman_datacenter/rack_groups_contoller_test.rb +90 -43
- data/test/controllers/foreman_datacenter/racks_contoller_test.rb +111 -42
- data/test/controllers/foreman_datacenter/sites_contoller_test.rb +108 -81
- data/test/datacenter_helper.rb +8 -1
- data/test/factories/device.rb +5 -0
- data/test/factories/device_role.rb +6 -0
- data/test/factories/device_type.rb +30 -0
- data/test/factories/rack_group.rb +13 -14
- data/test/fixtures/foreman_datacenter/device_roles.yml +0 -1
- data/test/integration/foreman_datacenter/device_role_test.rb +35 -0
- data/test/integration/foreman_datacenter/device_type_test.rb +33 -0
- data/test/integration/foreman_datacenter/manufacturer_test.rb +33 -0
- data/test/integration/foreman_datacenter/platform_test.rb +35 -0
- data/test/integration/foreman_datacenter/rack_group_test.rb +35 -25
- data/test/integration/foreman_datacenter/rack_test.rb +37 -25
- data/test/integration/foreman_datacenter/site_test.rb +39 -29
- data/test/unit/foreman_datacenter_test.rb +1 -1
- metadata +56 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa372e8673608cecc9343f4a2efa60d2d38dc77cb9ef37cfd55f8ec261907ccc
|
4
|
+
data.tar.gz: b806528ffcea447652114e76043f216d28eb50c2386f253ca93bd8808ab0ee35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fa308e3840207c9a77aecfaa18491b578a73f5a1307bcea72fabafa1e97d4b3dfcf6bd9386803c847bbc410e75de3515d629c1e12227d4606d5e8385096c721
|
7
|
+
data.tar.gz: 3a00433a5afb85a305c687e66f153dd4279efe62f2ec842d6c67d321085062530dc261529436076b3ea0df0e74136bed184b79b388b98cf34f39eb6ecd0066b9
|
@@ -3,7 +3,7 @@ module ForemanDatacenter
|
|
3
3
|
include Foreman::Controller::AutoCompleteSearch
|
4
4
|
include ForemanDatacenter::Controller::Parameters::Rack
|
5
5
|
|
6
|
-
before_action :find_resource, only: [:show, :edit, :update, :destroy, :devices, :move]
|
6
|
+
before_action :find_resource, only: [:show, :edit, :update, :destroy, :devices, :move, :export_to_csv]
|
7
7
|
|
8
8
|
def index
|
9
9
|
@racks = resource_base_search_and_page.includes(:site, :rack_group)
|
@@ -64,6 +64,13 @@ module ForemanDatacenter
|
|
64
64
|
process_error object: @rack, error_msg: 'Current Rack haven\'t any Devices.' if @devices.empty?
|
65
65
|
end
|
66
66
|
|
67
|
+
def export_to_csv
|
68
|
+
data = @rack.format_for_csv
|
69
|
+
file = File.open("#{@rack.name}.csv", "r")
|
70
|
+
send_file(file)
|
71
|
+
file.close
|
72
|
+
end
|
73
|
+
|
67
74
|
def update_associated_objects
|
68
75
|
begin
|
69
76
|
@rack = ForemanDatacenter::Rack.find(request.env['HTTP_REFERER'].split('/')[-2])
|
@@ -52,8 +52,42 @@ module ForemanDatacenter
|
|
52
52
|
count
|
53
53
|
end
|
54
54
|
|
55
|
+
def format_for_csv
|
56
|
+
positioned_devices = self.positioned_devices
|
57
|
+
unpositioned_devices = self.unpositioned_devices
|
58
|
+
csv_string = CSV.generate do |csv|
|
59
|
+
csv << ["positions", "left", "full", "right", "no side"]
|
60
|
+
positioned_devices.each do |i|
|
61
|
+
pos = i[0].map{|p| "#{p}"+"U"}.join(",")
|
62
|
+
if i[1].size > 0
|
63
|
+
sort = sort_for_csv(i[1])
|
64
|
+
csv << [pos, sort[0], sort[1], sort[2], sort[3]]
|
65
|
+
else
|
66
|
+
csv << [pos]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
unless unpositioned_devices.empty?
|
70
|
+
csv << []
|
71
|
+
csv << ["Unpositioned", unpositioned_devices.map(&:name).join(",")]
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
File.open("#{self.name}.csv", "w") {|f| f << csv_string}
|
76
|
+
end
|
77
|
+
|
55
78
|
private
|
56
79
|
|
80
|
+
def sort_for_csv(device_array)
|
81
|
+
left, full, right, no_side = "", "", "", []
|
82
|
+
device_array.each do |d|
|
83
|
+
left = d.name if d.side == "left"
|
84
|
+
right = d.name if d.side == "right"
|
85
|
+
full = d.name if d.side == "full"
|
86
|
+
no_side << d.name if d.side == nil
|
87
|
+
end
|
88
|
+
[left, full, right, no_side.join(",")]
|
89
|
+
end
|
90
|
+
|
57
91
|
def device_sorting(devices)
|
58
92
|
devices.reverse.map { |d| [d[0].reverse, d[1]] }
|
59
93
|
end
|
@@ -63,5 +97,7 @@ module ForemanDatacenter
|
|
63
97
|
devices.each{|d| devs[1] << d[1][0]}
|
64
98
|
return devs
|
65
99
|
end
|
100
|
+
|
101
|
+
|
66
102
|
end
|
67
103
|
end
|
@@ -1,5 +1,14 @@
|
|
1
1
|
<div class="panel panel-default">
|
2
|
-
<div class="panel-heading text-center"
|
2
|
+
<div class="panel-heading text-center">
|
3
|
+
<h4 class="nonmargintop nonmarginbottom">
|
4
|
+
<strong>
|
5
|
+
<%= link_to _("#{rack.name}"), rack_path(rack) %>
|
6
|
+
</strong>
|
7
|
+
<strong>
|
8
|
+
<%= link_to 'Export to CSV', export_to_csv_rack_path(rack.id), class: "btn btn-primary btn-xs pull-right" %>
|
9
|
+
</strong>
|
10
|
+
</h4>
|
11
|
+
</div>
|
3
12
|
<table class="<%= table_css_classes 'table-hover panel-body nonmarginbottom' %>">
|
4
13
|
<tbody>
|
5
14
|
<% rack.positioned_devices.each do |positions, devices| %>
|
data/config/routes.rb
CHANGED
@@ -74,11 +74,30 @@ Foreman::Application.routes.draw do
|
|
74
74
|
get 'datacenter/import_to_device', to: 'hosts#import_to_device',
|
75
75
|
as: 'import_to_device'
|
76
76
|
|
77
|
-
get '/api/:controller/(:action(/*welcome))'
|
77
|
+
# get '/api/:controller/(:action(/*welcome))'
|
78
78
|
# get '/datacenter/(:controller)/help', :action => 'welcome', :as => "help"
|
79
79
|
|
80
80
|
scope 'datacenter', module: :foreman_datacenter do
|
81
81
|
|
82
|
+
welcoming_controllers = [
|
83
|
+
'console_ports',
|
84
|
+
'device_interface_connections',
|
85
|
+
'device_interface_connections',
|
86
|
+
'device_roles',
|
87
|
+
'device_types',
|
88
|
+
'devices',
|
89
|
+
'manufacturers',
|
90
|
+
'platforms',
|
91
|
+
'power_ports',
|
92
|
+
'rack_groups',
|
93
|
+
'racks',
|
94
|
+
'sites',
|
95
|
+
]
|
96
|
+
|
97
|
+
welcoming_controllers.each do |welcoming_controller|
|
98
|
+
get "#{welcoming_controller}/help", :action => :welcome, :controller => welcoming_controller
|
99
|
+
end
|
100
|
+
|
82
101
|
post :site_update_associated_objects, to: "sites#update_associated_objects"
|
83
102
|
post :rack_group_update_associated_objects, to: "rack_groups#update_associated_objects"
|
84
103
|
post :rack_update_associated_objects, to: "racks#update_associated_objects"
|
@@ -94,6 +113,7 @@ Foreman::Application.routes.draw do
|
|
94
113
|
end
|
95
114
|
resources :racks do
|
96
115
|
member do
|
116
|
+
get :export_to_csv
|
97
117
|
get :move
|
98
118
|
end
|
99
119
|
collection do
|
@@ -0,0 +1,133 @@
|
|
1
|
+
require_relative '../../test_plugin_helper'
|
2
|
+
|
3
|
+
module ForemanDatacenter
|
4
|
+
class DeviceRolesControllerTest < ActionController::TestCase
|
5
|
+
describe ForemanDatacenter::DeviceRolesController do
|
6
|
+
setup do
|
7
|
+
@model = ForemanDatacenter::DeviceRole.first
|
8
|
+
end
|
9
|
+
|
10
|
+
basic_index_test 'device_roles'
|
11
|
+
basic_new_test
|
12
|
+
basic_edit_test 'device_role'
|
13
|
+
basic_pagination_per_page_test
|
14
|
+
basic_pagination_rendered_test
|
15
|
+
|
16
|
+
def test_create_invalid
|
17
|
+
ForemanDatacenter::DeviceRole.any_instance.stubs(:valid?).returns(false)
|
18
|
+
post :create, params: { :device_role => {:name => nil} }, session: set_session_user
|
19
|
+
assert_template 'new'
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_create_valid(name = "test device_role")
|
23
|
+
ForemanDatacenter::DeviceRole.any_instance.stubs(:valid?).returns(true)
|
24
|
+
post :create, params: { :device_role => {:name => name, :color => 'Teal'} }, session: set_session_user
|
25
|
+
assert_redirected_to device_roles_url
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_update_invalid
|
29
|
+
ForemanDatacenter::DeviceRole.any_instance.stubs(:valid?).returns(false)
|
30
|
+
put :update, params: { :id => @model.to_param, :device_role => {:name => "3243", :color => "Red"} }, session: set_session_user
|
31
|
+
assert_template 'edit'
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_update_valid
|
35
|
+
ForemanDatacenter::DeviceRole.any_instance.stubs(:valid?).returns(true)
|
36
|
+
put :update, params: { :id => @model.to_param, :device_role => {:name => @model.name, :color => "Green"} }, session: set_session_user
|
37
|
+
assert_redirected_to device_roles_url
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_destroy
|
41
|
+
test_create_valid "tobedeleted_test"
|
42
|
+
@new_dr = ForemanDatacenter::DeviceRole.find_by_name("tobedeleted_test")
|
43
|
+
delete :destroy, params: { :id => @new_dr.id }, session: set_session_user
|
44
|
+
assert_redirected_to device_roles_url
|
45
|
+
assert !ForemanDatacenter::DeviceRole.exists?(@new_dr.id)
|
46
|
+
end
|
47
|
+
|
48
|
+
test "should not get index when not permitted" do
|
49
|
+
setup_user
|
50
|
+
get :index, session: { :user => users(:one).id, :expires_at => 5.minutes.from_now }
|
51
|
+
assert_response :forbidden
|
52
|
+
assert_includes @response.body, 'view_device_roles'
|
53
|
+
end
|
54
|
+
|
55
|
+
test 'should not get show when not permitted' do
|
56
|
+
setup_user
|
57
|
+
get :show, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
58
|
+
assert_response :forbidden
|
59
|
+
assert_includes @response.body, 'view_device_roles'
|
60
|
+
end
|
61
|
+
|
62
|
+
test 'should not get edit when not permitted' do
|
63
|
+
setup_user
|
64
|
+
get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
65
|
+
assert_response :forbidden
|
66
|
+
assert_includes @response.body, 'edit_device_roles'
|
67
|
+
end
|
68
|
+
|
69
|
+
test "should get index" do
|
70
|
+
setup_user("Viewer")
|
71
|
+
get :index, session: set_session_user
|
72
|
+
assert_response :success
|
73
|
+
assert_template 'index'
|
74
|
+
end
|
75
|
+
|
76
|
+
test 'should get show' do
|
77
|
+
setup_user("Viewer")
|
78
|
+
get :show, params: { :id => @model.id }, session: set_session_user
|
79
|
+
assert_response :success
|
80
|
+
assert_template 'show'
|
81
|
+
end
|
82
|
+
|
83
|
+
test 'should not get edit with viewer permissions' do
|
84
|
+
setup_user("Viewer")
|
85
|
+
get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
86
|
+
assert_response :forbidden
|
87
|
+
assert_includes @response.body, 'edit_device_roles'
|
88
|
+
end
|
89
|
+
|
90
|
+
test 'should get edit' do
|
91
|
+
get :edit, params: { :id => @model.id }, session: set_session_user
|
92
|
+
assert_response :success
|
93
|
+
assert_template 'edit'
|
94
|
+
end
|
95
|
+
|
96
|
+
def setup_user(role = "")
|
97
|
+
@request.session[:user] = users(:one).id
|
98
|
+
users(:one).roles = [Role.default]
|
99
|
+
users(:one).roles << Role.find_by_name(role) if role != ""
|
100
|
+
# users(:one).roles = [Role.default, Role.find_by_name("Viewer")]
|
101
|
+
end
|
102
|
+
|
103
|
+
test "should_render_404_when_device_role_is_not_found" do
|
104
|
+
get :show, params: { id: 'no.such.device.role' }, session: set_session_user
|
105
|
+
assert_response :not_found
|
106
|
+
assert_template 'common/404'
|
107
|
+
end
|
108
|
+
|
109
|
+
test "should_not_destroy_device_role_when_not_permitted" do
|
110
|
+
setup_user
|
111
|
+
assert_difference('ForemanDatacenter::DeviceRole.count', 0) do
|
112
|
+
delete :destroy, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
113
|
+
end
|
114
|
+
assert_response :forbidden
|
115
|
+
end
|
116
|
+
|
117
|
+
test "should search by name" do
|
118
|
+
get :index, params: {:search => "name=\"device_role_1\""}, session: set_session_user
|
119
|
+
assert_response :success
|
120
|
+
refute_empty assigns(:device_roles)
|
121
|
+
assert assigns(:device_roles).include?(device_roles(:one))
|
122
|
+
end
|
123
|
+
|
124
|
+
test "should search by color" do
|
125
|
+
get :index, params: {:search => "color=\"Teal\""}, session: set_session_user
|
126
|
+
assert_response :success
|
127
|
+
refute_empty assigns(:device_roles)
|
128
|
+
assert assigns(:device_roles).include?(device_roles(:one))
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
@@ -13,78 +13,139 @@ module ForemanDatacenter
|
|
13
13
|
basic_pagination_per_page_test
|
14
14
|
basic_pagination_rendered_test
|
15
15
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
def test_create_invalid
|
17
|
+
ForemanDatacenter::DeviceType.any_instance.stubs(:valid?).returns(false)
|
18
|
+
post :create, params: { device_type: { model: nil } }, session: set_session_user
|
19
|
+
assert_template 'new'
|
20
|
+
end
|
20
21
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
def test_show_edit_button_id
|
27
|
-
get :show, params: { :id => ForemanDatacenter::DeviceType.first.to_param }, session: set_session_user
|
28
|
-
assert_select "[data-id='aid_device_types_#{ForemanDatacenter::DeviceType.first.id}_edit']"
|
22
|
+
def test_create_valid(model = "test device_type")
|
23
|
+
ForemanDatacenter::DeviceType.any_instance.stubs(:valid?).returns(true)
|
24
|
+
post :create, params: { device_type: { model: model, manufacturer_id: 1 } }, session: set_session_user
|
25
|
+
assert_redirected_to device_types_url
|
29
26
|
end
|
30
27
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
28
|
+
def test_update_invalid
|
29
|
+
ForemanDatacenter::DeviceType.any_instance.stubs(:valid?).returns(false)
|
30
|
+
put :update, params: { id: @model.to_param, device_type: { model: '3243', color: 'Red' } }, session: set_session_user
|
31
|
+
assert_template 'edit'
|
34
32
|
end
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
def test_update_valid
|
35
|
+
ForemanDatacenter::DeviceType.any_instance.stubs(:valid?).returns(true)
|
36
|
+
put :update, params: { id: @model.to_param, device_type: { model: @model.model, color: 'Green' } }, session: set_session_user
|
37
|
+
assert_redirected_to device_types_url
|
40
38
|
end
|
41
39
|
|
42
40
|
def test_create_invalid
|
43
41
|
ForemanDatacenter::DeviceType.any_instance.stubs(:valid?).returns(false)
|
44
|
-
post :create, params: { :
|
42
|
+
post :create, params: { device_type: { model: nil } }, session: set_session_user
|
45
43
|
assert_template 'new'
|
46
44
|
end
|
47
45
|
|
48
|
-
def
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
46
|
+
def test_destroy
|
47
|
+
test_create_valid "tobedeleted_test"
|
48
|
+
@new_dt = ForemanDatacenter::DeviceType.find_by_model("tobedeleted_test")
|
49
|
+
delete :destroy, params: { id: @new_dt.id }, session: set_session_user
|
50
|
+
assert_redirected_to device_types_url
|
51
|
+
assert !ForemanDatacenter::DeviceType.exists?(@new_dt.id)
|
53
52
|
end
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
test "should not get index when not permitted" do
|
55
|
+
setup_user
|
56
|
+
get :index, session: { :user => users(:one).id, :expires_at => 5.minutes.from_now }
|
57
|
+
assert_response :forbidden
|
58
|
+
assert_includes @response.body, 'view_device_types'
|
58
59
|
end
|
59
60
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
61
|
+
test 'should not get show when not permitted' do
|
62
|
+
setup_user
|
63
|
+
get :show, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
64
|
+
assert_response :forbidden
|
65
|
+
assert_includes @response.body, 'view_device_types'
|
64
66
|
end
|
65
67
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
68
|
+
test 'should not get edit when not permitted' do
|
69
|
+
setup_user
|
70
|
+
get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
71
|
+
assert_response :forbidden
|
72
|
+
assert_includes @response.body, 'edit_device_types'
|
70
73
|
end
|
71
74
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
75
|
+
test "should get index" do
|
76
|
+
setup_user("Viewer")
|
77
|
+
get :index, session: set_session_user
|
78
|
+
assert_response :success
|
79
|
+
assert_template 'index'
|
80
|
+
end
|
81
|
+
|
82
|
+
test 'should get show' do
|
83
|
+
setup_user("Viewer")
|
84
|
+
get :show, params: { :id => @model.id }, session: set_session_user
|
85
|
+
assert_response :success
|
86
|
+
assert_template 'show'
|
87
|
+
end
|
88
|
+
|
89
|
+
test 'should not get edit with viewer permissions' do
|
90
|
+
setup_user("Viewer")
|
91
|
+
get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
92
|
+
assert_response :forbidden
|
93
|
+
assert_includes @response.body, 'edit_device_types'
|
79
94
|
end
|
80
95
|
|
81
|
-
|
96
|
+
test 'should get edit' do
|
97
|
+
get :edit, params: { :id => @model.id }, session: set_session_user
|
98
|
+
assert_response :success
|
99
|
+
assert_template 'edit'
|
100
|
+
end
|
101
|
+
|
102
|
+
def setup_user(role = "")
|
82
103
|
@request.session[:user] = users(:one).id
|
83
|
-
users(:one).roles = [Role.default
|
104
|
+
users(:one).roles = [Role.default]
|
105
|
+
users(:one).roles << Role.find_by_name(role) if role != ""
|
106
|
+
# users(:one).roles = [Role.default, Role.find_by_name("Viewer")]
|
107
|
+
end
|
108
|
+
|
109
|
+
test "should_render_404_when_device_type_is_not_found" do
|
110
|
+
get :show, params: { id: 'no.such.device.type' }, session: set_session_user
|
111
|
+
assert_response :not_found
|
112
|
+
assert_template 'common/404'
|
84
113
|
end
|
85
114
|
|
86
|
-
|
87
|
-
|
115
|
+
test "should_not_destroy_device_type_when_not_permitted" do
|
116
|
+
setup_user
|
117
|
+
assert_difference('ForemanDatacenter::DeviceType.count', 0) do
|
118
|
+
delete :destroy, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
|
119
|
+
end
|
120
|
+
assert_response :forbidden
|
121
|
+
end
|
122
|
+
|
123
|
+
test "should search by model" do
|
124
|
+
get :index, params: {:search => "model=\"DeviceType_1NONE\""}, session: set_session_user
|
125
|
+
assert_response :success
|
126
|
+
refute_empty assigns(:device_types)
|
127
|
+
assert assigns(:device_types).include?(device_types(:one))
|
128
|
+
end
|
129
|
+
|
130
|
+
test "should search by manufacturer" do
|
131
|
+
get :index, params: {:search => "manufacturer=\"manufacturer_1\""}, session: set_session_user
|
132
|
+
assert_response :success
|
133
|
+
refute_empty assigns(:device_types)
|
134
|
+
assert assigns(:device_types).include?(device_types(:one))
|
135
|
+
end
|
136
|
+
|
137
|
+
test "should search by subdevice role" do
|
138
|
+
get :index, params: {:search => "subdevice_role=\"None\""}, session: set_session_user
|
139
|
+
assert_response :success
|
140
|
+
refute_empty assigns(:device_types)
|
141
|
+
assert assigns(:device_types).include?(device_types(:one))
|
142
|
+
end
|
143
|
+
|
144
|
+
test "should search by U height" do
|
145
|
+
get :index, params: {:search => "u_height=\"1\""}, session: set_session_user
|
146
|
+
assert_response :success
|
147
|
+
refute_empty assigns(:device_types)
|
148
|
+
assert assigns(:device_types).include?(device_types(:one))
|
88
149
|
end
|
89
150
|
end
|
90
151
|
end
|