class Object

Public Instance Methods

test_policy_table(permission_matrix, klass = nil, policy_object_defined: false) click to toggle source
# File lib/spec_snap/policy_helper.rb, line 6
def test_policy_table permission_matrix, klass = nil, policy_object_defined: false
  Tableware.hashes(permission_matrix).each do |perms|
    action = "#{perms[:action]}?".to_sym
    roles = User::ROLES.map(&:to_sym)

    permissions action do
      roles.each do |role|
        allowed = perms[role] == 'yes'
        user = User.new(role: role)

        unless policy_object_defined
          let(:policy_object) { klass.nil? ? nil : klass.new }
        end

        it "#{allowed ? 'allows' : 'denies'} access to #{role} users" do
          if allowed
            expect(described_class).to permit(user, policy_object)
          else
            expect(described_class).to_not permit(user, policy_object)
          end
        end
      end
    end
  end
end