defra_ruby_validators 2.5.0 → 2.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -0
- data/config/locales/defra_ruby/validators/mobile_phone_number_validator/en.yml +7 -0
- data/lib/defra_ruby/validators/companies_house_number_validator.rb +3 -3
- data/lib/defra_ruby/validators/mobile_phone_number_validator.rb +32 -0
- data/lib/defra_ruby/validators/version.rb +1 -1
- data/lib/defra_ruby/validators.rb +1 -0
- metadata +24 -175
- data/spec/defra_ruby/validators/business_type_validator_spec.rb +0 -56
- data/spec/defra_ruby/validators/companies_house_number_validator_spec.rb +0 -124
- data/spec/defra_ruby/validators/companies_house_service_spec.rb +0 -98
- data/spec/defra_ruby/validators/configuration_spec.rb +0 -49
- data/spec/defra_ruby/validators/email_validator_spec.rb +0 -46
- data/spec/defra_ruby/validators/grid_reference_validator_spec.rb +0 -57
- data/spec/defra_ruby/validators/location_validator_spec.rb +0 -56
- data/spec/defra_ruby/validators/past_date_validator_spec.rb +0 -35
- data/spec/defra_ruby/validators/phone_number_validator_spec.rb +0 -59
- data/spec/defra_ruby/validators/position_validator_spec.rb +0 -47
- data/spec/defra_ruby/validators/token_validator_spec.rb +0 -45
- data/spec/defra_ruby/validators/true_false_validator_spec.rb +0 -37
- data/spec/defra_ruby/validators_spec.rb +0 -12
- data/spec/examples.txt +0 -189
- data/spec/spec_helper.rb +0 -87
- data/spec/support/defra_ruby_validators.rb +0 -16
- data/spec/support/helpers/text_generator.rb +0 -17
- data/spec/support/helpers/translator.rb +0 -15
- data/spec/support/i18n.rb +0 -8
- data/spec/support/pry.rb +0 -7
- data/spec/support/shared_examples/validators/characters_validator.rb +0 -29
- data/spec/support/shared_examples/validators/invalid_record.rb +0 -29
- data/spec/support/shared_examples/validators/length_validator.rb +0 -29
- data/spec/support/shared_examples/validators/presence_validator.rb +0 -29
- data/spec/support/shared_examples/validators/selection_validator.rb +0 -40
- data/spec/support/shared_examples/validators/valid_record.rb +0 -12
- data/spec/support/shared_examples/validators/validator.rb +0 -8
- data/spec/support/simplecov.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54f780cf89fcc1888cd3b9af95707c6e3ac2a0d0dcd1e304ab6d9b2933b69ef9
|
4
|
+
data.tar.gz: 895551a30493fb79367289728c28e7e09873c1c6def93e685c70f7076b67f46c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '07863b0bde9327c8384a93b8e1c681b02ef7fedce040a36d4f17aa9435a4783e4db51fcf41a29469ea3b6d9599324b89f8ab5c3c830040b563894db33449d8e9'
|
7
|
+
data.tar.gz: 4e07b525aae83437d5ad450e4e3989f402caf04346efc130543440a41084e2a4ecc48168894f88e261fc66c269aa48389282dedd17b2031ce0a889924b99720c
|
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.
|
@@ -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 =
|
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)
|
@@ -31,7 +30,8 @@ module DefraRuby
|
|
31
30
|
end
|
32
31
|
|
33
32
|
def format_is_valid?(record, attribute, value)
|
34
|
-
|
33
|
+
# All-zero values are invalid, despite matching the main regex
|
34
|
+
return true if value.match?(VALID_COMPANIES_HOUSE_REGISTRATION_NUMBER_REGEX) && !value.match(/^0+$/)
|
35
35
|
|
36
36
|
add_validation_error(record, attribute, :invalid_format)
|
37
37
|
false
|
@@ -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
|
@@ -18,6 +18,7 @@ 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"
|
22
23
|
require_relative "validators/token_validator"
|
23
24
|
require_relative "validators/true_false_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.
|
4
|
+
version: 2.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Defra
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: i18n
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: matrix
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,21 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '2.0'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '2.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: validates_email_format_of
|
56
|
+
name: os_map_ref
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - ">="
|
@@ -81,55 +67,13 @@ dependencies:
|
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: dotenv
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: github_changelog_generator
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: i18n
|
70
|
+
name: phonelib
|
127
71
|
requirement: !ruby/object:Gem::Requirement
|
128
72
|
requirements:
|
129
73
|
- - ">="
|
130
74
|
- !ruby/object:Gem::Version
|
131
75
|
version: '0'
|
132
|
-
type: :
|
76
|
+
type: :runtime
|
133
77
|
prerelease: false
|
134
78
|
version_requirements: !ruby/object:Gem::Requirement
|
135
79
|
requirements:
|
@@ -137,75 +81,33 @@ dependencies:
|
|
137
81
|
- !ruby/object:Gem::Version
|
138
82
|
version: '0'
|
139
83
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
84
|
+
name: rest-client
|
141
85
|
requirement: !ruby/object:Gem::Requirement
|
142
86
|
requirements:
|
143
|
-
- - "
|
87
|
+
- - "~>"
|
144
88
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :
|
89
|
+
version: '2.0'
|
90
|
+
type: :runtime
|
147
91
|
prerelease: false
|
148
92
|
version_requirements: !ruby/object:Gem::Requirement
|
149
93
|
requirements:
|
150
|
-
- - "
|
94
|
+
- - "~>"
|
151
95
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
96
|
+
version: '2.0'
|
153
97
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
98
|
+
name: validates_email_format_of
|
155
99
|
requirement: !ruby/object:Gem::Requirement
|
156
100
|
requirements:
|
157
101
|
- - ">="
|
158
102
|
- !ruby/object:Gem::Version
|
159
103
|
version: '0'
|
160
|
-
type: :
|
104
|
+
type: :runtime
|
161
105
|
prerelease: false
|
162
106
|
version_requirements: !ruby/object:Gem::Requirement
|
163
107
|
requirements:
|
164
108
|
- - ">="
|
165
109
|
- !ruby/object:Gem::Version
|
166
110
|
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: rspec
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '3.0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '3.0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: simplecov
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: 0.17.1
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: 0.17.1
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: webmock
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '3.4'
|
202
|
-
type: :development
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - "~>"
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: '3.4'
|
209
111
|
description: Package of validations commonly used in Defra Rails based digital services
|
210
112
|
email:
|
211
113
|
- alan.cruikshanks@environment-agency.gov.uk
|
@@ -223,6 +125,7 @@ files:
|
|
223
125
|
- config/locales/defra_ruby/validators/email_validator/en.yml
|
224
126
|
- config/locales/defra_ruby/validators/grid_reference_validator/en.yml
|
225
127
|
- config/locales/defra_ruby/validators/location_validator/en.yml
|
128
|
+
- config/locales/defra_ruby/validators/mobile_phone_number_validator/en.yml
|
226
129
|
- config/locales/defra_ruby/validators/past_date_validator/en.yml
|
227
130
|
- config/locales/defra_ruby/validators/phone_number_validator/en.yml
|
228
131
|
- config/locales/defra_ruby/validators/position_validator/en.yml
|
@@ -242,6 +145,7 @@ files:
|
|
242
145
|
- lib/defra_ruby/validators/engine.rb
|
243
146
|
- lib/defra_ruby/validators/grid_reference_validator.rb
|
244
147
|
- lib/defra_ruby/validators/location_validator.rb
|
148
|
+
- lib/defra_ruby/validators/mobile_phone_number_validator.rb
|
245
149
|
- lib/defra_ruby/validators/past_date_validator.rb
|
246
150
|
- lib/defra_ruby/validators/phone_number_validator.rb
|
247
151
|
- lib/defra_ruby/validators/position_validator.rb
|
@@ -249,40 +153,13 @@ files:
|
|
249
153
|
- lib/defra_ruby/validators/true_false_validator.rb
|
250
154
|
- lib/defra_ruby/validators/version.rb
|
251
155
|
- lib/defra_ruby_validators.rb
|
252
|
-
- spec/defra_ruby/validators/business_type_validator_spec.rb
|
253
|
-
- spec/defra_ruby/validators/companies_house_number_validator_spec.rb
|
254
|
-
- spec/defra_ruby/validators/companies_house_service_spec.rb
|
255
|
-
- spec/defra_ruby/validators/configuration_spec.rb
|
256
|
-
- spec/defra_ruby/validators/email_validator_spec.rb
|
257
|
-
- spec/defra_ruby/validators/grid_reference_validator_spec.rb
|
258
|
-
- spec/defra_ruby/validators/location_validator_spec.rb
|
259
|
-
- spec/defra_ruby/validators/past_date_validator_spec.rb
|
260
|
-
- spec/defra_ruby/validators/phone_number_validator_spec.rb
|
261
|
-
- spec/defra_ruby/validators/position_validator_spec.rb
|
262
|
-
- spec/defra_ruby/validators/token_validator_spec.rb
|
263
|
-
- spec/defra_ruby/validators/true_false_validator_spec.rb
|
264
|
-
- spec/defra_ruby/validators_spec.rb
|
265
|
-
- spec/examples.txt
|
266
|
-
- spec/spec_helper.rb
|
267
|
-
- spec/support/defra_ruby_validators.rb
|
268
|
-
- spec/support/helpers/text_generator.rb
|
269
|
-
- spec/support/helpers/translator.rb
|
270
|
-
- spec/support/i18n.rb
|
271
|
-
- spec/support/pry.rb
|
272
|
-
- spec/support/shared_examples/validators/characters_validator.rb
|
273
|
-
- spec/support/shared_examples/validators/invalid_record.rb
|
274
|
-
- spec/support/shared_examples/validators/length_validator.rb
|
275
|
-
- spec/support/shared_examples/validators/presence_validator.rb
|
276
|
-
- spec/support/shared_examples/validators/selection_validator.rb
|
277
|
-
- spec/support/shared_examples/validators/valid_record.rb
|
278
|
-
- spec/support/shared_examples/validators/validator.rb
|
279
|
-
- spec/support/simplecov.rb
|
280
156
|
homepage: https://github.com/DEFRA/defra-ruby-validators
|
281
157
|
licenses:
|
282
158
|
- The Open Government Licence (OGL) Version 3
|
283
159
|
metadata:
|
284
160
|
allowed_push_host: https://rubygems.org
|
285
|
-
|
161
|
+
rubygems_mfa_required: 'true'
|
162
|
+
post_install_message:
|
286
163
|
rdoc_options: []
|
287
164
|
require_paths:
|
288
165
|
- lib
|
@@ -290,43 +167,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
290
167
|
requirements:
|
291
168
|
- - ">="
|
292
169
|
- !ruby/object:Gem::Version
|
293
|
-
version: '
|
170
|
+
version: '3.1'
|
294
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
295
172
|
requirements:
|
296
173
|
- - ">="
|
297
174
|
- !ruby/object:Gem::Version
|
298
175
|
version: '0'
|
299
176
|
requirements: []
|
300
|
-
rubygems_version: 3.
|
301
|
-
signing_key:
|
177
|
+
rubygems_version: 3.3.7
|
178
|
+
signing_key:
|
302
179
|
specification_version: 4
|
303
180
|
summary: Defra ruby on rails validations
|
304
|
-
test_files:
|
305
|
-
- spec/spec_helper.rb
|
306
|
-
- spec/defra_ruby/validators_spec.rb
|
307
|
-
- spec/defra_ruby/validators/past_date_validator_spec.rb
|
308
|
-
- spec/defra_ruby/validators/companies_house_service_spec.rb
|
309
|
-
- spec/defra_ruby/validators/configuration_spec.rb
|
310
|
-
- spec/defra_ruby/validators/phone_number_validator_spec.rb
|
311
|
-
- spec/defra_ruby/validators/position_validator_spec.rb
|
312
|
-
- spec/defra_ruby/validators/grid_reference_validator_spec.rb
|
313
|
-
- spec/defra_ruby/validators/business_type_validator_spec.rb
|
314
|
-
- spec/defra_ruby/validators/companies_house_number_validator_spec.rb
|
315
|
-
- spec/defra_ruby/validators/token_validator_spec.rb
|
316
|
-
- spec/defra_ruby/validators/true_false_validator_spec.rb
|
317
|
-
- spec/defra_ruby/validators/location_validator_spec.rb
|
318
|
-
- spec/defra_ruby/validators/email_validator_spec.rb
|
319
|
-
- spec/examples.txt
|
320
|
-
- spec/support/simplecov.rb
|
321
|
-
- spec/support/i18n.rb
|
322
|
-
- spec/support/pry.rb
|
323
|
-
- spec/support/defra_ruby_validators.rb
|
324
|
-
- spec/support/helpers/translator.rb
|
325
|
-
- spec/support/helpers/text_generator.rb
|
326
|
-
- spec/support/shared_examples/validators/selection_validator.rb
|
327
|
-
- spec/support/shared_examples/validators/invalid_record.rb
|
328
|
-
- spec/support/shared_examples/validators/presence_validator.rb
|
329
|
-
- spec/support/shared_examples/validators/characters_validator.rb
|
330
|
-
- spec/support/shared_examples/validators/length_validator.rb
|
331
|
-
- spec/support/shared_examples/validators/valid_record.rb
|
332
|
-
- spec/support/shared_examples/validators/validator.rb
|
181
|
+
test_files: []
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
module Test
|
6
|
-
BusinessTypeValidatable = Struct.new(:business_type) do
|
7
|
-
include ActiveModel::Validations
|
8
|
-
|
9
|
-
validates :business_type, "defra_ruby/validators/business_type": true
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
module DefraRuby
|
14
|
-
module Validators
|
15
|
-
RSpec.describe BusinessTypeValidator do
|
16
|
-
|
17
|
-
valid_type = %w[soleTrader limitedCompany partnership limitedLiabilityPartnership localAuthority charity].sample
|
18
|
-
invalid_type = "coven"
|
19
|
-
|
20
|
-
it_behaves_like("a validator")
|
21
|
-
it_behaves_like(
|
22
|
-
"a selection validator",
|
23
|
-
BusinessTypeValidator,
|
24
|
-
Test::BusinessTypeValidatable,
|
25
|
-
:business_type,
|
26
|
-
valid: valid_type, invalid: invalid_type
|
27
|
-
)
|
28
|
-
|
29
|
-
context "when the value is overseas" do
|
30
|
-
validatable = Test::BusinessTypeValidatable.new("overseas")
|
31
|
-
|
32
|
-
context "when overseas_allowed is enabled" do
|
33
|
-
before do
|
34
|
-
allow_any_instance_of(DefraRuby::Validators::BaseValidator).to receive(:options).and_return(allow_overseas: true)
|
35
|
-
end
|
36
|
-
|
37
|
-
it_behaves_like "a valid record", validatable
|
38
|
-
end
|
39
|
-
|
40
|
-
context "when overseas_allowed is not enabled" do
|
41
|
-
before do
|
42
|
-
allow_any_instance_of(DefraRuby::Validators::BaseValidator).to receive(:options).and_return({})
|
43
|
-
end
|
44
|
-
|
45
|
-
error_message = Helpers::Translator.error_message(BusinessTypeValidator, :inclusion)
|
46
|
-
|
47
|
-
it_behaves_like "an invalid record",
|
48
|
-
validatable: validatable,
|
49
|
-
attribute: :business_type,
|
50
|
-
error: :inclusion,
|
51
|
-
error_message: error_message
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,124 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
module Test
|
6
|
-
CompaniesHouseNumberValidatable = Struct.new(:company_no) do
|
7
|
-
include ActiveModel::Validations
|
8
|
-
|
9
|
-
validates :company_no, "defra_ruby/validators/companies_house_number": true
|
10
|
-
end
|
11
|
-
|
12
|
-
CompaniesHouseCompanyTypeAndNumberValidatable = Struct.new(:company_no) do
|
13
|
-
include ActiveModel::Validations
|
14
|
-
|
15
|
-
validates :company_no, "defra_ruby/validators/companies_house_number": { company_type: "ltd" }
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module DefraRuby
|
20
|
-
module Validators
|
21
|
-
RSpec.describe CompaniesHouseNumberValidator do
|
22
|
-
|
23
|
-
valid_numbers = %w[10997904 09764739 SC534714 IP00141R]
|
24
|
-
invalid_format_number = "foobar42"
|
25
|
-
unknown_number = "99999999"
|
26
|
-
inactive_number = "07281919"
|
27
|
-
|
28
|
-
it_behaves_like "a validator"
|
29
|
-
|
30
|
-
describe "#validate_each" do
|
31
|
-
context "when given a valid company number" do
|
32
|
-
before do
|
33
|
-
allow_any_instance_of(CompaniesHouseService).to receive(:status).and_return(:active)
|
34
|
-
end
|
35
|
-
|
36
|
-
valid_numbers.each do |company_no|
|
37
|
-
context "like #{company_no}" do
|
38
|
-
it_behaves_like "a valid record", Test::CompaniesHouseNumberValidatable.new(company_no)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "when given an invalid company number" do
|
44
|
-
context "because it is blank" do
|
45
|
-
validatable = Test::CompaniesHouseNumberValidatable.new
|
46
|
-
error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :blank)
|
47
|
-
|
48
|
-
it_behaves_like "an invalid record",
|
49
|
-
validatable: validatable,
|
50
|
-
attribute: :company_no,
|
51
|
-
error: :blank,
|
52
|
-
error_message: error_message
|
53
|
-
end
|
54
|
-
|
55
|
-
context "because the format is wrong" do
|
56
|
-
validatable = Test::CompaniesHouseNumberValidatable.new(invalid_format_number)
|
57
|
-
error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :invalid_format)
|
58
|
-
|
59
|
-
it_behaves_like "an invalid record",
|
60
|
-
validatable: validatable,
|
61
|
-
attribute: :company_no,
|
62
|
-
error: :invalid_format,
|
63
|
-
error_message: error_message
|
64
|
-
end
|
65
|
-
|
66
|
-
context "because it's not found on companies house" do
|
67
|
-
before do
|
68
|
-
allow_any_instance_of(CompaniesHouseService).to receive(:status).and_return(:not_found)
|
69
|
-
end
|
70
|
-
|
71
|
-
validatable = Test::CompaniesHouseNumberValidatable.new(unknown_number)
|
72
|
-
error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :not_found)
|
73
|
-
|
74
|
-
it_behaves_like "an invalid record",
|
75
|
-
validatable: validatable,
|
76
|
-
attribute: :company_no,
|
77
|
-
error: :not_found,
|
78
|
-
error_message: error_message
|
79
|
-
end
|
80
|
-
|
81
|
-
context "because it's not 'active' on companies house" do
|
82
|
-
before do
|
83
|
-
allow_any_instance_of(CompaniesHouseService).to receive(:status).and_return(:inactive)
|
84
|
-
end
|
85
|
-
|
86
|
-
validatable = Test::CompaniesHouseNumberValidatable.new(inactive_number)
|
87
|
-
error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :inactive)
|
88
|
-
|
89
|
-
it_behaves_like "an invalid record",
|
90
|
-
validatable: validatable,
|
91
|
-
attribute: :company_no,
|
92
|
-
error: :inactive,
|
93
|
-
error_message: error_message
|
94
|
-
end
|
95
|
-
|
96
|
-
context "with a company_type option" do
|
97
|
-
let(:company_no) { valid_numbers.first }
|
98
|
-
|
99
|
-
it "calls the companies house service with the `ltd` param" do
|
100
|
-
expect(CompaniesHouseService).to receive(:new).with(company_no, "ltd")
|
101
|
-
|
102
|
-
Test::CompaniesHouseCompanyTypeAndNumberValidatable.new(company_no).valid?
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
context "when there is an error connecting with companies house" do
|
108
|
-
before do
|
109
|
-
allow_any_instance_of(CompaniesHouseService).to receive(:status).and_raise(StandardError)
|
110
|
-
end
|
111
|
-
|
112
|
-
validatable = Test::CompaniesHouseNumberValidatable.new(valid_numbers.sample)
|
113
|
-
error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :error)
|
114
|
-
|
115
|
-
it_behaves_like "an invalid record",
|
116
|
-
validatable: validatable,
|
117
|
-
attribute: :company_no,
|
118
|
-
error: :error,
|
119
|
-
error_message: error_message
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|