metadata_presenter 2.3.6 → 2.4.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: fde1f4b73263207626fb0693406115b7bf5d6c0e5a8f59624260cb25a3e38158
4
- data.tar.gz: 3487fe9c01196f349cc4a84020cfb43246ecce2e123b01a65c727ce296967a53
3
+ metadata.gz: e32a28102541813aa8d6576cafdaa6fb3b4897daee023f0e52d80b1c98c3266f
4
+ data.tar.gz: 2001211cd3395cff6b2dc4d4f806f7055267c0a448d4316a5da6998d1ebe5295
5
5
  SHA512:
6
- metadata.gz: 6d1e5ec205720fa0a197885e5e5a989891a4566ea9c2a1eddae179352c10a2f6060805306c403a50d007da34a80e556dc73b7b9f1c40b63363d2fd4f65bc96e1
7
- data.tar.gz: 36362beca9e5110383893160eefaafe612dada9a429acc8db94749113c3f921a84ff3581d1074b16f43d0f9bb8cdc91463b20591a8389cd28032415668d23a8a
6
+ metadata.gz: 40bbe63a448710146762e167f0abc415e39028d1e279bdf72aa989376abbae4881d56d2cfbcc065805541f6a340a39349a7d5ccb3efd9b6444b803ea5d21ebfc
7
+ data.tar.gz: 48902563f8e43de68352ce31c47d554493a4add994649c54d1933062a7cec78c7334c20debf05fea827f84dd825bf16bb1c1b34fa033733e877d964c94f3c2a2
@@ -3,6 +3,7 @@ module MetadataPresenter
3
3
  before_action :check_page_exists
4
4
 
5
5
  def create
6
+ @previous_answers = reload_user_data.deep_dup
6
7
  @page_answers = PageAnswers.new(page, answers_params)
7
8
 
8
9
  upload_files if upload?
@@ -28,8 +29,9 @@ module MetadataPresenter
28
29
  next_page = NextPage.new(
29
30
  service: service,
30
31
  session: session,
31
- user_data: load_user_data,
32
- current_page_url: page_url
32
+ user_data: reload_user_data,
33
+ current_page_url: page_url,
34
+ previous_answers: @previous_answers
33
35
  ).find
34
36
 
35
37
  if next_page.present?
@@ -5,6 +5,14 @@ module MetadataPresenter
5
5
  helper MetadataPresenter::ApplicationHelper
6
6
  default_form_builder GOVUKDesignSystemFormBuilder::FormBuilder
7
7
 
8
+ def reload_user_data
9
+ if defined? super
10
+ super
11
+ else
12
+ load_user_data
13
+ end
14
+ end
15
+
8
16
  def back_link
9
17
  previous_page = PreviousPage.new(
10
18
  service: service,
@@ -1,7 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class NextPage
3
3
  include ActiveModel::Model
4
- attr_accessor :service, :session, :user_data, :current_page_url
4
+ attr_accessor :service, :session, :user_data, :current_page_url, :previous_answers
5
5
 
6
6
  def find
7
7
  return check_answers_page if return_to_check_your_answer?
@@ -11,17 +11,53 @@ module MetadataPresenter
11
11
  else
12
12
  service.find_page_by_uuid(current_page_flow.default_next)
13
13
  end
14
+ ensure
15
+ session[:return_to_check_your_answer] = nil
14
16
  end
15
17
 
16
18
  private
17
19
 
18
20
  def check_answers_page
19
- session[:return_to_check_your_answer] = nil
20
21
  service.pages.find { |page| page.type == 'page.checkanswers' }
21
22
  end
22
23
 
23
24
  def return_to_check_your_answer?
24
- session[:return_to_check_your_answer].present?
25
+ session[:return_to_check_your_answer].present? &&
26
+ components_not_used_for_branching_and_answers_unchanged?
27
+ end
28
+
29
+ def components_not_used_for_branching_and_answers_unchanged?
30
+ components_not_used_for_branching? && answers_unchanged?
31
+ end
32
+
33
+ def components_not_used_for_branching?
34
+ expressions.none? { |expression| component_ids.include?(expression) }
35
+ end
36
+
37
+ def answers_unchanged?
38
+ components = current_page_components.select do |component|
39
+ component.uuid.in?(expressions.map(&:component))
40
+ end
41
+
42
+ components.all? do |component|
43
+ user_data[component.id] == previous_answers[component.id]
44
+ end
45
+ end
46
+
47
+ def component_ids
48
+ current_page_components.map(&:id)
49
+ end
50
+
51
+ def current_page_components
52
+ current_page.components
53
+ end
54
+
55
+ def expressions
56
+ collection = service.branches.map do |branch|
57
+ branch.conditionals.map(&:expressions)
58
+ end
59
+
60
+ collection.flatten
25
61
  end
26
62
 
27
63
  def conditionals?
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.3.6'.freeze
2
+ VERSION = '2.4.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.3.6
4
+ version: 2.4.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-09-02 00:00:00.000000000 Z
11
+ date: 2021-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder