Class: Matchi::Change::From::To

Inherits:
Object
  • Object
show all
Defined in:
lib/matchi/change/from/to.rb

Overview

*Change from to* matcher.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expected_init, expected_new_value, &state) ⇒ To

Initialize the matcher with two objects and a block.

Examples:

require "matchi/change/from/to"

object = "foo"

Matchi::Change::From::To.new("foo", "FOO") { object.to_s }

Parameters:

  • expected_init (#object_id)

    An expected initial value.

  • expected_new_value (#object_id)

    An expected new value.

  • state (Proc)

    A block of code to execute to get the state of the object.



24
25
26
27
28
# File 'lib/matchi/change/from/to.rb', line 24

def initialize(expected_init, expected_new_value, &state)
  @expected_init  = expected_init
  @expected       = expected_new_value
  @state          = state
end

Instance Attribute Details

#expected#object_id (readonly)

Returns An expected new value.

Returns:

  • (#object_id)

    An expected new value.



9
10
11
# File 'lib/matchi/change/from/to.rb', line 9

def expected
  @expected
end

Instance Method Details

#inspectObject

A string containing a human-readable representation of the matcher.



58
59
60
# File 'lib/matchi/change/from/to.rb', line 58

def inspect
  "#{self.class}(#{@expected_init.inspect}, #{expected.inspect})"
end

#matches?Boolean

Boolean comparison on the expected change by comparing the value before and after the code execution.

Examples:

require "matchi/change/from/to"

object = "foo"

matcher = Matchi::Change::From::To.new("foo", "FOO") { object.to_s }

matcher.expected                    # => "FOO"
matcher.matches? { object.upcase! } # => true

Yield Returns:

  • (#object_id)

    The block of code to execute.

Returns:

  • (Boolean)

    Comparison between the value before and after the code execution.



47
48
49
50
51
52
53
54
55
# File 'lib/matchi/change/from/to.rb', line 47

def matches?
  value_before = @state.call
  return false unless @expected_init == value_before

  yield
  value_after = @state.call

  expected == value_after
end

#to_sObject

Returns a string representing the matcher.



63
64
65
# File 'lib/matchi/change/from/to.rb', line 63

def to_s
  "change from #{@expected_init.inspect} to #{expected.inspect}"
end