Project

General

Profile

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

class FiltersControllerTest < ActionController::TestCase
setup do
@model = Filter.first
User.current = users(:admin)
end

basic_index_test('filters')
basic_new_test
basic_edit_test('filter')
basic_pagination_per_page_test
basic_pagination_rendered_test

test "changes should expire topbar cache" do
user1 = FactoryBot.create(:user, :with_mail)
user2 = FactoryBot.create(:user, :with_mail)
filter = FactoryBot.create(:filter, :on_name_all)
role = filter.role
role.users = [user1, user2]
role.save!

User.any_instance.expects(:expire_topbar_cache).twice
put :update, params: { :id => filter.id, :filter => {:role_id => role.id, :search => "name ~ a*"} }, session: set_session_user
end

test "should get index with role_id and create scoped search on role.name" do
role = roles(:manager)
get :index, params: { :role_id => role.id }, session: set_session_user
assert_response :success
refute_empty assigns(:filters)
assert_equal Filter.search_for("role = #{role.name}").count, assigns(:filters).count
assert_match "{\"caption\":\"Roles\",\"url\":\"/roles\"},{\"caption\":\"Manager filters\"}", @response.body
end

test "should create filter" do
assert_difference('Filter.count') do
post :create, params: {:filter => { :role_id => roles(:destroy_hosts).id, :permission_ids => [permissions(:access_dashboard).id] }}, session: set_session_user
end
assert_redirected_to filters_path
end

test "should update filter" do
put :update, params: {:id => filters(:destroy_hosts_1), :filter => { :permission_ids => [permissions(:access_dashboard).id] }}, session: set_session_user
assert_redirected_to filters_path
end

test "should destroy filter" do
assert_difference('Filter.count', -1) do
delete :destroy, params: {:id => filters(:destroy_hosts_1)}, session: set_session_user
end
assert_redirected_to filters_path
end

test 'should return server pagination controls by default' do
role = roles(:manager)
get :index, params: { :role_id => role.id }, session: set_session_user
assert_response :success
refute_empty assigns(:filters)

pagination_line = css_select('#pagination')
assert_match "per page", pagination_line.children[1].children[3].content
end

test 'should return data-tables pagination when asked for it' do
role = roles(:manager)
get :index, params: { :role_id => role.id, :paginate => 'client' }, session: set_session_user
assert_response :success
refute_empty assigns(:filters)

assert_select "table[data-table='inline']"
end

test 'should disable overriding and start inheriting taxonomies from roles' do
permission1 = FactoryBot.create(:permission, :domain, :name => 'permission1')
role = FactoryBot.build(:role, :permissions => [])
role.add_permissions! [permission1.name]
org1 = FactoryBot.create(:organization)
org2 = FactoryBot.create(:organization)
role.organizations = [ org1 ]
role.filters.reload
filter_with_org = role.filters.detect(&:allows_organization_filtering?)
filter_with_org.update :organizations => [ org1, org2 ], :override => true

patch :disable_overriding, params: { :role_id => role.id, :id => filter_with_org.id }, session: set_session_user

assert_response :redirect
filter_with_org.reload
assert_equal [ org1 ], filter_with_org.organizations
refute filter_with_org.override
end
end
(19-19/53)