Module: Servactory::TestKit::Rspec::Matchers::Concerns::ErrorMessageBuilder::InstanceMethods

Defined in:
lib/servactory/test_kit/rspec/matchers/concerns/error_message_builder.rb

Overview

Instance methods added by this concern.

Instance Method Summary collapse

Instance Method Details

#build_diff_message(expected:, actual:, prefix: "") ⇒ String

Builds a diff-style message showing expected vs actual values.

Parameters:

  • expected (Object)

    The expected value

  • actual (Object)

    The actual value found

  • prefix (String) (defaults to: "")

    Optional prefix text before the diff

Returns:

  • (String)

    Formatted diff message



56
57
58
59
60
61
62
# File 'lib/servactory/test_kit/rspec/matchers/concerns/error_message_builder.rb', line 56

def build_diff_message(expected:, actual:, prefix: "")
  <<~MESSAGE
    #{prefix}
      expected: #{format_value(expected)}
           got: #{format_value(actual)}
  MESSAGE
end

#build_list_message(items, prefix: "") ⇒ String

Builds a comma-separated list message.

Parameters:

  • items (Array)

    Items to list

  • prefix (String) (defaults to: "")

    Optional prefix before the list

Returns:

  • (String)

    Formatted list or “(empty)” if no items



95
96
97
98
99
# File 'lib/servactory/test_kit/rspec/matchers/concerns/error_message_builder.rb', line 95

def build_list_message(items, prefix: "")
  return "#{prefix}(empty)" if items.empty?

  "#{prefix}#{items.join(', ')}"
end

#format_value(value) ⇒ String

Formats a value for human-readable display.

Handles special cases:

  • Arrays: formats each element recursively

  • Hashes: uses inspect

  • Classes: shows class name

  • nil: shows “nil” string

  • Others: uses inspect

Parameters:

  • value (Object)

    The value to format

Returns:

  • (String)

    Formatted string representation



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/servactory/test_kit/rspec/matchers/concerns/error_message_builder.rb', line 75

def format_value(value) # rubocop:disable Metrics/MethodLength
  case value
  when Array
    "[#{value.map { |v| format_value(v) }.join(', ')}]"
  when Hash
    value.inspect
  when Class
    value.name
  when nil
    "nil"
  else # rubocop:disable Lint/DuplicateBranch
    value.inspect
  end
end