Class: RSpec::SleepingKingStudios::Matchers::Core::HaveWriterMatcher

Inherits:
BaseMatcher
  • Object
show all
Includes:
Shared::MatchProperty
Defined in:
lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb

Overview

Matcher for testing whether an object has a specific property writer, e.g. responds to :property= and updates the state.

Since:

  • 1.0.0

Constant Summary

Constants included from Description

Description::DEFAULT_EXPECTED_ITEMS

Instance Attribute Summary

Attributes inherited from BaseMatcher

#actual

Instance Method Summary collapse

Methods inherited from BaseMatcher

#does_not_match?

Constructor Details

#initialize(expected) ⇒ HaveWriterMatcher

Returns a new instance of HaveWriterMatcher.

Parameters:

  • expected (String, Symbol)

    the property to check for on the actual object

Since:

  • 1.0.0



24
25
26
# File 'lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb', line 24

def initialize expected
  @expected = expected.to_s.gsub(/=$/,'').intern
end

Instance Method Details

#descriptionString

Generates a description of the matcher expectation.

Returns:

  • (String)

    The matcher description.

Since:

  • 1.0.0



18
19
20
# File 'lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb', line 18

def description
  "have writer :#{@expected}"
end

#failure_messageObject

See Also:

Since:

  • 1.0.0



44
45
46
47
# File 'lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb', line 44

def failure_message
  "expected #{@actual.inspect} to respond to :#{@expected}="\
  ", but did not respond to :#{@expected}="
end

#failure_message_when_negatedObject



50
51
52
53
# File 'lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb', line 50

def failure_message_when_negated
  "expected #{@actual.inspect} not to respond to :#{@expected}="\
  ", but responded to :#{@expected}="
end

#matches?(actual) ⇒ Boolean

Checks if the object responds to :expected=. Additionally, if a value expectation is set, assigns the value via :expected= and compares the subsequent value to the specified value using :expected or the block provided to #with.

Parameters:

  • actual (Object)

    the object to check

Returns:

  • (Boolean)

    true if the object responds to :expected= and matches the value expectation (if any); otherwise false

Since:

  • 1.0.0



37
38
39
40
41
# File 'lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb', line 37

def matches? actual
  super

  responds_to_writer?
end