Module: Moat::RSpec::PolicyMatchers

Extended by:
RSpec::Matchers::DSL
Included in:
PolicyExampleGroup
Defined in:
lib/moat/rspec.rb

Instance Method Summary collapse

Instance Method Details

#current_roleObject



133
134
135
# File 'lib/moat/rspec.rb', line 133

def current_role
  public_send(role)
end

#generate_failure_message(incorrectly_permitted: [], incorrectly_denied: []) ⇒ Object



118
119
120
121
122
123
124
125
126
127
# File 'lib/moat/rspec.rb', line 118

def generate_failure_message(incorrectly_permitted: [], incorrectly_denied: [])
  failure_descriptions = []
  unless incorrectly_permitted.empty?
    failure_descriptions << "Incorrectly permitted to #{role}: #{incorrectly_permitted.to_sentence}"
  end
  unless incorrectly_denied.empty?
    failure_descriptions << "Incorrectly denied to #{role}: #{incorrectly_denied.to_sentence}"
  end
  failure_descriptions.join("\n")
end

#permitted_authorizations(policy_class) ⇒ Object



137
138
139
140
141
142
# File 'lib/moat/rspec.rb', line 137

def permitted_authorizations(policy_class)
  policy_instance = policy_class::Authorization.new(current_role, policy_example_resource)
  policy_authorizations.select do |authorization|
    policy_instance.public_send(authorization)
  end
end

#permitted_through_filters(policy_class) ⇒ Object



144
145
146
147
148
149
# File 'lib/moat/rspec.rb', line 144

def permitted_through_filters(policy_class)
  policy_instance = policy_class::Filter.new(current_role, policy_example_scope)
  policy_filters.select do |filter|
    policy_instance.public_send(filter).include?(policy_example_resource)
  end
end

#roleObject



129
130
131
# File 'lib/moat/rspec.rb', line 129

def role
  ::RSpec.current_example..fetch(:role)
end