Project

General

Profile

Download (3.17 KB) Statistics
| Branch: | Tag: | Revision:
require 'test_helper'

class DashboardManagerTest < ActiveSupport::TestCase
test '.add_widget_to_user adds built-in widget with params' do
user = FactoryBot.create(:user)
user.widgets.clear

widget_params = {template: 'status_widget', sizex: 8, sizey: 1, name: 'Host Configuration Status'}
Dashboard::Manager.add_widget_to_user(user, widget_params)

assert_equal 1, user.widgets.size
assert_equal widget_params.stringify_keys, user.widgets.first.attributes.slice(*widget_params.stringify_keys.keys)
end

test '.add_widget_to_user adds plugin widget with params' do
user = FactoryBot.create(:user)
user.widgets.clear

widget_params = {template: 'plugin_widget', sizex: 8, sizey: 1, name: 'Plugin 1'}
Foreman::Plugin.expects(:all).returns([mock(dashboard_widgets: [{name: 'Plugin 1', template: 'plugin_widget'}])])
Dashboard::Manager.add_widget_to_user(user, widget_params)

assert_equal 1, user.widgets.size
assert_equal widget_params.stringify_keys, user.widgets.first.attributes.slice(*widget_params.stringify_keys.keys)
end

test '.add_widget_to_user raises exception for unknown template' do
widget_params = {template: 'unknown_template', sizex: 8, sizey: 1, name: 'Host Configuration Status'}
e = assert_raises(Foreman::Exception) { Dashboard::Manager.add_widget_to_user(mock('user'), widget_params) }
assert_includes e.message, 'Unallowed template for dashboard widget: unknown_template'
end

test '.default_widgets returns built-in widgets' do
Dashboard::Manager.stubs(:registered_report_orgins).returns(['Puppet'])
Foreman::Plugin.expects(:all).returns([])
assert_equal 8, Dashboard::Manager.default_widgets.count
end

test '.default_widgets adds plugin widgets' do
Foreman::Plugin.expects(:all).returns([mock(dashboard_widgets: [:plugin1]), mock(dashboard_widgets: [:plugin2, :plugin3])])
Dashboard::Manager.expects(:builtin_widgets).returns([:builtin1, :builtin2])
widgets = Dashboard::Manager.default_widgets
assert_equal 5, widgets.count
assert_includes widgets, :plugin1
assert_includes widgets, :plugin2
assert_includes widgets, :plugin3
end

test '.find_default_widget_by_name returns built-in widget' do
assert_equal ['status_chart_widget'], Dashboard::Manager.find_default_widget_by_name('Host Configuration Chart for All').map { |w| w[:template] }
end

test '.find_default_widget_by_name returns plugin widget' do
Foreman::Plugin.expects(:all).returns([mock(dashboard_widgets: [{name: 'Plugin 1', template: 'plugin1'}])])
assert_equal ['plugin1'], Dashboard::Manager.find_default_widget_by_name('Plugin 1').map { |w| w[:template] }
end

test '.find_default_widget_by_name returns empty array for unknown widget' do
assert_equal [], Dashboard::Manager.find_default_widget_by_name('Unknown')
end

test '.reset_user_to_default removes and adds default widgets' do
user = FactoryBot.create(:user)
user.widgets = [user.widgets.first]

Foreman::Plugin.expects(:all).at_least_once.returns([])
Dashboard::Manager.reset_user_to_default(user)
user.widgets.reload
assert_equal Dashboard::Manager.default_widgets.count,
user.widgets.count
end
end
(17-17/67)