Module: Julewire::Core::Testing::Chaos

Defined in:
lib/julewire/core/testing/chaos.rb,
lib/julewire/core/testing/chaos/catalog.rb,
lib/julewire/core/testing/chaos/emitter.rb,
lib/julewire/core/testing/chaos/destination.rb,
lib/julewire/core/testing/chaos/core_runtime.rb,
lib/julewire/core/testing/chaos/raising_output.rb

Defined Under Namespace

Modules: CoreRuntime, Destination, Emitter Classes: Catalog

Constant Summary collapse

DEFAULT_ERRORS =
[
  RuntimeError.new("julewire chaos runtime"),
  ArgumentError.new("julewire chaos argument"),
  TypeError.new("julewire chaos type")
].freeze

Class Method Summary collapse

Class Method Details

.assert_contained(test_context, errors: DEFAULT_ERRORS, description: nil) ⇒ Object

Raises:

  • (ArgumentError)


14
15
16
17
18
19
20
21
22
23
# File 'lib/julewire/core/testing/chaos.rb', line 14

def assert_contained(test_context, errors: DEFAULT_ERRORS, description: nil)
  raise ArgumentError, "block required" unless block_given?

  errors.each do |error|
    yield error
  rescue StandardError => e
    test_context.flunk(containment_message(description, error, e))
  end
  nil
end

.assert_core_runtime_containment(test_context, runtime: Julewire, reset: nil, errors: DEFAULT_ERRORS) ⇒ Object

Raises:

  • (ArgumentError)


25
26
27
28
29
30
# File 'lib/julewire/core/testing/chaos.rb', line 25

def assert_core_runtime_containment(test_context, runtime: Julewire, reset: nil, errors: DEFAULT_ERRORS)
  reset ||= -> { runtime.reset! }
  raise ArgumentError, "reset must respond to call" unless reset.respond_to?(:call)

  CoreRuntime.assert_contract(test_context, runtime: runtime, reset: reset, errors: errors)
end

.assert_destination_chaos_contract(test_context, record:, formatter:, encoder:, output:, callbacks: nil, errors: DEFAULT_ERRORS) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/julewire/core/testing/chaos.rb', line 40

def assert_destination_chaos_contract(test_context, record:, formatter:, encoder:, output:,
                                      callbacks: nil, errors: DEFAULT_ERRORS)
  Destination.assert_contract(
    test_context,
    record: record,
    formatter: formatter,
    encoder: encoder,
    output: output,
    callbacks: callbacks,
    errors: errors
  )
end

.assert_discovered_chaos_contracts(test_context, catalog:, errors: DEFAULT_ERRORS) ⇒ Object



36
37
38
# File 'lib/julewire/core/testing/chaos.rb', line 36

def assert_discovered_chaos_contracts(test_context, catalog:, errors: DEFAULT_ERRORS)
  Catalog.assert_contract(test_context, catalog: catalog, errors: errors)
end

.assert_emitter_chaos_contract(test_context, component:, build:, exercise:, errors: DEFAULT_ERRORS) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/julewire/core/testing/chaos.rb', line 53

def assert_emitter_chaos_contract(test_context, component:, build:, exercise:, errors: DEFAULT_ERRORS)
  Emitter.assert_contract(
    test_context,
    component: component,
    build: build,
    exercise: exercise,
    errors: errors
  )
end

.catalogObject



32
33
34
# File 'lib/julewire/core/testing/chaos.rb', line 32

def catalog(&)
  Catalog.build(&)
end

.raiser(error = RuntimeError.new("julewire chaos")) ⇒ Object



63
64
65
# File 'lib/julewire/core/testing/chaos.rb', line 63

def raiser(error = RuntimeError.new("julewire chaos"))
  ->(*) { raise error }
end