Class: ConvenientService::RSpec::PrimitiveMatchers::Classes::HaveAttrWriter

Inherits:
Object
  • Object
show all
Defined in:
lib/convenient_service/rspec/primitive_matchers/classes/have_attr_writer.rb

Instance Method Summary collapse

Constructor Details

#initialize(attr_name) ⇒ void

Parameters:

  • attr_name (String, Symbol)


17
18
19
# File 'lib/convenient_service/rspec/primitive_matchers/classes/have_attr_writer.rb', line 17

def initialize(attr_name)
  @attr_name = attr_name
end

Instance Method Details

#descriptionString

Returns:

  • (String)


44
45
46
# File 'lib/convenient_service/rspec/primitive_matchers/classes/have_attr_writer.rb', line 44

def description
  "have attr writer `#{attr_name}`"
end

#failure_messageString

Returns:

  • (String)


51
52
53
# File 'lib/convenient_service/rspec/primitive_matchers/classes/have_attr_writer.rb', line 51

def failure_message
  "expected `#{object.class}` to have attr writer `#{attr_name}`"
end

#failure_message_when_negatedString

Returns:

  • (String)


58
59
60
# File 'lib/convenient_service/rspec/primitive_matchers/classes/have_attr_writer.rb', line 58

def failure_message_when_negated
  "expected `#{object.class}` NOT to have attr writer `#{attr_name}`"
end

#matches?(object) ⇒ Boolean

Parameters:

  • object (Object)

    Can be any object.

Returns:

  • (Boolean)


28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/convenient_service/rspec/primitive_matchers/classes/have_attr_writer.rb', line 28

def matches?(object)
  @object = object

  Utils.with_one_time_object do |one_time_object|
    copy = object.dup

    return false if Utils.safe_send(copy, attr_writer_name, one_time_object) != one_time_object
    return false if copy.instance_variable_get(instance_variable_name) != one_time_object

    true
  end
end