Project

General

Profile

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

class DashboardControllerTest < ActionController::TestCase
let(:any_default_widget) { Dashboard::Manager.default_widgets.sample }

test 'should get index' do
get :index, session: set_session_user
assert_response :success
end

test 'create returns 404 if widget to add is not found' do
post :create, params: { :name => 'non-existent-widget' }, session: set_session_user
assert_response :not_found
end

test 'create adds widget to user if widget is valid' do
assert_difference('users(:admin).widgets.count', 1) do
post :create, params: { :name => any_default_widget[:name] },
session: set_session_user
end
assert_response :success
end

test '#destroy removes a widget from the user' do
widget = FactoryBot.create(:widget, :user => users(:admin))
delete :destroy, params: { :id => widget.id, :format => 'json' }, session: set_session_user
assert_response :success
assert_equal widget.id.to_s, @response.body
assert_empty users(:admin).widgets.reload
end

test "#destroy returns forbidden for other user's widget" do
other_user = FactoryBot.create(:user, :with_widget)
widget = other_user.widgets.first
delete :destroy, params: { :id => widget.id, :format => 'json' }, session: set_session_user
assert_response :forbidden
assert_equal widget.id.to_s, @response.body
assert_includes other_user.widgets.reload, widget
end

test "#reset_to_default resets user's widgets" do
Dashboard::Manager.expects(:reset_user_to_default).with(users(:admin))
put :reset_default, session: set_session_user
assert_redirected_to root_path
end

test "#save_positions updates each widget" do
widget = FactoryBot.create(:widget, :user => users(:admin))
params = {
widget.id.to_s => {:col => '4', :row => '3', :sizex => '8', :sizey => '1'}
}
post :save_positions, params: { :widgets => params, :format => 'json' }, session: set_session_user
assert_response :success
widget.reload
assert_equal 4, widget.col
assert_equal 3, widget.row
end
end
(15-15/53)