Class: AISpec::Core::Assertion
- Inherits:
-
Object
- Object
- AISpec::Core::Assertion
- Defined in:
- lib/aispec/core/assertion.rb
Class Attribute Summary collapse
-
.registry ⇒ Object
readonly
Returns the value of attribute registry.
Class Method Summary collapse
- .evaluate(type, response, context = {}, options = {}) ⇒ Object
- .get(name) ⇒ Object
- .register(name, &block) ⇒ Object
Class Attribute Details
.registry ⇒ Object (readonly)
Returns the value of attribute registry.
28 29 30 |
# File 'lib/aispec/core/assertion.rb', line 28 def registry @registry end |
Class Method Details
.evaluate(type, response, context = {}, options = {}) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/aispec/core/assertion.rb', line 38 def evaluate(type, response, context = {}, = {}) handler = get(type) unless handler return AssertionResult.new( name: type, passed: false, message: "Unknown assertion type '#{type}'" ) end res = handler.call(response, context, ) if res.is_a?(AssertionResult) res elsif res.is_a?(Array) # [passed, message, metadata] AssertionResult.new(name: type, passed: res[0], message: res[1], metadata: res[2] || {}) elsif res == true || res == false AssertionResult.new(name: type, passed: res) else AssertionResult.new(name: type, passed: !!res) end rescue StandardError => e AssertionResult.new( name: type, passed: false, message: "Assertion Error (#{e.class}): #{e.}", metadata: { error: e } ) end |
.get(name) ⇒ Object
34 35 36 |
# File 'lib/aispec/core/assertion.rb', line 34 def get(name) @registry[name.to_sym] end |
.register(name, &block) ⇒ Object
30 31 32 |
# File 'lib/aispec/core/assertion.rb', line 30 def register(name, &block) @registry[name.to_sym] = block end |