metadata_presenter 3.3.2 → 3.3.3
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/validators/metadata_presenter/accept_validator.rb +1 -12
- data/app/validators/metadata_presenter/base_upload_validator.rb +27 -0
- data/app/validators/metadata_presenter/catch_all_validator.rb +24 -0
- data/app/validators/metadata_presenter/date_validator.rb +8 -3
- data/app/validators/metadata_presenter/max_size_validator.rb +1 -1
- data/app/validators/metadata_presenter/multiupload_validator.rb +1 -14
- data/app/validators/metadata_presenter/validate_answers.rb +12 -17
- data/app/validators/metadata_presenter/virus_scan_validator.rb +1 -1
- data/config/locales/en.yml +1 -1
- data/default_metadata/string/error.catch_all.json +6 -0
- data/lib/metadata_presenter/version.rb +1 -1
- metadata +5 -3
- data/app/validators/metadata_presenter/upload_validator.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc84786b2ed09dc03a4df7af7d096346b18bce085b4c7e9cf40d15bb0778000a
|
4
|
+
data.tar.gz: 708f4c349746f9d80dfb405860dc7b37cd6773eef9cc86c931540848b5205b5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc8b1eb03836a7a4e649e509e66018e0718ef90cedab16da9e11a9fab7412bc8a6c38f612e9c6c617641bc1a8483ea0dd21c14d53866c2d88449eeb491215cf0
|
7
|
+
data.tar.gz: 1feebdd5af39db1c9a116e5d6419bef27b6131e234fa1dfb9910952a0927fff6f87d25115c614b5a4e5597def786bdf0471e71097e03fcb6fb4ed677bfb0fa4d
|
@@ -1,18 +1,7 @@
|
|
1
1
|
module MetadataPresenter
|
2
|
-
class AcceptValidator <
|
2
|
+
class AcceptValidator < BaseUploadValidator
|
3
3
|
def error_name
|
4
4
|
'accept'
|
5
5
|
end
|
6
|
-
|
7
|
-
def error_message_hash
|
8
|
-
if component.type == 'multiupload'
|
9
|
-
{
|
10
|
-
control: page_answers.send(component.id)[component.id].last['original_filename'],
|
11
|
-
schema_key.to_sym => component.validation[schema_key]
|
12
|
-
}
|
13
|
-
else
|
14
|
-
super
|
15
|
-
end
|
16
|
-
end
|
17
6
|
end
|
18
7
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module MetadataPresenter
|
2
|
+
class BaseUploadValidator < BaseValidator
|
3
|
+
def invalid_answer?
|
4
|
+
user_answer.error_name == error_name
|
5
|
+
end
|
6
|
+
|
7
|
+
def user_answer
|
8
|
+
page_answers.uploaded_files.find do |uploaded_file|
|
9
|
+
component.id == uploaded_file.component.id
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def error_message_hash
|
14
|
+
super.merge(control:)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def control
|
20
|
+
if component.type == 'multiupload'
|
21
|
+
page_answers.send(component.id)[component.id].last['original_filename']
|
22
|
+
else
|
23
|
+
page_answers.send(component.id)['original_filename']
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module MetadataPresenter
|
2
|
+
class CatchAllValidator < BaseValidator
|
3
|
+
ERROR_NAME_PREFIX = 'error.'.freeze
|
4
|
+
|
5
|
+
# NOTE: generic errors in other components can be implemented
|
6
|
+
# by introducing new case branching if neccessary.
|
7
|
+
def invalid_answer?
|
8
|
+
case component.type
|
9
|
+
when 'upload', 'multiupload'
|
10
|
+
upload_user_answer&.error_name.to_s.start_with?(ERROR_NAME_PREFIX)
|
11
|
+
else
|
12
|
+
false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def upload_user_answer
|
19
|
+
page_answers.uploaded_files.find do |uploaded_file|
|
20
|
+
component.id == uploaded_file.component.id
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,13 +1,18 @@
|
|
1
1
|
module MetadataPresenter
|
2
2
|
class DateValidator < BaseValidator
|
3
3
|
DATE_STRING_VALIDATIONS = %w[date_after date_before].freeze
|
4
|
+
YEAR_LOWER_BOUND = 1000
|
5
|
+
YEAR_UPPER_BOUND = 3000
|
4
6
|
|
5
7
|
def invalid_answer?
|
6
|
-
Date.
|
7
|
-
|
8
|
-
'%Y-%m-%d'
|
8
|
+
date = Date.civil(
|
9
|
+
user_answer.year.to_i, user_answer.month.to_i, user_answer.day.to_i
|
9
10
|
)
|
10
11
|
|
12
|
+
# additional validations that `#civil` will not raise as errors
|
13
|
+
return true if date.year < YEAR_LOWER_BOUND
|
14
|
+
return true if date.year > YEAR_UPPER_BOUND
|
15
|
+
|
11
16
|
false
|
12
17
|
rescue Date::Error
|
13
18
|
true
|
@@ -1,22 +1,9 @@
|
|
1
1
|
module MetadataPresenter
|
2
|
-
class MultiuploadValidator <
|
2
|
+
class MultiuploadValidator < BaseUploadValidator
|
3
3
|
def invalid_answer?
|
4
4
|
user_answer.errors.any? { |error| error.attribute.to_s == error_name }
|
5
5
|
end
|
6
6
|
|
7
|
-
def user_answer
|
8
|
-
page_answers.uploaded_files.find do |uploaded_file|
|
9
|
-
component.id == uploaded_file.component.id
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def error_message_hash
|
14
|
-
{
|
15
|
-
control: page_answers.send(component.id)[component.id].last['original_filename'],
|
16
|
-
schema_key.to_sym => component.validation[schema_key]
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
7
|
def error_name
|
21
8
|
'invalid.multiupload'
|
22
9
|
end
|
@@ -21,29 +21,24 @@ module MetadataPresenter
|
|
21
21
|
def validators
|
22
22
|
components.map { |component|
|
23
23
|
component_validations(component).map do |key|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
)
|
31
|
-
else
|
32
|
-
"MetadataPresenter::#{key.classify}Validator".constantize.new(
|
33
|
-
**{
|
34
|
-
page_answers:,
|
35
|
-
component:
|
36
|
-
}.merge(autocomplete_param(key))
|
37
|
-
)
|
38
|
-
end
|
24
|
+
"MetadataPresenter::#{key.camelize}Validator".constantize.new(
|
25
|
+
**{
|
26
|
+
page_answers:,
|
27
|
+
component:
|
28
|
+
}.merge(autocomplete_param(key))
|
29
|
+
)
|
39
30
|
end
|
40
|
-
}.compact
|
31
|
+
}.flatten.compact
|
41
32
|
end
|
42
33
|
|
43
34
|
def component_validations(component)
|
44
35
|
return [] if component.validation.blank?
|
45
36
|
|
46
|
-
component.validation.
|
37
|
+
component.validation.compact_blank.keys + additional_validators
|
38
|
+
end
|
39
|
+
|
40
|
+
def additional_validators
|
41
|
+
%w[catch_all].freeze
|
47
42
|
end
|
48
43
|
|
49
44
|
def autocomplete_param(key)
|
data/config/locales/en.yml
CHANGED
@@ -115,7 +115,7 @@ en:
|
|
115
115
|
continue: 'Continue'
|
116
116
|
progress:
|
117
117
|
heading: '%{service_name}'
|
118
|
-
content_1: 'You have
|
118
|
+
content_1: 'You have successfully retrieved your saved information.'
|
119
119
|
content_2: 'Here are the answers you have provided so far.'
|
120
120
|
continue: 'Continue'
|
121
121
|
footer:
|
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: 3.3.
|
4
|
+
version: 3.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MoJ Forms
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: govuk_design_system_formbuilder
|
@@ -373,7 +373,9 @@ files:
|
|
373
373
|
- app/validators/email_confirmation_validator.rb
|
374
374
|
- app/validators/metadata_presenter/accept_validator.rb
|
375
375
|
- app/validators/metadata_presenter/autocomplete_validator.rb
|
376
|
+
- app/validators/metadata_presenter/base_upload_validator.rb
|
376
377
|
- app/validators/metadata_presenter/base_validator.rb
|
378
|
+
- app/validators/metadata_presenter/catch_all_validator.rb
|
377
379
|
- app/validators/metadata_presenter/date_after_validator.rb
|
378
380
|
- app/validators/metadata_presenter/date_before_validator.rb
|
379
381
|
- app/validators/metadata_presenter/date_validator.rb
|
@@ -389,7 +391,6 @@ files:
|
|
389
391
|
- app/validators/metadata_presenter/multiupload_validator.rb
|
390
392
|
- app/validators/metadata_presenter/number_validator.rb
|
391
393
|
- app/validators/metadata_presenter/required_validator.rb
|
392
|
-
- app/validators/metadata_presenter/upload_validator.rb
|
393
394
|
- app/validators/metadata_presenter/validate_answers.rb
|
394
395
|
- app/validators/metadata_presenter/validate_schema.rb
|
395
396
|
- app/validators/metadata_presenter/virus_scan_validator.rb
|
@@ -490,6 +491,7 @@ files:
|
|
490
491
|
- default_metadata/service/base.json
|
491
492
|
- default_metadata/string/error.accept.json
|
492
493
|
- default_metadata/string/error.autocomplete.json
|
494
|
+
- default_metadata/string/error.catch_all.json
|
493
495
|
- default_metadata/string/error.date.json
|
494
496
|
- default_metadata/string/error.date_after.json
|
495
497
|
- default_metadata/string/error.date_before.json
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module MetadataPresenter
|
2
|
-
class UploadValidator < BaseValidator
|
3
|
-
def invalid_answer?
|
4
|
-
user_answer.error_name == error_name
|
5
|
-
end
|
6
|
-
|
7
|
-
def user_answer
|
8
|
-
page_answers.uploaded_files.find do |uploaded_file|
|
9
|
-
component.id == uploaded_file.component.id
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def error_message_hash
|
14
|
-
{
|
15
|
-
control: page_answers.send(component.id)['original_filename'],
|
16
|
-
schema_key.to_sym => component.validation[schema_key]
|
17
|
-
}
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|