defra_ruby_validators 2.5.1 → 2.6.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: 3a8cefa4eee1eb9fcc363935f64760eb88aafd35d29ac09cfd3663105aafa3eb
4
- data.tar.gz: 0dbc80e1d0c36fc4452257e6ade5377d83f04b860f9ec0375975526aca43f961
3
+ metadata.gz: 2e9394d56a860bc591e8858943843bae425845124bdca40f68f90fa864e3bbc6
4
+ data.tar.gz: 259e137a79906fb23ca984322d0e7d87dfa117cd87f4b5f87df182a69fec8cd5
5
5
  SHA512:
6
- metadata.gz: 0417b991688a935460cbd8e96d28dd8d1496838d7aa5d56420f9a0e5ac701d652b278657a1a733c905e1f3b8ae6880e659b58071e90673af351224c9a3445ed2
7
- data.tar.gz: 88fb21c5eb3ca1cc365ce4b52aeb8171540ec1cc5776b32cab5122fccb978215f46ea92ff13ceedde13fedd4b700d8f757a74db50f08e4e0e45e049c6ab2dfde
6
+ metadata.gz: 5336207fa6acbb53f0c36cb3759ea3d31e507de9392e2c0081bed9160bad765de799a88b6a8b4295daa80ec534f00ab158ae606e6592d624bbd8cfa48d34c69a
7
+ data.tar.gz: c81e615d1b0337ff9e21380f80a91d50670ec5b95c950a35e346feda88822e34f0e9660f81b7e75d200b6b0fc83cff2d05af79e383b78123c7edab9fb46563e8
data/README.md CHANGED
@@ -144,6 +144,16 @@ Add it to your model or form object using
144
144
  validates :phone_number, "defra_ruby/validators/phone_number": true
145
145
  ```
146
146
 
147
+ ### Mobile phone number
148
+
149
+ This validator checks the value is present, is not too long (15 is th maximum length for any phone number), is a mobile phone number, and is in the correct format as per [E.164](https://en.wikipedia.org/wiki/E.164) (we use [phonelib](https://github.com/daddyz/phonelib) to check the format).
150
+
151
+ Add it to your model or form object using
152
+
153
+ ```ruby
154
+ validates :mobile_phone_number, "defra_ruby/validators/mobile_phone_number": true
155
+ ```
156
+
147
157
  ### Position
148
158
 
149
159
  This validator checks the value provided for 'position' i.e. someones role or title within an organisation. This is an optional field so the validator has to handle the value being blank. If it's not then it can be no longer than 70 characters and only include letters, spaces, commas, full stops, hyphens and apostrophes else it will return an error.
@@ -0,0 +1,7 @@
1
+ en:
2
+ defra_ruby:
3
+ validators:
4
+ MobilePhoneNumberValidator:
5
+ blank: "Enter a mobile phone number"
6
+ invalid_format: "Enter a valid mobile phone number"
7
+ too_long: "Check the number you entered - it should have no more than than 15 characters"
@@ -0,0 +1,6 @@
1
+ en:
2
+ defra_ruby:
3
+ validators:
4
+ PostcodeValidator:
5
+ blank: "Enter a postcode"
6
+ invalid_format: "Enter a valid postcode - there’s a mistake in that one"
@@ -9,9 +9,8 @@ module DefraRuby
9
9
  # SC534714, CE000958
10
10
  # IP00141R, IP27702R, SP02252R
11
11
  # https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/426891/uniformResourceIdentifiersCustomerGuide.pdf
12
- VALID_COMPANIES_HOUSE_REGISTRATION_NUMBER_REGEX = Regexp.new(
12
+ VALID_COMPANIES_HOUSE_REGISTRATION_NUMBER_REGEX =
13
13
  /\A(\d{8,8}$)|([a-zA-Z]{2}\d{6}$)|([a-zA-Z]{2}\d{5}[a-zA-Z]{1}$)\z/i
14
- ).freeze
15
14
 
16
15
  def validate_each(record, attribute, value)
17
16
  return false unless value_is_present?(record, attribute, value)
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "phonelib"
4
+
5
+ module DefraRuby
6
+ module Validators
7
+ class MobilePhoneNumberValidator < BaseValidator
8
+ include CanValidatePresence
9
+ include CanValidateLength
10
+
11
+ MAX_LENGTH = 15
12
+
13
+ def validate_each(record, attribute, value)
14
+ return false unless value_is_present?(record, attribute, value)
15
+ return false unless value_is_not_too_long?(record, attribute, value, MAX_LENGTH)
16
+
17
+ valid_format?(record, attribute, value)
18
+ end
19
+
20
+ private
21
+
22
+ def valid_format?(record, attribute, value)
23
+ Phonelib.default_country = "GB"
24
+ return true if Phonelib.valid?(value) && Phonelib.parse(value).type == :mobile
25
+
26
+ add_validation_error(record, attribute, :invalid_format)
27
+ false
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "uk_postcode"
4
+
5
+ module DefraRuby
6
+ module Validators
7
+ class PostcodeValidator < BaseValidator
8
+ include CanValidatePresence
9
+
10
+ def validate_each(record, attribute, value)
11
+ return false unless value_is_present?(record, attribute, value)
12
+
13
+ valid_format?(record, attribute, value)
14
+ end
15
+
16
+ private
17
+
18
+ def valid_format?(record, attribute, value)
19
+ parsed_value = UKPostcode.parse(value)
20
+ return true if (normalise(parsed_value) == normalise(value)) && parsed_value.full_valid?
21
+
22
+ add_validation_error(record, attribute, :invalid_format)
23
+ false
24
+ end
25
+
26
+ def normalise(postcode)
27
+ postcode.to_s.downcase.gsub(/\s+/, "")
28
+ end
29
+ end
30
+ end
31
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module DefraRuby
4
4
  module Validators
5
- VERSION = "2.5.1"
5
+ VERSION = "2.6.0"
6
6
  end
7
7
  end
@@ -18,7 +18,9 @@ require_relative "validators/email_validator"
18
18
  require_relative "validators/grid_reference_validator"
19
19
  require_relative "validators/location_validator"
20
20
  require_relative "validators/phone_number_validator"
21
+ require_relative "validators/mobile_phone_number_validator"
21
22
  require_relative "validators/position_validator"
23
+ require_relative "validators/postcode_validator"
22
24
  require_relative "validators/token_validator"
23
25
  require_relative "validators/true_false_validator"
24
26
  require_relative "validators/past_date_validator"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: defra_ruby_validators
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Defra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-05 00:00:00.000000000 Z
11
+ date: 2023-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: uk_postcode
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: validates_email_format_of
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -125,9 +139,11 @@ files:
125
139
  - config/locales/defra_ruby/validators/email_validator/en.yml
126
140
  - config/locales/defra_ruby/validators/grid_reference_validator/en.yml
127
141
  - config/locales/defra_ruby/validators/location_validator/en.yml
142
+ - config/locales/defra_ruby/validators/mobile_phone_number_validator/en.yml
128
143
  - config/locales/defra_ruby/validators/past_date_validator/en.yml
129
144
  - config/locales/defra_ruby/validators/phone_number_validator/en.yml
130
145
  - config/locales/defra_ruby/validators/position_validator/en.yml
146
+ - config/locales/defra_ruby/validators/postcode_validator/en.yml
131
147
  - config/locales/defra_ruby/validators/token_validator/en.yml
132
148
  - config/locales/defra_ruby/validators/true_false_validator/en.yml
133
149
  - lib/defra_ruby/validators.rb
@@ -144,9 +160,11 @@ files:
144
160
  - lib/defra_ruby/validators/engine.rb
145
161
  - lib/defra_ruby/validators/grid_reference_validator.rb
146
162
  - lib/defra_ruby/validators/location_validator.rb
163
+ - lib/defra_ruby/validators/mobile_phone_number_validator.rb
147
164
  - lib/defra_ruby/validators/past_date_validator.rb
148
165
  - lib/defra_ruby/validators/phone_number_validator.rb
149
166
  - lib/defra_ruby/validators/position_validator.rb
167
+ - lib/defra_ruby/validators/postcode_validator.rb
150
168
  - lib/defra_ruby/validators/token_validator.rb
151
169
  - lib/defra_ruby/validators/true_false_validator.rb
152
170
  - lib/defra_ruby/validators/version.rb