class Admission::Tests::Evaluation

Attributes

arbitration[R]
status[R]

Public Class Methods

new(status, scope) click to toggle source
# File lib/admission/tests/tests.rb, line 57
def initialize status, scope
  @status = status
  @scope = scope
end

Public Instance Methods

evaluate(privilege) click to toggle source
# File lib/admission/tests/tests.rb, line 71
def evaluate privilege
  arbitration.prepare_sitting privilege.context
  arbitration.rule_per_privilege(privilege).eql?(true)
end
evaluate_groups(to_assert, to_refute) click to toggle source
# File lib/admission/tests/tests.rb, line 76
def evaluate_groups to_assert, to_refute
  to_assert = to_assert.map{|p| ContextSpecificPrivilege.new p}
  to_refute = to_refute.map{|p| ContextSpecificPrivilege.new p}
  sorted = (to_assert + to_refute).sort_by{|p| p.privilege.context}
  admissible, denied = sorted.partition{|p| evaluate p.privilege}

  [
      (denied - to_refute),
      (admissible - to_assert)
  ]
end
for_request(name) click to toggle source
# File lib/admission/tests/tests.rb, line 66
def for_request name
  self.request = name
  self
end
messages_for_groups(should, should_not) click to toggle source
# File lib/admission/tests/tests.rb, line 88
def messages_for_groups should, should_not
  [
      should.map{|p| Admission::Tests.assertion_failed_message arbitration, p.privilege},
      should_not.map{|p| Admission::Tests.refutation_failed_message arbitration, p.privilege}
  ].flatten
end
request=(name) click to toggle source
# File lib/admission/tests/tests.rb, line 62
def request= name
  @arbitration = status.instantiate_arbitration name.to_sym, @scope
end