Class: ConvenientService::RSpec::Matchers::Classes::DelegateTo

Inherits:
Object
  • Object
show all
Defined in:
lib/convenient_service/rspec/matchers/classes/delegate_to.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/exceptions.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/inputs.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/outputs.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/delegation.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/inputs/jruby.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/base.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matcher_collection.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/arguments.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/commands/generate_printable_method.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/without_arguments.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/with_any_arguments.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/return_custom_value.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/return_delegation_value.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/with_concrete_arguments.rb,
lib/convenient_service/rspec/matchers/classes/delegate_to/entities/sub_matchers/arguments/commands/generate_printable_arguments.rb,
lib/convenient_service/rspec/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 })


69
70
71
72
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 69

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.



45
46
47
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 45

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.



53
54
55
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 53

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)


249
250
251
252
253
254
255
256
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 249

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::Matchers::Classes::DelegateTo



198
199
200
201
202
203
204
205
206
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 198

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::Matchers::Classes::DelegateTo



186
187
188
189
190
191
192
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 186

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)


114
115
116
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 114

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

#does_not_match?(block_expectation) ⇒ Boolean

Parameters:

  • block_expectation (Proc)

Returns:

  • (Boolean)


92
93
94
95
96
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 92

def does_not_match?(block_expectation)
  inputs.block_expectation = block_expectation

  !sub_matchers.matches?(inputs.block_expectation)
end

#failure_messageString

Returns:

  • (String)


123
124
125
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 123

def failure_message
  sub_matchers.failure_message
end

#failure_message_when_negatedString

Returns:

  • (String)


132
133
134
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 132

def failure_message_when_negated
  sub_matchers.failure_message_when_negated
end

#matches?(block_expectation) ⇒ Boolean

Parameters:

  • block_expectation (Proc)

Returns:

  • (Boolean)


80
81
82
83
84
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 80

def matches?(block_expectation)
  inputs.block_expectation = block_expectation

  sub_matchers.matches?(inputs.block_expectation)
end

#sub_matchersConvenientService::RSpec::Matchers::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.



239
240
241
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 239

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

#supports_block_expectations?Boolean

Returns:

  • (Boolean)


105
106
107
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 105

def supports_block_expectations?
  true
end

#with_any_argumentsConvenientService::RSpec::Matchers::Classes::DelegateTo



158
159
160
161
162
163
164
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 158

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::Matchers::Classes::DelegateTo



142
143
144
145
146
147
148
149
150
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 142

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::Matchers::Classes::DelegateTo



213
214
215
216
217
218
219
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 213

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

  inputs.should_call_original = true

  self
end

#without_argumentsConvenientService::RSpec::Matchers::Classes::DelegateTo



172
173
174
175
176
177
178
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 172

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::Matchers::Classes::DelegateTo



226
227
228
229
230
231
232
# File 'lib/convenient_service/rspec/matchers/classes/delegate_to.rb', line 226

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

  inputs.should_call_original = false

  self
end