Class: ElectionBuddy::Validation::Result
- Inherits:
-
Object
- Object
- ElectionBuddy::Validation::Result
- Defined in:
- lib/election_buddy/entities/validation/result.rb
Overview
Represents the result of a validation operation
Instance Method Summary collapse
- #failure? ⇒ Boolean private
-
#failure_error ⇒ String?
Returns the error message if validation failed.
-
#failure_message ⇒ String?
Returns a user-friendly failure message.
-
#initialize(response) ⇒ Result
constructor
Initializes a new validation result.
-
#line_errors ⇒ LineErrors, Array
Returns the line-by-line validation errors.
-
#list_errors ⇒ ListErrors, Array
Returns the list of validation errors related to the voter list.
- #process_response(response) ⇒ Object private
- #success? ⇒ Boolean private
-
#total_errors_count ⇒ Integer
Returns the total count of all validation errors.
-
#valid? ⇒ Boolean
Indicates if the validation passed without errors.
Constructor Details
#initialize(response) ⇒ Result
Initializes a new validation result
35 36 37 |
# File 'lib/election_buddy/entities/validation/result.rb', line 35 def initialize(response) @result = process_response(response) end |
Instance Method Details
#failure? ⇒ Boolean (private)
99 100 101 |
# File 'lib/election_buddy/entities/validation/result.rb', line 99 def failure? !success? end |
#failure_error ⇒ String?
Returns the error message if validation failed
78 79 80 81 82 |
# File 'lib/election_buddy/entities/validation/result.rb', line 78 def failure_error return if success? ::ElectionBuddy::ErrorFormatter.format(@result[:error]) end |
#failure_message ⇒ String?
Returns a user-friendly failure message
87 88 89 90 91 |
# File 'lib/election_buddy/entities/validation/result.rb', line 87 def return if success? "API call has failed - Error: #{failure_error}" end |
#line_errors ⇒ LineErrors, Array
Returns the line-by-line validation errors
49 50 51 52 53 |
# File 'lib/election_buddy/entities/validation/result.rb', line 49 def line_errors return [] unless success? @line_errors ||= LineErrors.new(@result[:data].dig("results", "voter_lines_validation")) end |
#list_errors ⇒ ListErrors, Array
Returns the list of validation errors related to the voter list
41 42 43 44 45 |
# File 'lib/election_buddy/entities/validation/result.rb', line 41 def list_errors return [] unless success? @list_errors ||= ListErrors.new(@result[:data].dig("results", "voter_list_validations")) end |
#process_response(response) ⇒ Object (private)
103 104 105 106 107 108 109 |
# File 'lib/election_buddy/entities/validation/result.rb', line 103 def process_response(response) if response["error"] Failure.call(response["error"]) else Success.call(response) end end |
#success? ⇒ Boolean (private)
95 96 97 |
# File 'lib/election_buddy/entities/validation/result.rb', line 95 def success? @result[:success?] end |
#total_errors_count ⇒ Integer
Returns the total count of all validation errors
59 60 61 62 63 |
# File 'lib/election_buddy/entities/validation/result.rb', line 59 def total_errors_count raise UnavailableTotalErrorsCount, if failure? list_errors.total + line_errors.total end |
#valid? ⇒ Boolean
Indicates if the validation passed without errors
69 70 71 72 73 |
# File 'lib/election_buddy/entities/validation/result.rb', line 69 def valid? raise UnavailableValidStatus, if failure? total_errors_count.zero? end |