Class: ConvenientService::RSpec::Matchers::Classes::Results::Base

Inherits:
Object
  • Object
show all
Includes:
Support::AbstractMethod
Defined in:
lib/convenient_service/rspec/matchers/classes/results/base.rb,
lib/convenient_service/rspec/matchers/classes/results/base/constants.rb,
lib/convenient_service/rspec/matchers/classes/results/base/exceptions.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/chain.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/null.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/error.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/failure.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/success.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_code.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_data.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_step.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_type.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_got_parts.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_status.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_message.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_service.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_got_step_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_expected_parts.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_got_service_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_expected_code_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_expected_data_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_expected_step_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/validator/commands/validate_result_original_service.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_expected_status_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_expected_message_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/base/commands/generate_expected_service_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/error/commands/generate_got_jsend_attributes_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/failure/commands/generate_got_jsend_attributes_part.rb,
lib/convenient_service/rspec/matchers/classes/results/base/entities/printers/success/commands/generate_got_jsend_attributes_part.rb

Defined Under Namespace

Modules: Constants, Entities, Exceptions

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Support::AbstractMethod

abstract_method

Constructor Details

#initialize(statuses: self.statuses, result: nil) ⇒ 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.



40
41
42
43
44
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 40

def initialize(statuses: self.statuses, result: nil)
  chain.statuses = statuses

  @result = result
end

Instance Attribute Details

#resultObject (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.



26
27
28
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 26

def result
  @result
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)


286
287
288
289
290
291
292
293
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 286

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

  return false if chain != other.chain
  return false if result != other.result

  true
end

#and_code(code) ⇒ String, ...



186
187
188
189
190
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 186

def and_code(code)
  chain.code = code

  self
end

#and_data(data) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base



127
128
129
130
131
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 127

def and_data(data)
  chain.data = data

  self
end

#and_message(message) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base

Parameters:

  • message (String)

Returns:



162
163
164
165
166
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 162

def and_message(message)
  chain.message = message

  self
end

#chainConvenientService::RSpec::Matchers::Classes::Results::Base::Entities::Chain

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.



258
259
260
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 258

def chain
  @chain ||= Entities::Chain.new
end

#comparing_by(comparison_method) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base

Parameters:

  • comparison_method (Symbo, String)

Returns:



247
248
249
250
251
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 247

def comparing_by(comparison_method)
  chain.comparison_method = comparison_method

  self
end

#descriptionString

Returns:

  • (String)


84
85
86
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 84

def description
  printer.description
end

#failure_messageString

Returns:

  • (String)


93
94
95
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 93

def failure_message
  printer.failure_message
end

#failure_message_when_negatedString

Returns:

  • (String)


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

def failure_message_when_negated
  printer.failure_message_when_negated
end

#matches?(result) ⇒ Boolean



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 52

def matches?(result)
  @result = result

  ##
  # IMPORTANT: Makes `result.class.include?` idempotent.
  #
  # TODO: Explainer when `result.class.commit_config!` is required. It was introduced in panic when the first thread-safety issues occurred. Looks like it is an outdated operation now. It is probably useful only when a config has almost zero plugins.
  #
  # TODO: Resolve a bug in `delegate_to`. It makes `respond_to?` always return `true`, even for classes that do NOT have the `commit_config!` method. See specs for details.
  #
  #   let(:result) { "foo" }
  #
  #   specify do
  #     expect { matcher.matches?(result) }
  #       .not_to delegate_to(result.class, :commit_config!)
  #       .with_any_arguments
  #       .without_calling_original
  #   end
  #
  #   `result.class.method(:commit_config!)`
  #   # => <Method: String.commit_config!(*args, &block) /usr/local/bundle/gems/rspec-mocks-3.11.2/lib/rspec/mocks/method_double.rb:63>
  #
  result.class.commit_config!(trigger: Constants::Triggers::BE_RESULT) if result.class.respond_to?(:commit_config!)

  validator.valid_result?
end

#of_original_service(service) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base



210
211
212
213
214
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 210

def of_original_service(service)
  chain.original_service = service

  self
end

#of_service(service) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base



198
199
200
201
202
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 198

def of_service(service)
  chain.service = service

  self
end

#of_step(step, index: nil) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base

Parameters:

  • step (Class, Symbol)
  • index (Integer) (defaults to: nil)

Returns:



223
224
225
226
227
228
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 223

def of_step(step, index: nil)
  chain.step = step
  chain.step_index = index if index

  self
end

#printerConvenientService::RSpec::Matchers::Classes::Results::Base::Entities::Printers::Base

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.



267
268
269
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 267

def printer
  @printer ||= Entities::Printers.create(matcher: self)
end

#statusesString, Symbol

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.

Returns:

  • (String, Symbol)


33
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 33

abstract_method :statuses

#validatorConvenientService::RSpec::Matchers::Classes::Results::Base::Entities::Validator

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.



276
277
278
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 276

def validator
  @validator ||= Entities::Validator.new(matcher: self)
end

#with_code(code) ⇒ String, ...



174
175
176
177
178
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 174

def with_code(code)
  chain.code = code

  self
end

#with_data(data) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base



115
116
117
118
119
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 115

def with_data(data)
  chain.data = data

  self
end

#with_message(message) ⇒ ConvenientService::RSpec::Matchers::Classes::Results::Base

Parameters:

  • message (String)

Returns:



150
151
152
153
154
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 150

def with_message(message)
  chain.message = message

  self
end

#without_dataConvenientService::RSpec::Matchers::Classes::Results::Base



138
139
140
141
142
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 138

def without_data
  chain.data = {}

  self
end

#without_stepConvenientService::RSpec::Matchers::Classes::Results::Base



235
236
237
238
239
# File 'lib/convenient_service/rspec/matchers/classes/results/base.rb', line 235

def without_step
  chain.step = nil

  self
end