Class: MetadataPresenter::ValidateAnswers
- Inherits:
-
Object
- Object
- MetadataPresenter::ValidateAnswers
- Defined in:
- app/validators/metadata_presenter/validate_answers.rb
Instance Attribute Summary collapse
-
#answers ⇒ Object
readonly
Returns the value of attribute answers.
-
#components ⇒ Object
readonly
Returns the value of attribute components.
-
#page ⇒ Object
readonly
Returns the value of attribute page.
Instance Method Summary collapse
- #component_validations(component) ⇒ Object
-
#initialize(page:, answers:) ⇒ ValidateAnswers
constructor
A new instance of ValidateAnswers.
- #invalid? ⇒ Boolean
- #optional_question?(component) ⇒ Boolean
- #question_not_answered? ⇒ Boolean
- #valid? ⇒ Boolean
- #validators ⇒ Object
Constructor Details
#initialize(page:, answers:) ⇒ ValidateAnswers
Returns a new instance of ValidateAnswers.
5 6 7 8 9 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 5 def initialize(page:, answers:) @page = page @answers = answers @components = Array(page.components) end |
Instance Attribute Details
#answers ⇒ Object (readonly)
Returns the value of attribute answers.
3 4 5 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 3 def answers @answers end |
#components ⇒ Object (readonly)
Returns the value of attribute components.
3 4 5 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 3 def components @components end |
#page ⇒ Object (readonly)
Returns the value of attribute page.
3 4 5 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 3 def page @page end |
Instance Method Details
#component_validations(component) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 31 def component_validations(component) return [] if component.validation.blank? component.validation.reject do |_, value| value.blank? || (optional_question?(component) && question_not_answered?) end.keys end |
#invalid? ⇒ Boolean
15 16 17 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 15 def invalid? !valid? end |
#optional_question?(component) ⇒ Boolean
40 41 42 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 40 def optional_question?(component) component.validation['required'] == false end |
#question_not_answered? ⇒ Boolean
44 45 46 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 44 def question_not_answered? answers.values.any?(&:blank?) end |
#valid? ⇒ Boolean
11 12 13 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 11 def valid? validators.map { |validator| validator.valid? }.all? end |
#validators ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/validators/metadata_presenter/validate_answers.rb', line 19 def validators components.map do |component| component_validations(component).map do |key| "MetadataPresenter::#{key.classify}Validator".constantize.new( page: page, answers: answers, component: component ) end end.compact.flatten end |