metadata_presenter 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/app/controllers/metadata_presenter/pages_controller.rb +9 -0
 - data/app/helpers/metadata_presenter/application_helper.rb +0 -26
 - data/app/models/metadata_presenter/date_field.rb +19 -0
 - data/app/models/metadata_presenter/page_answers.rb +24 -2
 - data/app/presenters/metadata_presenter/page_answers_presenter.rb +46 -0
 - data/app/validators/metadata_presenter/base_validator.rb +2 -2
 - data/app/validators/metadata_presenter/date_validator.rb +14 -0
 - data/app/views/metadata_presenter/component/_date.html.erb +5 -0
 - data/app/views/metadata_presenter/page/checkanswers.html.erb +18 -20
 - data/default_metadata/component/date.json +12 -0
 - data/default_metadata/string/error.date.json +6 -0
 - data/fixtures/version.json +22 -0
 - data/lib/metadata_presenter/version.rb +1 -1
 - data/schemas/component/date.json +48 -0
 - data/schemas/validations/validations.json +9 -0
 - metadata +9 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ea5f406433591e375a3c137f9f12df05ee0b0679cba535293d71e4629773d49b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 65311d8db37019816d041808cb1bf8ae409b5811052d50c05a6e7651ba1cea6b
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 0b302de50d21f93d1d87f253a6d843b2037138988567911d1d78293d44489d8f3a800b60f3a0ca325a10fac43ac23a5eea7fcddaf4213035409fdf8fd70fd96c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 13e2a9c6aa54657ddfa4ebda15a4defc981ee880581ca55cece8f24996823b4f120db58d1cffa3744df3f650302493e79a816366d9fb3e3cd935433b605a5311
         
     | 
| 
         @@ -11,5 +11,14 @@ module MetadataPresenter 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    not_found
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         
             
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def page_answers_presenters
         
     | 
| 
      
 16 
     | 
    
         
            +
                  PageAnswersPresenter.map(
         
     | 
| 
      
 17 
     | 
    
         
            +
                    view: view_context,
         
     | 
| 
      
 18 
     | 
    
         
            +
                    pages: service.pages,
         
     | 
| 
      
 19 
     | 
    
         
            +
                    answers: @user_data
         
     | 
| 
      
 20 
     | 
    
         
            +
                  )
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                helper_method :page_answers_presenters
         
     | 
| 
       14 
23 
     | 
    
         
             
              end
         
     | 
| 
       15 
24 
     | 
    
         
             
            end
         
     | 
| 
         @@ -14,32 +14,6 @@ module MetadataPresenter 
     | 
|
| 
       14 
14 
     | 
    
         
             
                  end
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                ## Display user answers on the view
         
     | 
| 
       18 
     | 
    
         
            -
                ## When the user doesn't answered yet the component will be blank
         
     | 
| 
       19 
     | 
    
         
            -
                # or with data otherwise, so doing the if in every output is not
         
     | 
| 
       20 
     | 
    
         
            -
                # pratical.
         
     | 
| 
       21 
     | 
    
         
            -
                #
         
     | 
| 
       22 
     | 
    
         
            -
                # The below example search for 'first_name' in the user data instance
         
     | 
| 
       23 
     | 
    
         
            -
                # variable as long your load_user_data in the controller sets the variable.
         
     | 
| 
       24 
     | 
    
         
            -
                #
         
     | 
| 
       25 
     | 
    
         
            -
                # @example
         
     | 
| 
       26 
     | 
    
         
            -
                #   <%=a 'first_name' %>
         
     | 
| 
       27 
     | 
    
         
            -
                #
         
     | 
| 
       28 
     | 
    
         
            -
                def a(component_key)
         
     | 
| 
       29 
     | 
    
         
            -
                  if @user_data.present?
         
     | 
| 
       30 
     | 
    
         
            -
                    @user_data[component_key]
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
       33 
     | 
    
         
            -
                alias answer a
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                ## Display user answers on the view formatted.
         
     | 
| 
       36 
     | 
    
         
            -
                ##
         
     | 
| 
       37 
     | 
    
         
            -
                def formatted_answer(component_key)
         
     | 
| 
       38 
     | 
    
         
            -
                  user_answer = answer(component_key)
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                  simple_format(user_answer) if user_answer.present?
         
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
17 
     | 
    
         
             
                # Renders markdown given a text.
         
     | 
| 
       44 
18 
     | 
    
         
             
                #
         
     | 
| 
       45 
19 
     | 
    
         
             
                # @example
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module MetadataPresenter
         
     | 
| 
      
 2 
     | 
    
         
            +
              class DateField
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :day, :month, :year
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(day:, month:, year:)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @day = day
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @month = month
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @year = year
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def present?
         
     | 
| 
      
 12 
     | 
    
         
            +
                  !blank?
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def blank?
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @day.blank? || @month.blank? || @year.blank?
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -17,11 +17,33 @@ module MetadataPresenter 
     | 
|
| 
       17 
17 
     | 
    
         
             
                end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                def respond_to_missing?(method_name, include_private = false)
         
     | 
| 
       20 
     | 
    
         
            -
                   
     | 
| 
      
 20 
     | 
    
         
            +
                  method_name.to_s.in?(components.map(&:id))
         
     | 
| 
       21 
21 
     | 
    
         
             
                end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                def method_missing(method_name, *args, &block)
         
     | 
| 
       24 
     | 
    
         
            -
                   
     | 
| 
      
 24 
     | 
    
         
            +
                  component = components.find { |component| component.id == method_name.to_s }
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  if component && component.type == 'date'
         
     | 
| 
      
 27 
     | 
    
         
            +
                    date_answer(component.id)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  else
         
     | 
| 
      
 29 
     | 
    
         
            +
                    answers[method_name.to_s]
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                def date_answer(component_id)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  date = raw_date_answer(component_id)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  MetadataPresenter::DateField.new(day: date[0], month: date[1], year: date[2])
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                def raw_date_answer(component_id)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  [
         
     | 
| 
      
 41 
     | 
    
         
            +
                    GOVUKDesignSystemFormBuilder::Elements::Date::SEGMENTS[:day],
         
     | 
| 
      
 42 
     | 
    
         
            +
                    GOVUKDesignSystemFormBuilder::Elements::Date::SEGMENTS[:month],
         
     | 
| 
      
 43 
     | 
    
         
            +
                    GOVUKDesignSystemFormBuilder::Elements::Date::SEGMENTS[:year]
         
     | 
| 
      
 44 
     | 
    
         
            +
                  ].map do |segment|
         
     | 
| 
      
 45 
     | 
    
         
            +
                    answers["#{component_id.to_s}(#{segment})"]
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
       25 
47 
     | 
    
         
             
                end
         
     | 
| 
       26 
48 
     | 
    
         | 
| 
       27 
49 
     | 
    
         
             
                private
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module MetadataPresenter
         
     | 
| 
      
 2 
     | 
    
         
            +
              class PageAnswersPresenter
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.map(view:, pages:, answers:)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  pages.map do |page|
         
     | 
| 
      
 5 
     | 
    
         
            +
                    Array(page.components).map do |component|
         
     | 
| 
      
 6 
     | 
    
         
            +
                      new(
         
     | 
| 
      
 7 
     | 
    
         
            +
                        view: view,
         
     | 
| 
      
 8 
     | 
    
         
            +
                        component: component,
         
     | 
| 
      
 9 
     | 
    
         
            +
                        page: page,
         
     | 
| 
      
 10 
     | 
    
         
            +
                        answers: answers
         
     | 
| 
      
 11 
     | 
    
         
            +
                      )
         
     | 
| 
      
 12 
     | 
    
         
            +
                    end
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end.flatten
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                attr_reader :view, :component, :page, :answers
         
     | 
| 
      
 17 
     | 
    
         
            +
                delegate :url, to: :page
         
     | 
| 
      
 18 
     | 
    
         
            +
                delegate :humanised_title, to: :component
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def initialize(view:, component:, page:, answers:)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @view = view
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @component = component
         
     | 
| 
      
 23 
     | 
    
         
            +
                  @page = page
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @answers = answers
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  @page_answers = PageAnswers.new(page, answers)
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                def answer
         
     | 
| 
      
 30 
     | 
    
         
            +
                  value = @page_answers.send(component.id)
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  return '' if value.blank?
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  if component.type == 'date'
         
     | 
| 
      
 35 
     | 
    
         
            +
                    I18n.l(
         
     | 
| 
      
 36 
     | 
    
         
            +
                      Date.civil(value.year.to_i, value.month.to_i, value.day.to_i),
         
     | 
| 
      
 37 
     | 
    
         
            +
                      format: '%d %B %Y'
         
     | 
| 
      
 38 
     | 
    
         
            +
                    )
         
     | 
| 
      
 39 
     | 
    
         
            +
                  elsif component.type == 'textarea'
         
     | 
| 
      
 40 
     | 
    
         
            +
                    view.simple_format(value)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  else
         
     | 
| 
      
 42 
     | 
    
         
            +
                    value
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -38,7 +38,7 @@ module MetadataPresenter 
     | 
|
| 
       38 
38 
     | 
    
         
             
                end
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                def valid?
         
     | 
| 
       41 
     | 
    
         
            -
                  return true if  
     | 
| 
      
 41 
     | 
    
         
            +
                  return true if allow_blank?
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
43 
     | 
    
         
             
                  if invalid_answer?
         
     | 
| 
       44 
44 
     | 
    
         
             
                    error_message = custom_error_message || default_error_message
         
     | 
| 
         @@ -127,7 +127,7 @@ module MetadataPresenter 
     | 
|
| 
       127 
127 
     | 
    
         
             
                # @return [TrueClass]
         
     | 
| 
       128 
128 
     | 
    
         
             
                #
         
     | 
| 
       129 
129 
     | 
    
         
             
                def allow_blank?
         
     | 
| 
       130 
     | 
    
         
            -
                   
     | 
| 
      
 130 
     | 
    
         
            +
                  user_answer.blank? && !self.class.name.demodulize.include?('RequiredValidator')
         
     | 
| 
       131 
131 
     | 
    
         
             
                end
         
     | 
| 
       132 
132 
     | 
    
         
             
              end
         
     | 
| 
       133 
133 
     | 
    
         
             
            end
         
     | 
| 
         @@ -27,27 +27,25 @@ 
     | 
|
| 
       27 
27 
     | 
    
         
             
                <%= form_for @page, url: reserved_submissions_path do |f| %>
         
     | 
| 
       28 
28 
     | 
    
         
             
                  <div data-block-id="page.checkanswers.answers" data-block-type="answers">
         
     | 
| 
       29 
29 
     | 
    
         
             
                    <dl class="fb-block fb-block-answers govuk-summary-list">
         
     | 
| 
       30 
     | 
    
         
            -
                      <%  
     | 
| 
       31 
     | 
    
         
            -
                         
     | 
| 
       32 
     | 
    
         
            -
                          < 
     | 
| 
       33 
     | 
    
         
            -
                             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                            </dt>
         
     | 
| 
      
 30 
     | 
    
         
            +
                      <% page_answers_presenters.each do |page_answers_presenter| %>
         
     | 
| 
      
 31 
     | 
    
         
            +
                        <div class="govuk-summary-list__row">
         
     | 
| 
      
 32 
     | 
    
         
            +
                          <dt class="govuk-summary-list__key">
         
     | 
| 
      
 33 
     | 
    
         
            +
                            <%= page_answers_presenter.humanised_title %>
         
     | 
| 
      
 34 
     | 
    
         
            +
                          </dt>
         
     | 
| 
       36 
35 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                        <% end %>
         
     | 
| 
      
 36 
     | 
    
         
            +
                          <dd class="govuk-summary-list__value">
         
     | 
| 
      
 37 
     | 
    
         
            +
                            <%= page_answers_presenter.answer %>
         
     | 
| 
      
 38 
     | 
    
         
            +
                          </dd>
         
     | 
| 
      
 39 
     | 
    
         
            +
                          <dd class="govuk-summary-list__actions">
         
     | 
| 
      
 40 
     | 
    
         
            +
                          <%= link_to(
         
     | 
| 
      
 41 
     | 
    
         
            +
                                change_answer_path(url: page_answers_presenter.url),
         
     | 
| 
      
 42 
     | 
    
         
            +
                                class: 'govuk-link'
         
     | 
| 
      
 43 
     | 
    
         
            +
                              ) do %>
         
     | 
| 
      
 44 
     | 
    
         
            +
                                 Change<span class="govuk-visually-hidden"> Your answer for <%= page_answers_presenter.humanised_title %></span>
         
     | 
| 
      
 45 
     | 
    
         
            +
                            <% end %>
         
     | 
| 
      
 46 
     | 
    
         
            +
                            </a>
         
     | 
| 
      
 47 
     | 
    
         
            +
                          </dd>
         
     | 
| 
      
 48 
     | 
    
         
            +
                        </div>
         
     | 
| 
       51 
49 
     | 
    
         
             
                      <% end %>
         
     | 
| 
       52 
50 
     | 
    
         
             
                    </dl>
         
     | 
| 
       53 
51 
     | 
    
         
             
                  </div>
         
     | 
    
        data/fixtures/version.json
    CHANGED
    
    | 
         @@ -201,6 +201,28 @@ 
     | 
|
| 
       201 
201 
     | 
    
         
             
                  "heading": "Radio buttons",
         
     | 
| 
       202 
202 
     | 
    
         
             
                  "url": "/do-you-like-star-wars"
         
     | 
| 
       203 
203 
     | 
    
         
             
                },
         
     | 
| 
      
 204 
     | 
    
         
            +
                {
         
     | 
| 
      
 205 
     | 
    
         
            +
                  "_id": "page.holiday",
         
     | 
| 
      
 206 
     | 
    
         
            +
                  "url": "holiday",
         
     | 
| 
      
 207 
     | 
    
         
            +
                  "_type":"page.singlequestion",
         
     | 
| 
      
 208 
     | 
    
         
            +
                  "_uuid":"ff4557b2-486b-481e-9eef-f315718639e8",
         
     | 
| 
      
 209 
     | 
    
         
            +
                  "heading":"Question",
         
     | 
| 
      
 210 
     | 
    
         
            +
                  "components": [
         
     | 
| 
      
 211 
     | 
    
         
            +
                    {
         
     | 
| 
      
 212 
     | 
    
         
            +
                      "_id": "holiday_date_1",
         
     | 
| 
      
 213 
     | 
    
         
            +
                      "hint": "Component hint",
         
     | 
| 
      
 214 
     | 
    
         
            +
                      "name": "holiday_date_1",
         
     | 
| 
      
 215 
     | 
    
         
            +
                      "_type": "date",
         
     | 
| 
      
 216 
     | 
    
         
            +
                      "legend": "What is the day that you like to take holidays?",
         
     | 
| 
      
 217 
     | 
    
         
            +
                      "errors": {},
         
     | 
| 
      
 218 
     | 
    
         
            +
                      "date_type": "day-month-year",
         
     | 
| 
      
 219 
     | 
    
         
            +
                      "validation": {
         
     | 
| 
      
 220 
     | 
    
         
            +
                        "date": true,
         
     | 
| 
      
 221 
     | 
    
         
            +
                        "required": true
         
     | 
| 
      
 222 
     | 
    
         
            +
                      }
         
     | 
| 
      
 223 
     | 
    
         
            +
                    }
         
     | 
| 
      
 224 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 225 
     | 
    
         
            +
                },
         
     | 
| 
       204 
226 
     | 
    
         
             
                {
         
     | 
| 
       205 
227 
     | 
    
         
             
                  "_uuid": "e819d0c2-7062-4997-89cf-44d26d098404",
         
     | 
| 
       206 
228 
     | 
    
         
             
                  "_id": "page._check-answers",
         
     | 
| 
         @@ -0,0 +1,48 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
              "$id": "http://gov.uk/schema/v1.0.0/date",
         
     | 
| 
      
 3 
     | 
    
         
            +
              "_name": "component.date",
         
     | 
| 
      
 4 
     | 
    
         
            +
              "title": "Date",
         
     | 
| 
      
 5 
     | 
    
         
            +
              "description": "Let users enter an exact date",
         
     | 
| 
      
 6 
     | 
    
         
            +
              "type": "object",
         
     | 
| 
      
 7 
     | 
    
         
            +
              "properties": {
         
     | 
| 
      
 8 
     | 
    
         
            +
                "_type": {
         
     | 
| 
      
 9 
     | 
    
         
            +
                  "const": "date"
         
     | 
| 
      
 10 
     | 
    
         
            +
                },
         
     | 
| 
      
 11 
     | 
    
         
            +
                "name": {
         
     | 
| 
      
 12 
     | 
    
         
            +
                  "inputType": "date"
         
     | 
| 
      
 13 
     | 
    
         
            +
                },
         
     | 
| 
      
 14 
     | 
    
         
            +
                "date_type": {
         
     | 
| 
      
 15 
     | 
    
         
            +
                  "title": "Date type",
         
     | 
| 
      
 16 
     | 
    
         
            +
                  "description": "The format for entering dates",
         
     | 
| 
      
 17 
     | 
    
         
            +
                  "type": "string",
         
     | 
| 
      
 18 
     | 
    
         
            +
                  "enum": [
         
     | 
| 
      
 19 
     | 
    
         
            +
                    "day-month-year",
         
     | 
| 
      
 20 
     | 
    
         
            +
                    "month-year",
         
     | 
| 
      
 21 
     | 
    
         
            +
                    "day-month",
         
     | 
| 
      
 22 
     | 
    
         
            +
                    "year"
         
     | 
| 
      
 23 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 24 
     | 
    
         
            +
                  "default": "day-month-year"
         
     | 
| 
      
 25 
     | 
    
         
            +
                }
         
     | 
| 
      
 26 
     | 
    
         
            +
              },
         
     | 
| 
      
 27 
     | 
    
         
            +
              "allOf": [
         
     | 
| 
      
 28 
     | 
    
         
            +
                {
         
     | 
| 
      
 29 
     | 
    
         
            +
                  "$ref": "definition.fieldset"
         
     | 
| 
      
 30 
     | 
    
         
            +
                },
         
     | 
| 
      
 31 
     | 
    
         
            +
                {
         
     | 
| 
      
 32 
     | 
    
         
            +
                  "$ref": "validations#/definitions/date_bundle"
         
     | 
| 
      
 33 
     | 
    
         
            +
                }
         
     | 
| 
      
 34 
     | 
    
         
            +
              ],
         
     | 
| 
      
 35 
     | 
    
         
            +
              "composite": [
         
     | 
| 
      
 36 
     | 
    
         
            +
                "day",
         
     | 
| 
      
 37 
     | 
    
         
            +
                "month",
         
     | 
| 
      
 38 
     | 
    
         
            +
                "year"
         
     | 
| 
      
 39 
     | 
    
         
            +
              ],
         
     | 
| 
      
 40 
     | 
    
         
            +
              "definitions": {
         
     | 
| 
      
 41 
     | 
    
         
            +
                "date_type_enum": {
         
     | 
| 
      
 42 
     | 
    
         
            +
                  "day-month-year": "Day / Month / Year",
         
     | 
| 
      
 43 
     | 
    
         
            +
                  "month-year": "Month / Year",
         
     | 
| 
      
 44 
     | 
    
         
            +
                  "year": "Year",
         
     | 
| 
      
 45 
     | 
    
         
            +
                  "day-month": "Day / Month"
         
     | 
| 
      
 46 
     | 
    
         
            +
                }
         
     | 
| 
      
 47 
     | 
    
         
            +
              }
         
     | 
| 
      
 48 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -25,6 +25,15 @@ 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  ],
         
     | 
| 
       26 
26 
     | 
    
         
             
                  "default": true
         
     | 
| 
       27 
27 
     | 
    
         
             
                },
         
     | 
| 
      
 28 
     | 
    
         
            +
                "date": {
         
     | 
| 
      
 29 
     | 
    
         
            +
                  "title": "Date",
         
     | 
| 
      
 30 
     | 
    
         
            +
                  "description": "Whether the user must answer with a valid date",
         
     | 
| 
      
 31 
     | 
    
         
            +
                  "oneOf": [
         
     | 
| 
      
 32 
     | 
    
         
            +
                    {
         
     | 
| 
      
 33 
     | 
    
         
            +
                      "$ref": "definition.conditional.boolean"
         
     | 
| 
      
 34 
     | 
    
         
            +
                    }
         
     | 
| 
      
 35 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 36 
     | 
    
         
            +
                },
         
     | 
| 
       28 
37 
     | 
    
         
             
                "errors_required": {
         
     | 
| 
       29 
38 
     | 
    
         
             
                  "title": "Error messages for ‘Required’",
         
     | 
| 
       30 
39 
     | 
    
         
             
                  "allOf": [
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: metadata_presenter
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.12.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - MoJ Online
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2021-02- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-02-15 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rails
         
     | 
| 
         @@ -233,12 +233,15 @@ files: 
     | 
|
| 
       233 
233 
     | 
    
         
             
            - app/helpers/metadata_presenter/application_helper.rb
         
     | 
| 
       234 
234 
     | 
    
         
             
            - app/jobs/metadata_presenter/application_job.rb
         
     | 
| 
       235 
235 
     | 
    
         
             
            - app/models/metadata_presenter/component.rb
         
     | 
| 
      
 236 
     | 
    
         
            +
            - app/models/metadata_presenter/date_field.rb
         
     | 
| 
       236 
237 
     | 
    
         
             
            - app/models/metadata_presenter/metadata.rb
         
     | 
| 
       237 
238 
     | 
    
         
             
            - app/models/metadata_presenter/next_page.rb
         
     | 
| 
       238 
239 
     | 
    
         
             
            - app/models/metadata_presenter/page.rb
         
     | 
| 
       239 
240 
     | 
    
         
             
            - app/models/metadata_presenter/page_answers.rb
         
     | 
| 
       240 
241 
     | 
    
         
             
            - app/models/metadata_presenter/service.rb
         
     | 
| 
      
 242 
     | 
    
         
            +
            - app/presenters/metadata_presenter/page_answers_presenter.rb
         
     | 
| 
       241 
243 
     | 
    
         
             
            - app/validators/metadata_presenter/base_validator.rb
         
     | 
| 
      
 244 
     | 
    
         
            +
            - app/validators/metadata_presenter/date_validator.rb
         
     | 
| 
       242 
245 
     | 
    
         
             
            - app/validators/metadata_presenter/max_length_validator.rb
         
     | 
| 
       243 
246 
     | 
    
         
             
            - app/validators/metadata_presenter/min_length_validator.rb
         
     | 
| 
       244 
247 
     | 
    
         
             
            - app/validators/metadata_presenter/number_validator.rb
         
     | 
| 
         @@ -247,6 +250,7 @@ files: 
     | 
|
| 
       247 
250 
     | 
    
         
             
            - app/validators/metadata_presenter/validate_schema.rb
         
     | 
| 
       248 
251 
     | 
    
         
             
            - app/views/errors/404.html
         
     | 
| 
       249 
252 
     | 
    
         
             
            - app/views/layouts/metadata_presenter/application.html.erb
         
     | 
| 
      
 253 
     | 
    
         
            +
            - app/views/metadata_presenter/component/_date.html.erb
         
     | 
| 
       250 
254 
     | 
    
         
             
            - app/views/metadata_presenter/component/_number.html.erb
         
     | 
| 
       251 
255 
     | 
    
         
             
            - app/views/metadata_presenter/component/_radios.html.erb
         
     | 
| 
       252 
256 
     | 
    
         
             
            - app/views/metadata_presenter/component/_text.html.erb
         
     | 
| 
         @@ -260,6 +264,7 @@ files: 
     | 
|
| 
       260 
264 
     | 
    
         
             
            - config/initializers/default_metadata.rb
         
     | 
| 
       261 
265 
     | 
    
         
             
            - config/initializers/schemas.rb
         
     | 
| 
       262 
266 
     | 
    
         
             
            - config/routes.rb
         
     | 
| 
      
 267 
     | 
    
         
            +
            - default_metadata/component/date.json
         
     | 
| 
       263 
268 
     | 
    
         
             
            - default_metadata/component/number.json
         
     | 
| 
       264 
269 
     | 
    
         
             
            - default_metadata/component/radios.json
         
     | 
| 
       265 
270 
     | 
    
         
             
            - default_metadata/component/text.json
         
     | 
| 
         @@ -272,6 +277,7 @@ files: 
     | 
|
| 
       272 
277 
     | 
    
         
             
            - default_metadata/page/singlequestion.json
         
     | 
| 
       273 
278 
     | 
    
         
             
            - default_metadata/page/start.json
         
     | 
| 
       274 
279 
     | 
    
         
             
            - default_metadata/service/base.json
         
     | 
| 
      
 280 
     | 
    
         
            +
            - default_metadata/string/error.date.json
         
     | 
| 
       275 
281 
     | 
    
         
             
            - default_metadata/string/error.max_length.json
         
     | 
| 
       276 
282 
     | 
    
         
             
            - default_metadata/string/error.min_length.json
         
     | 
| 
       277 
283 
     | 
    
         
             
            - default_metadata/string/error.number.json
         
     | 
| 
         @@ -284,6 +290,7 @@ files: 
     | 
|
| 
       284 
290 
     | 
    
         
             
            - lib/metadata_presenter/test_helpers.rb
         
     | 
| 
       285 
291 
     | 
    
         
             
            - lib/metadata_presenter/version.rb
         
     | 
| 
       286 
292 
     | 
    
         
             
            - lib/tasks/metadata_presenter_tasks.rake
         
     | 
| 
      
 293 
     | 
    
         
            +
            - schemas/component/date.json
         
     | 
| 
       287 
294 
     | 
    
         
             
            - schemas/component/number.json
         
     | 
| 
       288 
295 
     | 
    
         
             
            - schemas/component/radios.json
         
     | 
| 
       289 
296 
     | 
    
         
             
            - schemas/component/text.json
         
     |