Class: ConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo

Inherits:
Object
  • Object
show all
Defined in:
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/exceptions.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/inputs.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/outputs.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/delegation.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/base.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matcher_collection.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/arguments.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/commands/generate_printable_method.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/without_arguments.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/with_any_arguments.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/return_custom_value.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/return_delegation_value.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/with_concrete_arguments.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/arguments/commands/generate_printable_arguments.rb,
lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/arguments/commands/apply_stub_to_track_delegations.rb

Defined Under Namespace

Modules: Commands, Entities, Exceptions

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, method, block_expectation = proc { Support::UNDEFINED }) ⇒ void

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • object (Object)
  • method (String, Symbol)
  • block_expectation (Proc) (defaults to: proc { Support::UNDEFINED })


71
72
73
74
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 71

def initialize(object, method, block_expectation = proc { Support::UNDEFINED })
  @inputs = Entities::Inputs.new(object: object, method: method, block_expectation: block_expectation)
  @outputs = Entities::Outputs.new
end

Instance Attribute Details

#inputsObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



47
48
49
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 47

def inputs
  @inputs
end

#outputsObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



55
56
57
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 55

def outputs
  @outputs
end

Instance Method Details

#==(other) ⇒ Boolean?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • other (Object)

    Can be any type.

Returns:

  • (Boolean, nil)


251
252
253
254
255
256
257
258
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 251

def ==(other)
  return unless other.instance_of?(self.class)

  return false if inputs != other.inputs
  return false if outputs != other.outputs

  true
end

#and_returnConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo



200
201
202
203
204
205
206
207
208
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 200

def and_return(...)
  ::ConvenientService.raise Exceptions::ReturnValueChainingIsAlreadySet.new if sub_matchers.has_return_value?

  inputs.update_expected_return_value_block(...)

  sub_matchers.return_value = Entities::SubMatchers::ReturnCustomValue.new(matcher: self)

  self
end

#and_return_its_valueConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo



188
189
190
191
192
193
194
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 188

def and_return_its_value
  ::ConvenientService.raise Exceptions::ReturnValueChainingIsAlreadySet.new if sub_matchers.has_return_value?

  sub_matchers.return_value = Entities::SubMatchers::ReturnDelegationValue.new(matcher: self)

  self
end

#descriptionString

Returns:

  • (String)


116
117
118
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 116

def description
  "delegate to `#{inputs.printable_method}`"
end

#does_not_match?(block_expectation) ⇒ Boolean

Parameters:

  • block_expectation (Proc)

Returns:

  • (Boolean)


94
95
96
97
98
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 94

def does_not_match?(block_expectation)
  inputs.block_expectation = block_expectation

  !sub_matchers.matches?(inputs.block_expectation)
end

#failure_messageString

Returns:

  • (String)


125
126
127
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 125

def failure_message
  sub_matchers.failure_message
end

#failure_message_when_negatedString

Returns:

  • (String)


134
135
136
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 134

def failure_message_when_negated
  sub_matchers.failure_message_when_negated
end

#matches?(block_expectation) ⇒ Boolean

Parameters:

  • block_expectation (Proc)

Returns:

  • (Boolean)


82
83
84
85
86
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 82

def matches?(block_expectation)
  inputs.block_expectation = block_expectation

  sub_matchers.matches?(inputs.block_expectation)
end

#sub_matchersConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo::Entities::SubMatchers

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



241
242
243
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 241

def sub_matchers
  @sub_matchers ||= Entities::SubMatcherCollection.new(matcher: self)
end

#supports_block_expectations?Boolean

Returns:

  • (Boolean)


107
108
109
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 107

def supports_block_expectations?
  true
end

#with_any_argumentsConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo



160
161
162
163
164
165
166
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 160

def with_any_arguments
  ::ConvenientService.raise Exceptions::ArgumentsChainingIsAlreadySet.new if sub_matchers.has_arguments?

  sub_matchers.arguments = Entities::SubMatchers::WithAnyArguments.new(matcher: self)

  self
end

#with_argumentsConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo



144
145
146
147
148
149
150
151
152
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 144

def with_arguments(...)
  ::ConvenientService.raise Exceptions::ArgumentsChainingIsAlreadySet.new if sub_matchers.has_arguments?

  inputs.expected_arguments = Support::Arguments.new(...)

  sub_matchers.arguments = Entities::SubMatchers::WithConcreteArguments.new(matcher: self)

  self
end

#with_calling_originalConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo



215
216
217
218
219
220
221
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 215

def with_calling_original
  ::ConvenientService.raise Exceptions::CallOriginalChainingIsAlreadySet.new if inputs.has_call_original?

  inputs.should_call_original = true

  self
end

#without_argumentsConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo



174
175
176
177
178
179
180
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 174

def without_arguments
  ::ConvenientService.raise Exceptions::ArgumentsChainingIsAlreadySet.new if sub_matchers.has_arguments?

  sub_matchers.arguments = Entities::SubMatchers::WithoutArguments.new(matcher: self)

  self
end

#without_calling_originalConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo



228
229
230
231
232
233
234
# File 'lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb', line 228

def without_calling_original
  ::ConvenientService.raise Exceptions::CallOriginalChainingIsAlreadySet.new if inputs.has_call_original?

  inputs.should_call_original = false

  self
end