defra_ruby_validators 2.5.0 → 2.5.1
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/lib/defra_ruby/validators/companies_house_number_validator.rb +2 -1
- data/lib/defra_ruby/validators/version.rb +1 -1
- metadata +22 -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: 3a8cefa4eee1eb9fcc363935f64760eb88aafd35d29ac09cfd3663105aafa3eb
|
4
|
+
data.tar.gz: 0dbc80e1d0c36fc4452257e6ade5377d83f04b860f9ec0375975526aca43f961
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0417b991688a935460cbd8e96d28dd8d1496838d7aa5d56420f9a0e5ac701d652b278657a1a733c905e1f3b8ae6880e659b58071e90673af351224c9a3445ed2
|
7
|
+
data.tar.gz: 88fb21c5eb3ca1cc365ce4b52aeb8171540ec1cc5776b32cab5122fccb978215f46ea92ff13ceedde13fedd4b700d8f757a74db50f08e4e0e45e049c6ab2dfde
|
@@ -31,7 +31,8 @@ module DefraRuby
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def format_is_valid?(record, attribute, value)
|
34
|
-
|
34
|
+
# All-zero values are invalid, despite matching the main regex
|
35
|
+
return true if value.match?(VALID_COMPANIES_HOUSE_REGISTRATION_NUMBER_REGEX) && !value.match(/^0+$/)
|
35
36
|
|
36
37
|
add_validation_error(record, attribute, :invalid_format)
|
37
38
|
false
|
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.1
|
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-05 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
|
@@ -249,40 +151,13 @@ files:
|
|
249
151
|
- lib/defra_ruby/validators/true_false_validator.rb
|
250
152
|
- lib/defra_ruby/validators/version.rb
|
251
153
|
- 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
154
|
homepage: https://github.com/DEFRA/defra-ruby-validators
|
281
155
|
licenses:
|
282
156
|
- The Open Government Licence (OGL) Version 3
|
283
157
|
metadata:
|
284
158
|
allowed_push_host: https://rubygems.org
|
285
|
-
|
159
|
+
rubygems_mfa_required: 'true'
|
160
|
+
post_install_message:
|
286
161
|
rdoc_options: []
|
287
162
|
require_paths:
|
288
163
|
- lib
|
@@ -290,43 +165,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
290
165
|
requirements:
|
291
166
|
- - ">="
|
292
167
|
- !ruby/object:Gem::Version
|
293
|
-
version: '
|
168
|
+
version: '3.1'
|
294
169
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
295
170
|
requirements:
|
296
171
|
- - ">="
|
297
172
|
- !ruby/object:Gem::Version
|
298
173
|
version: '0'
|
299
174
|
requirements: []
|
300
|
-
rubygems_version: 3.
|
301
|
-
signing_key:
|
175
|
+
rubygems_version: 3.3.7
|
176
|
+
signing_key:
|
302
177
|
specification_version: 4
|
303
178
|
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
|
179
|
+
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
|
@@ -1,98 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "webmock/rspec"
|
4
|
-
|
5
|
-
RSpec.describe DefraRuby::Validators::CompaniesHouseService do
|
6
|
-
let(:host) { "https://api.companieshouse.gov.uk/" }
|
7
|
-
|
8
|
-
describe "#status" do
|
9
|
-
let(:subject) { described_class.new("09360070") }
|
10
|
-
|
11
|
-
context "when the company_no is for an active company" do
|
12
|
-
before do
|
13
|
-
expected_body = { "company_status": "active", "type": "ltd" }
|
14
|
-
|
15
|
-
stub_request(:any, /.*#{host}.*/).to_return(
|
16
|
-
status: 200,
|
17
|
-
body: expected_body.to_json
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "returns :active" do
|
22
|
-
expect(subject.status).to eq(:active)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "when the company_no is not found" do
|
27
|
-
before do
|
28
|
-
stub_request(:any, /.*#{host}.*/).to_return(
|
29
|
-
status: 404
|
30
|
-
)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "returns :not_found" do
|
34
|
-
expect(subject.status).to eq(:not_found)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "when the company_no is inactive" do
|
39
|
-
before do
|
40
|
-
expected_body = { "company_status": "dissolved", "type": "ltd" }
|
41
|
-
|
42
|
-
stub_request(:any, /.*#{host}.*/).to_return(
|
43
|
-
status: 200,
|
44
|
-
body: expected_body.to_json
|
45
|
-
)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "returns :inactive" do
|
49
|
-
expect(subject.status).to eq(:inactive)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context "checking the company_type" do
|
54
|
-
let(:subject) { described_class.new("09360070", "llp") }
|
55
|
-
|
56
|
-
context "when the company_no is for a LLP" do
|
57
|
-
before do
|
58
|
-
stub_request(:any, /.*#{host}.*/).to_return(
|
59
|
-
status: 200,
|
60
|
-
body: expected_body.to_json
|
61
|
-
)
|
62
|
-
end
|
63
|
-
|
64
|
-
let(:expected_body) { { "company_status": "active", "type": "llp" } }
|
65
|
-
|
66
|
-
it "returns :active" do
|
67
|
-
expect(subject.status).to eq(:active)
|
68
|
-
end
|
69
|
-
|
70
|
-
context "but a ltd company is found" do
|
71
|
-
let(:expected_body) { { "company_status": "active", "type": "ltd" } }
|
72
|
-
|
73
|
-
it "returns :not_found" do
|
74
|
-
expect(subject.status).to eq(:not_found)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context "when there is a problem with the Companies House API" do
|
81
|
-
context "and the request times out" do
|
82
|
-
before { stub_request(:any, /.*#{host}.*/).to_timeout }
|
83
|
-
|
84
|
-
it "raises an exception" do
|
85
|
-
expect { subject.status }.to raise_error(StandardError)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context "and request returns an error" do
|
90
|
-
before { stub_request(:any, /.*#{host}.*/).to_raise(SocketError) }
|
91
|
-
|
92
|
-
it "raises an exception" do
|
93
|
-
expect { subject.status }.to raise_error(StandardError)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
RSpec.describe DefraRuby::Validators::Configuration do
|
6
|
-
describe "ATTRIBUTES" do
|
7
|
-
it "represents the expected config settings and only those settings" do
|
8
|
-
expected_attributes = %i[
|
9
|
-
companies_house_host
|
10
|
-
companies_house_api_key
|
11
|
-
]
|
12
|
-
|
13
|
-
expect(described_class::ATTRIBUTES).to match_array(expected_attributes)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
it "sets the appropriate default config settings" do
|
18
|
-
fresh_config = described_class.new
|
19
|
-
|
20
|
-
expect(fresh_config.companies_house_host).to eq("https://api.companieshouse.gov.uk/company/")
|
21
|
-
expect(fresh_config.companies_house_api_key).to eq(nil)
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "#ensure_valid" do
|
25
|
-
before(:each) do
|
26
|
-
described_class::ATTRIBUTES.each do |attribute|
|
27
|
-
subject.public_send("#{attribute}=", "foo")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "when all of the attributes are present" do
|
32
|
-
it "does not raise an error" do
|
33
|
-
expect { subject.ensure_valid }.to_not raise_error
|
34
|
-
expect(subject.ensure_valid).to eq(true)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "when at least one of the attributes is missing" do
|
39
|
-
before(:each) do
|
40
|
-
subject.companies_house_api_key = nil
|
41
|
-
end
|
42
|
-
|
43
|
-
it "raises an error" do
|
44
|
-
message = "The following DefraRuby::Validators configuration attributes are missing: [:companies_house_api_key]"
|
45
|
-
expect { subject.ensure_valid }.to raise_error(message)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|