class Capsium::Package::Testing::TestCase
Base class for one test of the Capsium testing YAML DSL (05x-testing). Subclasses implement a test kind and register themselves under their DSL type name (open/closed registry).
Constants
- Result
-
The outcome of running one test.
Attributes
name
[R]
String
Public Class Methods
(untyped definition) → TestCase
Source
# File lib/capsium/package/testing/test_case.rb, line 39 def self.build(definition) unless definition.is_a?(Hash) raise DefinitionError, "test definition is not a mapping: #{definition.inspect}" end type = definition["type"] || raise(DefinitionError, "test #{definition['name'].inspect} has no type") klass = types[type] || raise(DefinitionError, "unknown test type: #{type}") klass.from_h(definition) rescue ArgumentError => e raise DefinitionError, "invalid #{type} test #{definition['name'].inspect}: #{e.message}" end
Builds a test case from a YAML definition hash (string keys).
(Hash[String, untyped] definition) → TestCase
Source
# File lib/capsium/package/testing/test_case.rb, line 52 def self.from_h(definition) attributes = definition.transform_keys(&:to_sym) attributes.delete(:type) new(**attributes) end
(name: String name) → void
Source
# File lib/capsium/package/testing/test_case.rb, line 21 def initialize(name:) @name = name end
(String type, singleton(TestCase) klass) → void
Source
# File lib/capsium/package/testing/test_case.rb, line 30 def self.register(type, klass) types[type] = klass end
() → Hash[String, singleton(TestCase)]
Source
# File lib/capsium/package/testing/test_case.rb, line 34 def self.types @types ||= {} end
Public Instance Methods
(Context context) → Result
Source
# File lib/capsium/package/testing/test_case.rb, line 26 def run(context) raise NotImplementedError end
Runs the test against the context and returns a Result.