# frozen_string_literal: true require 'test_helper' class ReviewerVotePolicyTest < PolicyAssertions::Test test 'should require current_user' do assert_raise Pundit::NotAuthorizedError do ReviewerVotePolicy.new(nil, ReviewerVote.first).view? end end test 'should allow admin to scope' do scope = ReviewerVotePolicy::Scope.new(users(:admin), ReviewerVote).resolve assert_equal ReviewerVote.count, scope.count end test 'should allow manager to scope' do scope = ReviewerVotePolicy::Scope.new(users(:manager), ReviewerVote).resolve assert_equal ReviewerVote.count, scope.count end test 'should allow reviewer to scope' do scope = ReviewerVotePolicy::Scope.new(users(:reviewer), ReviewerVote).resolve assert_equal users(:reviewer).votes.count, scope.count end test 'should NOT allow recruiter to scope' do scope = ReviewerVotePolicy::Scope.new(users(:recruiter), ReviewerVote).resolve assert_equal 0, scope.count end def test_up assert_permit users(:manager), reviewer_votes(:manager_richard) assert_permit users(:reviewer), reviewer_votes(:reviewer_richard) assert_permit users(:admin), reviewer_votes(:manager_henry) refute_permit users(:recruiter), reviewer_votes(:manager_henry) refute_permit users(:reviewer), reviewer_votes(:gustov) refute_permit users(:manager), reviewer_votes(:gustov) end def test_down assert_permit users(:manager), reviewer_votes(:manager_richard) assert_permit users(:reviewer), reviewer_votes(:reviewer_richard) assert_permit users(:admin), reviewer_votes(:manager_henry) refute_permit users(:recruiter), reviewer_votes(:manager_henry) refute_permit users(:reviewer), reviewer_votes(:gustov) refute_permit users(:manager), reviewer_votes(:gustov) end def approve assert_permit users(:manager), reviewer_votes(:manager_richard) assert_permit users(:admin), reviewer_votes(:manager_henry) refute_permit users(:recruiter), reviewer_votes(:manager_henry) refute_permit users(:reviewer), reviewer_votes(:reviewer_richard) end def decline assert_permit users(:manager), reviewer_votes(:manager_richard) assert_permit users(:admin), reviewer_votes(:manager_henry) refute_permit users(:recruiter), reviewer_votes(:manager_henry) refute_permit users(:reviewer), reviewer_votes(:reviewer_richard) end end