Module: Trailblazer::Test::Suite::Assert
- Defined in:
- lib/trailblazer/test/suite/assert.rb
Overview
Provide Assert.assert_pass and Assert.assert_fail functions which decouple the assertion logic from the actual test framework. They are called from the #assert_pass helpers.
Class Method Summary collapse
- .assert_fail(params_fragment, expected_errors, assertion:, **kws) ⇒ Object
- .assert_pass(params_fragment, deep_merge: true, assertion:, expected_attributes_to_merge:, **kws) ⇒ Object
-
.ctx_for_params_fragment(params_fragment, key_in_params:, default_ctx:) ⇒ Object
@semi-public used in rspec-trailblazer.
-
.expected_attributes_for(expected_attributes_to_merge, expected_attributes:, deep_merge: false) ⇒ Object
FIXME: when true the result hash contains subclassed AR classes instead of the original ones.
-
.normalize_for(params_fragment, **kws) ⇒ Object
@semi-public (for rspec-trailblazer).
-
.normalize_kws(user_block:, test:, operation: test.operation, contract_name: "default", invoke: Assertion.method(:invoke_operation), **options) ⇒ Object
Gather all test case configuration.
-
.normalize_kws_for_ctx(test:, key_in_params: test.key_in_params, default_ctx: test.default_ctx) ⇒ Object
@semi-public used in rspec-trailblazer.
- .normalize_kws_for_model_assertion(test:, expected_attributes: test.expected_attributes, model_at: :model) ⇒ Object
Class Method Details
.assert_fail(params_fragment, expected_errors, assertion:, **kws) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/trailblazer/test/suite/assert.rb', line 32 def assert_fail(params_fragment, expected_errors, assertion:, **kws) ctx, kws = normalize_for(params_fragment, **kws) activity = kws[:operation] # FIXME. assertion.(activity, ctx, expected_errors, **kws) end |
.assert_pass(params_fragment, deep_merge: true, assertion:, expected_attributes_to_merge:, **kws) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/trailblazer/test/suite/assert.rb', line 22 def assert_pass(params_fragment, deep_merge: true, assertion:, expected_attributes_to_merge:, **kws) # TODO: remove kws. ctx, kws = normalize_for(params_fragment, **kws) # compute input, . expected_attributes = expected_attributes_for(expected_attributes_to_merge, **kws) # compute "output", expected model attributes. activity = kws[:operation] # FIXME. assertion.(activity, ctx, expected_model_attributes: expected_attributes, **kws) end |
.ctx_for_params_fragment(params_fragment, key_in_params:, default_ctx:) ⇒ Object
@semi-public used in rspec-trailblazer.
40 41 42 43 44 45 46 |
# File 'lib/trailblazer/test/suite/assert.rb', line 40 def ctx_for_params_fragment(params_fragment, key_in_params:, default_ctx:, **) return params_fragment if params_fragment.kind_of?(Trailblazer::Test::Context) # If {:key_in_params} is given, key the {params_fragment} with it, e.g. {params: {transaction: {.. params_fragment ..}}} merge_with_ctx = key_in_params ? {params: {key_in_params => params_fragment}} : {params: params_fragment} ctx = Suite.merge_for(default_ctx, merge_with_ctx, true) end |
.expected_attributes_for(expected_attributes_to_merge, expected_attributes:, deep_merge: false) ⇒ Object
FIXME: when true the result hash contains subclassed AR classes instead of the original ones.
when we got this sorted we can allows deep merging here, too.
@semi-public (for rspec-trailblazer).
84 85 86 |
# File 'lib/trailblazer/test/suite/assert.rb', line 84 def expected_attributes_for(expected_attributes_to_merge, expected_attributes:, deep_merge: false, **) _expected_attributes = Suite.merge_for(expected_attributes, expected_attributes_to_merge, deep_merge) end |
.normalize_for(params_fragment, **kws) ⇒ Object
@semi-public (for rspec-trailblazer).
14 15 16 17 18 19 |
# File 'lib/trailblazer/test/suite/assert.rb', line 14 def normalize_for(params_fragment, **kws) kws = normalize_kws(**kws) ctx = ctx_for_params_fragment(params_fragment, **kws) return ctx, kws end |
.normalize_kws(user_block:, test:, operation: test.operation, contract_name: "default", invoke: Assertion.method(:invoke_operation), **options) ⇒ Object
Gather all test case configuration. This involves reading all test ‘let` directives.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/trailblazer/test/suite/assert.rb', line 50 def normalize_kws(user_block:, test:, operation: test.operation, contract_name: "default", invoke: Assertion.method(:invoke_operation), **) kws = { operation: operation, test: test, contract_name: contract_name, user_block: user_block, invoke: invoke, **normalize_kws_for_ctx(test: test, **), **normalize_kws_for_model_assertion(test: test, **), } return kws end |
.normalize_kws_for_ctx(test:, key_in_params: test.key_in_params, default_ctx: test.default_ctx) ⇒ Object
@semi-public used in rspec-trailblazer. Used when building the incoming ctx, e.g. in #run.
67 68 69 70 71 72 |
# File 'lib/trailblazer/test/suite/assert.rb', line 67 def normalize_kws_for_ctx(test:, key_in_params: test.key_in_params, default_ctx: test.default_ctx, **) { default_ctx: default_ctx, key_in_params: key_in_params, } end |
.normalize_kws_for_model_assertion(test:, expected_attributes: test.expected_attributes, model_at: :model) ⇒ Object
74 75 76 77 78 79 |
# File 'lib/trailblazer/test/suite/assert.rb', line 74 def normalize_kws_for_model_assertion(test:, expected_attributes: test.expected_attributes, model_at: :model, **) { expected_attributes: expected_attributes, model_at: model_at, } end |