49 lines
1.4 KiB
Ruby
49 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
require 'test_helper'
|
|
|
|
class CandidatePolicyTest < PolicyAssertions::Test
|
|
test 'should require current_user' do
|
|
assert_raise Pundit::NotAuthorizedError do
|
|
CandidatePolicy.new(nil, Candidate.first).view?
|
|
end
|
|
end
|
|
|
|
test 'should allow admin to scope' do
|
|
scope = CandidatePolicy::Scope.new(users(:admin), Candidate).resolve
|
|
assert_equal Candidate.count, scope.count
|
|
end
|
|
|
|
test 'should allow recruiter to scope' do
|
|
scope = CandidatePolicy::Scope.new(users(:recruiter), Candidate).resolve
|
|
assert_equal Candidate.count, scope.count
|
|
end
|
|
|
|
test 'reviewer CAN NOT scope candidates' do
|
|
assert_raise Pundit::NotAuthorizedError do
|
|
CandidatePolicy::Scope.new(users(:reviewer), Candidate).resolve
|
|
end
|
|
end
|
|
|
|
test 'manager CAN NOT scope candidates' do
|
|
assert_raise Pundit::NotAuthorizedError do
|
|
CandidatePolicy::Scope.new(users(:manager), Candidate).resolve
|
|
end
|
|
end
|
|
|
|
def test_view_and_update
|
|
assert_permit users(:admin), candidates(:roy)
|
|
assert_permit users(:recruiter), candidates(:roy)
|
|
|
|
refute_permit users(:manager), candidates(:roy)
|
|
refute_permit users(:reviewer), candidates(:roy)
|
|
end
|
|
|
|
def test_create
|
|
assert_permit users(:admin), Candidate
|
|
assert_permit users(:recruiter), Candidate
|
|
|
|
refute_permit users(:manager), Candidate
|
|
refute_permit users(:reviewer), Candidate
|
|
end
|
|
end
|