metadata_presenter 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98b871be342033efb49a77309b9d1e506318660eb2b93693bc4148e609d37f7c
4
- data.tar.gz: c03685b11d5c258410a5964021886c6eb4105b82698d66bc1c4dd6715559be6e
3
+ metadata.gz: 4502db8905d70f018c8229e2fffb8f1c392415ee4ee8214bfc9bde851e563c8e
4
+ data.tar.gz: ddaacc9a8520bdb2df646150e3f10001d06c9865a0008e68b8e117320b8e0d85
5
5
  SHA512:
6
- metadata.gz: 57651e49df9cd24e838f578b2f61a6413524678b4e2caf82fe548d028190df8aae511af71ccc03a576e799050834c7d0cf3a1c91eac7d03e73de7641850fd08a
7
- data.tar.gz: 529e16568eaba2c55b69bae60f895c3c6b275e59e49deab85a207c612561adfa9f8b2f8e85c2a3244e2c7c534beaa17e1010dca57d75f1647e818c376c382e91
6
+ metadata.gz: f21f6779bf1c90b4a09a7042f2117b5b2712fc72d2eb331226bd6142452abf2a6eac9f1c3b221c12bef9c2d46584f6f514b4918ba3f90381ffaf6d6daebbf9a4
7
+ data.tar.gz: dd6bcd473cdd65ace450ec00e1c4431d7844bf99201471e330752254b2eb2193cf15ad2ed0936a31c5483b97a3b7c4e4924c0b63d1d4a6aea21a5905279d530c
data/README.md CHANGED
@@ -47,6 +47,7 @@ that you need to write the following methods in your controller:
47
47
 
48
48
  1. save_user_data
49
49
  2. load_user_data
50
+ 3. editable?
50
51
 
51
52
  The user answers can be accessed via `params[:answers]`.
52
53
 
@@ -63,6 +64,18 @@ An example of implementation:
63
64
  end
64
65
  ```
65
66
 
67
+ The `editable?` is related if the pages and components could be editable in the
68
+ mountable app:
69
+
70
+ ```ruby
71
+ class MyAwesomeController
72
+ def editable?
73
+ false
74
+ end
75
+ helper_method :editable?
76
+ end
77
+ ```
78
+
66
79
  ## Generate documentation
67
80
 
68
81
  Run `rake doc` and open the doc/index.html
@@ -1,5 +1,5 @@
1
1
  class MetadataPresenter::Component < MetadataPresenter::Metadata
2
2
  def to_partial_path
3
- "component/#{type}"
3
+ "metadata_presenter/component/#{type}"
4
4
  end
5
5
  end
@@ -9,7 +9,7 @@ module MetadataPresenter
9
9
  def find(session:, current_page_url:)
10
10
  if session[:return_to_check_you_answer].present?
11
11
  session[:return_to_check_you_answer] = nil
12
- service.pages.find { |page| page.type == 'page.summary' }
12
+ service.pages.find { |page| page.type == 'page.checkanswers' }
13
13
  else
14
14
  service.next_page(from: current_page_url)
15
15
  end
@@ -10,6 +10,10 @@ module MetadataPresenter
10
10
  id == other.id if other.respond_to? :id
11
11
  end
12
12
 
13
+ def editable_attributes
14
+ self.to_h.reject { |k,_| k.in?([:_id, :_type, :steps]) }
15
+ end
16
+
13
17
  def components
14
18
  metadata.components&.map do |component|
15
19
  MetadataPresenter::Component.new(component)
@@ -6,8 +6,7 @@ class MetadataPresenter::ValidateSchema
6
6
  def before(controller)
7
7
  return unless controller.request.post?
8
8
 
9
- schema_name = "request.#{controller.request.params['controller']}"
10
- validate(controller.request.params, schema_name)
9
+ validate(controller.request.params, 'request.service')
11
10
  rescue JSON::Schema::ValidationError, JSON::Schema::SchemaError, SchemaNotFoundError => e
12
11
  controller.render(
13
12
  json: ErrorsSerializer.new(message: e.message).attributes,
@@ -3,5 +3,5 @@
3
3
  label: { text: component.label },
4
4
  hint: { text: component.hint },
5
5
  name: "answers[#{component.name}]",
6
- value: @user_data[component.name]
6
+ value: @user_data ? @user_data[component.name] : nil
7
7
  %>
@@ -25,7 +25,7 @@
25
25
  <% end %>
26
26
 
27
27
  <%= form_for @page, url: reserved_submissions_path do |f| %>
28
- <div data-block-id="page.summary.answers" data-block-type="answers">
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
30
  <% @service.pages.each do |page| %>
31
31
  <% Array(page.components).each do |component| %>
@@ -11,7 +11,7 @@
11
11
  <%= render partial: component, locals: { component: component, f: f } %>
12
12
  <% end %>
13
13
 
14
- <%= f.govuk_submit %>
14
+ <%= f.govuk_submit(disabled: editable?) %>
15
15
  <% end %>
16
16
  </div>
17
17
  </div>
@@ -26,13 +26,19 @@
26
26
  <%- end %>
27
27
 
28
28
  <%= form_tag(reserved_answers_path(@page.url), method: :post) do %>
29
- <button class='govuk-button govuk-button--start govuk-!-margin-top-2'>
29
+ <button <%= 'disabled' if editable? %> class='govuk-button govuk-button--start govuk-!-margin-top-2'>
30
30
  Start
31
31
  <svg class="govuk-button__start-icon" xmlns="http://www.w3.org/2000/svg" width="17.5" height="19" viewBox="0 0 33 40" aria-hidden="true" focusable="false">
32
32
  <path fill="currentColor" d="M0 0h13l20 20-20 20H0l20-20z" />
33
33
  </svg>
34
34
  </button>
35
35
  <% end %>
36
+
37
+ <% if @page.before_you_start %>
38
+ <p class="govuk-body-l" data-block-id="<%= @page.id %>" data-block-property="before-you-start">
39
+ <%= to_markdown(@page.before_you_start) %>
40
+ </p>
41
+ <%- end %>
36
42
  </div>
37
43
  </div>
38
44
  </div>
@@ -0,0 +1,8 @@
1
+ {
2
+ "_id": "component.text",
3
+ "_type": "text",
4
+ "errors": {},
5
+ "hint": "Component hint",
6
+ "label": "Component label",
7
+ "name": "component-name"
8
+ }
@@ -1,7 +1,4 @@
1
1
  {
2
2
  "_id": "config.service",
3
- "_type": "config.service",
4
- "homepage_url": "https://www.gov.uk",
5
- "service_email_address": "moj-online@digital.justice.gov.uk",
6
- "service_url": "page.start"
3
+ "_type": "config.service"
7
4
  }
@@ -1,6 +1,8 @@
1
1
  {
2
- "_id": "page.summary",
2
+ "_id": "page.checkanswers",
3
+ "_type": "page.checkanswers",
3
4
  "heading": "Check your answers",
4
5
  "send_heading": "Now send your application",
5
- "send_body": "By submitting this application you confirm that, to the best of your knowledge, the details you are providing are correct."
6
+ "send_body": "By submitting this application you confirm that, to the best of your knowledge, the details you are providing are correct.",
7
+ "components": []
6
8
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "_id": "page.confirmation",
3
+ "_type": "page.confirmation",
3
4
  "heading": "Required - Confirmation"
4
5
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "_id": "page.singlequestion",
3
+ "_type": "page.singlequestion",
4
+ "heading": "Question",
5
+ "lede": "This is the lede",
6
+ "body": "Body section",
7
+ "components": [],
8
+ "url": ""
9
+ }
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
- "service_name": "Service name goes here",
4
+ "service_name": "Service name",
5
5
  "configuration": {},
6
6
  "pages": [
7
7
  {
8
8
  "_id": "page.start",
9
9
  "_type": "page.start",
10
- "heading": "Start page heading",
11
- "body": "Start page body text",
12
- "lede": "Start page lede text",
10
+ "heading": "Service name goes here",
11
+ "lede": "This is your start page first paragraph. You can only have one paragraph here.",
12
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
13
+ "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
13
14
  "steps": [],
14
15
  "url": "/"
15
16
  }
@@ -2,15 +2,12 @@
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
4
  "service_id": "d243f5c0-e8a2-4b13-982c-7b5f3fa128cf",
5
- "service_name": "Main fixture to test Form builder",
5
+ "service_name": "Service name",
6
6
  "created_by": "4634ec01-5618-45ec-a4e2-bb5aa587e751",
7
7
  "configuration": {
8
8
  "service": {
9
9
  "_id": "config.service",
10
- "_type": "config.service",
11
- "homepage_url": "https://www.gov.uk",
12
- "service_email_address": "moj-online@digital.justice.gov.uk",
13
- "service_url": "page.start"
10
+ "_type": "config.service"
14
11
  },
15
12
  "meta": {
16
13
  "_id": "config.meta",
@@ -41,9 +38,9 @@
41
38
  {
42
39
  "_id": "page.start",
43
40
  "_type": "page.start",
44
- "body": "You cannot use this form to complain about:\r\n\r\n* the result of a case\r\n* a judge, magistrate, coroner or member of a tribunal\r\n\r\nThis online form is also available in [Welsh (Cymraeg)](https://complain-about-a-court-or-tribunal.form.service.justice.gov.uk/cy).",
45
- "heading": "Complain about a court or tribunal",
46
- "lede": "Your complaint will not affect your case.",
41
+ "heading": "Service name goes here",
42
+ "lede": "This is your start page first paragraph. You can only have one paragraph here.",
43
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
47
44
  "steps": [
48
45
  "page.name",
49
46
  "page.email-address",
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
- "service_name": "Complain about a court or tribunal",
4
+ "service_name": "Service name",
5
5
  "created_by": "4634ec01-5618-45ec-a4e2-bb5aa587e751",
6
6
  "configuration": {
7
7
  "service": {
8
8
  "_id": "config.service",
9
- "_type": "config.service",
10
- "homepage_url": "https://www.gov.uk",
11
- "service_email_address": "moj-online@digital.justice.gov.uk",
12
- "service_url": "page.start"
9
+ "_type": "config.service"
13
10
  },
14
11
  "meta": {
15
12
  "_id": "config.meta",
@@ -40,9 +37,10 @@
40
37
  {
41
38
  "_id": "page.start",
42
39
  "_type": "page.start",
43
- "body": "You cannot use this form to complain about:\r\n\r\n* the result of a case\r\n* a judge, magistrate, coroner or member of a tribunal\r\n\r\nThis online form is also available in [Welsh (Cymraeg)](https://complain-about-a-court-or-tribunal.form.service.justice.gov.uk/cy).",
44
- "heading": "Complain about a court or tribunal",
45
- "lede": "Your complaint will not affect your case.",
40
+ "heading": "Service name goes here",
41
+ "lede": "Use this service to:",
42
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
43
+ "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
46
44
  "steps": [],
47
45
  "url": "/"
48
46
  }
@@ -2,15 +2,12 @@
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
4
  "service_id": "d243f5c0-e8a2-4b13-982c-7b5f3fa128cf",
5
- "service_name": "Main fixture to test Form builder",
5
+ "service_name": "Service name",
6
6
  "created_by": "4634ec01-5618-45ec-a4e2-bb5aa587e751",
7
7
  "configuration": {
8
8
  "service": {
9
9
  "_id": "config.service",
10
- "_type": "config.service",
11
- "homepage_url": "https://www.gov.uk",
12
- "service_email_address": "moj-online@digital.justice.gov.uk",
13
- "service_url": "page.start"
10
+ "_type": "config.service"
14
11
  },
15
12
  "meta": {
16
13
  "_id": "config.meta",
@@ -41,9 +38,10 @@
41
38
  {
42
39
  "_id": "page.start",
43
40
  "_type": "page.start",
44
- "body": "You cannot use this form to complain about:\r\n\r\n* the result of a case\r\n* a judge, magistrate, coroner or member of a tribunal\r\n\r\nThis online form is also available in [Welsh (Cymraeg)](https://complain-about-a-court-or-tribunal.form.service.justice.gov.uk/cy).",
45
- "heading": "Complain about a court or tribunal",
46
- "lede": "Your complaint will not affect your case.",
41
+ "heading": "Service name goes here",
42
+ "lede": "This is your start page first paragraph. You can only have one paragraph here.",
43
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
44
+ "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
47
45
  "steps": [
48
46
  "page.name",
49
47
  "page.email-address",
@@ -124,7 +122,7 @@
124
122
  },
125
123
  {
126
124
  "_id": "page._check-answers",
127
- "_type": "page.summary",
125
+ "_type": "page.checkanswers",
128
126
  "body": "Optional content",
129
127
  "heading": "Review your answer",
130
128
  "lede": "First paragraph",
@@ -0,0 +1,21 @@
1
+ module MetadataPresenter
2
+ module TestHelpers
3
+ def service
4
+ MetadataPresenter::Service.new(service_metadata)
5
+ end
6
+
7
+ def fixtures_directory
8
+ @_fixtures_directory ||=
9
+ Pathname.new(MetadataPresenter::Engine.root.join('fixtures'))
10
+ end
11
+
12
+ def service_metadata
13
+ metadata_fixture(:version)
14
+ JSON.parse(File.read(fixtures_directory.join('version.json')))
15
+ end
16
+
17
+ def metadata_fixture(fixture_name)
18
+ JSON.parse(File.read(fixtures_directory.join("#{fixture_name}.json")))
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '0.1.4'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -1,12 +1,12 @@
1
1
  {
2
- "$id": "http://gov.uk/schema/v1.0.0/page/summary",
3
- "_name": "page.summary",
2
+ "$id": "http://gov.uk/schema/v1.0.0/page/checkanswers",
3
+ "_name": "page.checkanswers",
4
4
  "title": "Check answers",
5
5
  "description": "Let users check and change their answers before submitting",
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "_type": {
9
- "const": "page.summary"
9
+ "const": "page.checkanswers"
10
10
  },
11
11
  "section_heading": {
12
12
  "title": "Section heading",
@@ -5,9 +5,16 @@
5
5
  "description": "Let users start using a service",
6
6
  "type": "object",
7
7
  "properties": {
8
+ "_id": {
9
+ "const": "page.start"
10
+ },
8
11
  "_type": {
9
12
  "const": "page.start"
10
13
  },
14
+ "before_you_start": {
15
+ "title": "Before you start",
16
+ "description": "A body of text that goes after the Start button"
17
+ },
11
18
  "enable_steps": {
12
19
  "const": true
13
20
  },
@@ -25,10 +32,14 @@
25
32
  "ui_category": {
26
33
  "main": [
27
34
  "lede",
28
- "body"
35
+ "body",
36
+ "before_you_start"
29
37
  ]
30
38
  },
31
39
  "required": [
40
+ "_id",
41
+ "_type",
42
+ "heading",
32
43
  "steps"
33
44
  ]
34
45
  }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/request/service",
3
+ "_name": "request.service",
4
+ "title": "Create new service",
5
+ "description": "Request object schema for creating and updating a new service",
6
+ "type": "object",
7
+ "properties": {
8
+ "metadata": {
9
+ "$ref": "service.base"
10
+ }
11
+ },
12
+ "required": ["metadata"]
13
+ }
@@ -42,7 +42,6 @@
42
42
  "required": [
43
43
  "_id",
44
44
  "_type",
45
- "service_id",
46
45
  "service_name",
47
46
  "created_by",
48
47
  "locale",
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.1.4
4
+ version: 0.2.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-01-06 00:00:00.000000000 Z
11
+ date: 2021-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -247,18 +247,20 @@ files:
247
247
  - app/views/layouts/metadata_presenter/application.html.erb
248
248
  - app/views/metadata_presenter/component/_text.html.erb
249
249
  - app/views/metadata_presenter/header/show.html.erb
250
+ - app/views/metadata_presenter/page/checkanswers.html.erb
250
251
  - app/views/metadata_presenter/page/confirmation.html.erb
251
252
  - app/views/metadata_presenter/page/form.html.erb
252
253
  - app/views/metadata_presenter/page/singlequestion.html.erb
253
254
  - app/views/metadata_presenter/page/start.html.erb
254
- - app/views/metadata_presenter/page/summary.html.erb
255
255
  - config/initializers/default_metadata.rb
256
256
  - config/initializers/schemas.rb
257
257
  - config/routes.rb
258
+ - default_metadata/component/text.json
258
259
  - default_metadata/config/meta.json
259
260
  - default_metadata/config/service.json
261
+ - default_metadata/page/checkanswers.json
260
262
  - default_metadata/page/confirmation.json
261
- - default_metadata/page/summary.json
263
+ - default_metadata/page/singlequestion.json
262
264
  - default_metadata/service/base.json
263
265
  - default_metadata/string/error.max_length.json
264
266
  - default_metadata/string/error.min_length.json
@@ -268,6 +270,7 @@ files:
268
270
  - fixtures/version.json
269
271
  - lib/metadata_presenter.rb
270
272
  - lib/metadata_presenter/engine.rb
273
+ - lib/metadata_presenter/test_helpers.rb
271
274
  - lib/metadata_presenter/version.rb
272
275
  - lib/tasks/metadata_presenter_tasks.rake
273
276
  - schemas/condition/condition.json
@@ -305,11 +308,10 @@ files:
305
308
  - schemas/definition/width_class.json
306
309
  - schemas/errors/errors.json
307
310
  - schemas/link/link.json
311
+ - schemas/page/checkanswers.json
308
312
  - schemas/page/confirmation.json
309
313
  - schemas/page/start.json
310
- - schemas/page/summary.json
311
- - schemas/request/services.json
312
- - schemas/request/versions.json
314
+ - schemas/request/service.json
313
315
  - schemas/service/base.json
314
316
  - schemas/service/configuration.json
315
317
  - schemas/service/locale.json
@@ -1,48 +0,0 @@
1
- {
2
- "$id": "http://gov.uk/schema/v1.0.0/request/services",
3
- "_name": "request.services",
4
- "title": "Create new service",
5
- "description": "Request schema for creating a new service",
6
- "type": "object",
7
- "properties": {
8
- "metadata": {
9
- "type": "object",
10
- "properties": {
11
- "_id": {
12
- "const": "service.base"
13
- },
14
- "_type": {
15
- "const": "service.base"
16
- },
17
- "service_name": {
18
- "type": "string"
19
- },
20
- "created_by": {
21
- "type": "string"
22
- },
23
- "configuration": {
24
- "$ref": "configuration"
25
- },
26
- "locale": {
27
- "$ref": "service.locale"
28
- },
29
- "pages": {
30
- "type": "array",
31
- "items": {
32
- "$ref": "definition.page"
33
- }
34
- }
35
- },
36
- "required": [
37
- "_id",
38
- "_type",
39
- "service_name",
40
- "created_by",
41
- "configuration",
42
- "pages"
43
- ],
44
- "additionalProperties": false
45
- }
46
- },
47
- "required": ["metadata"]
48
- }
@@ -1,13 +0,0 @@
1
- {
2
- "$id": "http://gov.uk/schema/v1.0.0/request/versions",
3
- "_name": "request.versions",
4
- "title": "Create new service version",
5
- "description": "Request schema for creating a new version of a service",
6
- "type": "object",
7
- "properties": {
8
- "metadata": {
9
- "$ref": "service.base"
10
- }
11
- },
12
- "required": ["metadata"]
13
- }