Class: MetadataPresenter::ValidateAnswers

Inherits:
Object
  • Object
show all
Defined in:
app/validators/metadata_presenter/validate_answers.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#answersObject (readonly)

Returns the value of attribute answers.



3
4
5
# File 'app/validators/metadata_presenter/validate_answers.rb', line 3

def answers
  @answers
end

#componentsObject (readonly)

Returns the value of attribute components.



3
4
5
# File 'app/validators/metadata_presenter/validate_answers.rb', line 3

def components
  @components
end

#pageObject (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

Returns:

  • (Boolean)


15
16
17
# File 'app/validators/metadata_presenter/validate_answers.rb', line 15

def invalid?
  !valid?
end

#optional_question?(component) ⇒ Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (Boolean)


11
12
13
# File 'app/validators/metadata_presenter/validate_answers.rb', line 11

def valid?
  validators.map { |validator| validator.valid? }.all?
end

#validatorsObject



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