Module: Minitest::KineticCafeErrorAssertions
- Defined in:
- lib/kinetic_cafe/error/minitest.rb
Overview
Add assertions to Minitest for testing KineticCafe::Error objects.
Instance Method Summary collapse
-
#assert_kc_error(expected, actual, params = {}, msg = nil) ⇒ Object
Assert that the
actual
exception received is theexpected
descendant of KineticCafe::Error and that it has been constructed with the sameparams
provided. -
#assert_kc_error_json(expected, actual, params = {}, msg = nil) ⇒ Object
Assert that the
actual
string received is theexpected
descendant of KineticCafe::Error and that it has been constructed with the sameparams
provided. -
#assert_response_kc_error(expected, params = {}, msg = nil) ⇒ Object
Assert that a reponse body (
@response.body
, useful from ActionController::TestCase) is JSON for the expected error. -
#assert_response_kc_error_html(expected, msg = nil) ⇒ Object
Assert that a reponse body (
@response.body
, useful from ActionController::TestCase) is HTML for the expected error.
Instance Method Details
#assert_kc_error(expected, actual, params = {}, msg = nil) ⇒ Object
Assert that the actual
exception received is the expected
descendant of KineticCafe::Error and that it has been constructed with the same params
provided.
If a cause
is not provided, any cause on the received error will be ignored.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/kinetic_cafe/error/minitest.rb', line 11 def assert_kc_error expected, actual, params = {}, msg = nil msg, params = params, {} if msg.nil? && params.kind_of?(String) assert_kind_of KineticCafe::ErrorModule, actual, msg || "Expected #{actual} to be #{expected}, but it was not." assert_kind_of expected, actual, msg || "Expected #{actual} to be #{expected}, but it was not." unless params.key?(:cause) actual = actual.dup actual.instance_variable_set(:@cause, nil) actual.instance_variable_set(:@initialized_cause, true) actual.instance_variable_get(:@i18n_params).tap do |hash| hash.delete(:cause) end end expected = expected.new(params) assert_equal expected, actual, msg || "Expected #{actual} to be #{expected}, but it was not." end |
#assert_kc_error_json(expected, actual, params = {}, msg = nil) ⇒ Object
Assert that the actual
string received is the expected
descendant of KineticCafe::Error and that it has been constructed with the same params
provided.
This differs from assert_kc_error
in that comparison of the parsed JSON output is compared, not KineticCafe::Error objects. The JSON for the provided KineticCafe::Error object is generated through KineticCafe::Error#error_json.
If a cause
is not provided, any cause on the received error will be ignored.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/kinetic_cafe/error/minitest.rb', line 45 def assert_kc_error_json expected, actual, params = {}, msg = nil msg, params = params, {} if msg.nil? && params.kind_of?(String) msg ||= "Expected #{actual} to be JSON for #{expected}, but it was not." actual = JSON.parse(actual) unless params.key?(:cause) actual['error'].tap do |error| error.delete('cause') if error['i18n_params'] error['i18n_params'].delete('cause') error.delete('i18n_params') if error['i18n_params'].empty? end end actual end expected = JSON.parse(expected.new(params).error_result.to_json) assert_equal expected, actual, msg end |
#assert_response_kc_error(expected, params = {}, msg = nil) ⇒ Object
Assert that a reponse body (@response.body
, useful from ActionController::TestCase) is JSON for the expected error. This is a convenience wrapper around #assert_kc_error_json or #assert_kc_error_html, depending on whether or not the response is HTML or not.
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/kinetic_cafe/error/minitest.rb', line 84 def assert_response_kc_error expected, params = {}, msg = nil msg, params = params, {} if msg.nil? && params.kind_of?(String) msg ||= "Expected response to be #{expected}, but was not." if @request.format.html? assert_response_kc_error_html expected, msg else assert_kc_error_json expected, @response.body, params, msg end end |
#assert_response_kc_error_html(expected, msg = nil) ⇒ Object
Assert that a reponse body (@response.body
, useful from ActionController::TestCase) is HTML for the expected error.
69 70 71 72 73 74 75 76 77 |
# File 'lib/kinetic_cafe/error/minitest.rb', line 69 def assert_response_kc_error_html expected, msg = nil msg ||= "Expected #{actual} to be HTML for #{expected}, but it was not." assert_template 'kinetic_cafe_error/page', msg assert_template 'kinetic_cafe_error/_table', msg assert_match(/#{expected.i18n_key}/, @response.body, msg) assert_response expected.new.status, msg end |