metadata_presenter 2.12.1 → 2.13.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: 8a349beb4173c1f6361b321a95e36a407c5f5361153403cae2fbd15ffb7b8840
4
- data.tar.gz: 8e06745f55b04f1074a5da27b77e4f9cb720b95bfb328672c14cca059e4a3003
3
+ metadata.gz: 92db6bbc2b6ecefe9836a96c3014b94cc43c48a2fb4e82152f71bea00d6b3bc4
4
+ data.tar.gz: f9a2d946f0bf343f4a20f943f2aed35d3fce8ddbc42cf28997b10f10bfa3f9ba
5
5
  SHA512:
6
- metadata.gz: 01f7f93e1b0d7a058ff856cb27ce07ec816b060e2b2299cec55be298aa046809a9e9ba82f9f770205b4fe647a8d3e046e1a0b10afad0a78fc5190e52aa28fc5f
7
- data.tar.gz: 5cb518f2fb78f26ae06d447d0d1a7a7f2b84de9b4f24057079464bdcd77945c36430c4718c49d1bc2a04ec48ab1cfb422fbfc02c952a516ca83d7cae3e29a2ff
6
+ metadata.gz: 4b94a4afee1f43a692360645775bb5555c3c722f93a5c1f2c0cb865af90e43448d5eb1bab458eb022c49d76a39348497f2946ca925afdf11fd8ed5f8749ef0f4
7
+ data.tar.gz: 10ad22eada3869215e8d7ef9e00dc578468d142b7c3d151c9ba8590ad001101570e317f1b7b1f2dd5343572608ba4e1464383f8c57acbb317aa160cd2ab85157
@@ -11,6 +11,12 @@ module MetadataPresenter
11
11
  end
12
12
  end
13
13
 
14
+ class Warning < OpenStruct
15
+ def type
16
+ 'flow.warning'
17
+ end
18
+ end
19
+
14
20
  class Grid
15
21
  include BranchDestinations
16
22
  attr_reader :start_from
@@ -37,13 +43,14 @@ module MetadataPresenter
37
43
  insert_expression_spacers
38
44
  trim_pointers unless main_flow.empty?
39
45
  trim_spacers
46
+ insert_warning if main_flow.empty?
40
47
 
41
48
  @ordered = @ordered.reject(&:empty?)
42
49
  end
43
50
 
44
51
  def ordered_flow
45
52
  @ordered_flow ||=
46
- build.flatten.reject { |obj| obj.is_a?(MetadataPresenter::Spacer) }
53
+ build.flatten.reject { |obj| obj.is_a?(MetadataPresenter::Spacer) || obj.is_a?(MetadataPresenter::Warning) }
47
54
  end
48
55
 
49
56
  def ordered_pages
@@ -263,6 +270,51 @@ module MetadataPresenter
263
270
  @ordered[column].insert(row, MetadataPresenter::Spacer.new)
264
271
  end
265
272
 
273
+ # Include a warning if a service does not have a CYA or Confirmation page in the
274
+ # main flow. The warning should always be in the first row, last column.
275
+ def insert_warning
276
+ if cya_and_confirmation_pages_not_in_service? ||
277
+ cya_and_confirmation_pages_detached?
278
+ @ordered.append([MetadataPresenter::Warning.new])
279
+ end
280
+ end
281
+
282
+ def cya_and_confirmation_pages_not_in_service?
283
+ (checkanswers_not_in_service? && confirmation_not_in_service?) ||
284
+ checkanswers_not_in_service? ||
285
+ confirmation_not_in_service?
286
+ end
287
+
288
+ def checkanswers_not_in_service?
289
+ service.checkanswers_page.blank?
290
+ end
291
+
292
+ def confirmation_not_in_service?
293
+ service.confirmation_page.blank?
294
+ end
295
+
296
+ def cya_and_confirmation_pages_detached?
297
+ (checkanswers_detached? && confirmation_detached?) ||
298
+ checkanswers_detached? ||
299
+ confirmation_detached?
300
+ end
301
+
302
+ def checkanswers_detached?
303
+ if service.checkanswers_page.present?
304
+ uuid = service.checkanswers_page.uuid
305
+ position = coordinates.position(uuid)
306
+ detached?(position)
307
+ end
308
+ end
309
+
310
+ def confirmation_detached?
311
+ if service.confirmation_page.present?
312
+ uuid = service.confirmation_page.uuid
313
+ position = coordinates.position(uuid)
314
+ detached?(position)
315
+ end
316
+ end
317
+
266
318
  # Any destinations exiting the branch that have not already been traversed.
267
319
  # This removes any branch destinations that already exist on other rows. If
268
320
  # that is the case then the arrow will flow towards whatever row that object
@@ -60,6 +60,12 @@ class MetadataPresenter::Service < MetadataPresenter::Metadata
60
60
  end
61
61
  end
62
62
 
63
+ def checkanswers_page
64
+ @checkanswers_page ||= pages.find do |page|
65
+ page.type == 'page.checkanswers'
66
+ end
67
+ end
68
+
63
69
  def meta
64
70
  MetadataPresenter::Meta.new(configuration['meta'])
65
71
  end
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.12.1'.freeze
2
+ VERSION = '2.13.0'.freeze
3
3
  end
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: 2.12.1
4
+ version: 2.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-14 00:00:00.000000000 Z
11
+ date: 2021-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder