Class: TheMechanic2::BenchmarkRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/the_mechanic_2/benchmark_request.rb

Overview

Model for validating benchmark request parameters Ensures all required fields are present and valid

Constant Summary collapse

MIN_TIMEOUT =

Minimum and maximum allowed timeout values

1
MAX_TIMEOUT =
300

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ BenchmarkRequest

Returns a new instance of BenchmarkRequest.



13
14
15
16
17
18
19
# File 'lib/the_mechanic_2/benchmark_request.rb', line 13

def initialize(params = {})
  @shared_setup = params[:shared_setup]
  @code_a = params[:code_a]
  @code_b = params[:code_b]
  @timeout = params[:timeout] || TheMechanic2.configuration.timeout
  @errors = []
end

Instance Attribute Details

#code_aObject (readonly)

Returns the value of attribute code_a.



7
8
9
# File 'lib/the_mechanic_2/benchmark_request.rb', line 7

def code_a
  @code_a
end

#code_bObject (readonly)

Returns the value of attribute code_b.



7
8
9
# File 'lib/the_mechanic_2/benchmark_request.rb', line 7

def code_b
  @code_b
end

#errorsObject (readonly)

Returns the value of attribute errors.



7
8
9
# File 'lib/the_mechanic_2/benchmark_request.rb', line 7

def errors
  @errors
end

#shared_setupObject (readonly)

Returns the value of attribute shared_setup.



7
8
9
# File 'lib/the_mechanic_2/benchmark_request.rb', line 7

def shared_setup
  @shared_setup
end

#timeoutObject (readonly)

Returns the value of attribute timeout.



7
8
9
# File 'lib/the_mechanic_2/benchmark_request.rb', line 7

def timeout
  @timeout
end

Instance Method Details

#all_errorsArray<String>

Returns all errors as a flat array

Returns:

  • (Array<String>)

    all error messages



46
47
48
# File 'lib/the_mechanic_2/benchmark_request.rb', line 46

def all_errors
  @errors
end

#error_messagesHash

Returns validation errors as a hash

Returns:

  • (Hash)

    errors grouped by field



35
36
37
38
39
40
41
42
# File 'lib/the_mechanic_2/benchmark_request.rb', line 35

def error_messages
  {
    code_a: @errors.select { |e| e.include?('Code A') },
    code_b: @errors.select { |e| e.include?('Code B') },
    timeout: @errors.select { |e| e.include?('Timeout') },
    general: @errors.reject { |e| e.include?('Code A') || e.include?('Code B') || e.include?('Timeout') }
  }
end

#valid?Boolean

Validates the request parameters

Returns:

  • (Boolean)

    true if valid, false otherwise



23
24
25
26
27
28
29
30
31
# File 'lib/the_mechanic_2/benchmark_request.rb', line 23

def valid?
  @errors = []
  
  validate_code_a
  validate_code_b
  validate_timeout
  
  @errors.empty?
end