defra_ruby_validators 1.0.0 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a6c04c81d7df4234ebf4905a40680e9f27be96b
4
- data.tar.gz: 42b56455e1072d95b796c8403453326ce6d6ab85
3
+ metadata.gz: 9e898f7ee267a5ce4074c4f7c4c04284f3119732
4
+ data.tar.gz: fd9c073dc217d74a6468bc25261f6d9338bc24c6
5
5
  SHA512:
6
- metadata.gz: f3464caf2e33d2a4dea606ad62728e82becb0416b4122728759e9f7973a877e7d19fcb7957dd175ac5302166ab189a616707b8d25e042f30664b0c9b068ac73a
7
- data.tar.gz: 8c55a4ffba3ba440ecbefb37cb9de61b654373ea436c07f9c34841440437ba4105f90171b7058472f83b4376ef7e78fc92d40c8d26fd0c2fb88edc9b3561b545
6
+ metadata.gz: d97d8bd20be2314faa28da05224288eb90533113b419d6df3f4d1b0801a9a7f76ddd8e34a3df87b4f7dba7580317e55e315176c5aff38152007d502d49b69d2d
7
+ data.tar.gz: 29e0b534deb7e2801ec556c47488846e5be7edaa0f28b80e7433edf3ae69a858504d3f9158084bddd3946b97e5d28aa7b1630853c36f855565337f6f9b422195
data/README.md CHANGED
@@ -48,6 +48,16 @@ Add it to your model or form object using
48
48
  validates :company_no, "defra_ruby/validators/companies_house_number": true
49
49
  ```
50
50
 
51
+ ### True or false
52
+
53
+ This validator checks the value provided is either `"true"` or `"false"`. If blank or not one of these it will return an error.
54
+
55
+ Add it to your model or form object using
56
+
57
+ ```ruby
58
+ validates :company_no, "defra_ruby/validators/true_false": true
59
+ ```
60
+
51
61
  ## Contributing to this project
52
62
 
53
63
  If you have an idea you'd like to contribute please log an issue.
@@ -0,0 +1,5 @@
1
+ en:
2
+ defra_ruby:
3
+ validators:
4
+ TrueFalseValidator:
5
+ inclusion: "You must answer this question"
@@ -6,8 +6,11 @@ require_relative "validators/version"
6
6
  require_relative "validators/configuration"
7
7
  require_relative "validators/companies_house_service"
8
8
 
9
+ require_relative "validators/concerns/can_validate_selection"
10
+
9
11
  require_relative "validators/base_validator"
10
12
  require_relative "validators/companies_house_number_validator"
13
+ require_relative "validators/true_false_validator"
11
14
 
12
15
  module DefraRuby
13
16
  module Validators
@@ -6,8 +6,10 @@ module DefraRuby
6
6
 
7
7
  protected
8
8
 
9
- def error_message(attribute, error)
10
- I18n.t("defra_ruby.validators.#{class_name}.#{attribute}.#{error}")
9
+ def error_message(attribute: nil, error:)
10
+ return I18n.t("defra_ruby.validators.#{class_name}.#{attribute}.#{error}") if attribute
11
+
12
+ I18n.t("defra_ruby.validators.#{class_name}.#{error}")
11
13
  end
12
14
 
13
15
  private
@@ -25,14 +25,14 @@ module DefraRuby
25
25
  def value_is_present?(record, attribute, value)
26
26
  return true if value.present?
27
27
 
28
- record.errors[attribute] << error_message(attribute, "blank")
28
+ record.errors[attribute] << error_message(attribute: attribute, error: "blank")
29
29
  false
30
30
  end
31
31
 
32
32
  def format_is_valid?(record, attribute, value)
33
33
  return true if value.match?(VALID_COMPANIES_HOUSE_REGISTRATION_NUMBER_REGEX)
34
34
 
35
- record.errors[attribute] << error_message(attribute, "invalid")
35
+ record.errors[attribute] << error_message(attribute: attribute, error: "invalid")
36
36
  false
37
37
  end
38
38
 
@@ -41,12 +41,12 @@ module DefraRuby
41
41
  when :active
42
42
  true
43
43
  when :inactive
44
- record.errors[attribute] << error_message(attribute, "inactive")
44
+ record.errors[attribute] << error_message(attribute: attribute, error: "inactive")
45
45
  when :not_found
46
- record.errors[attribute] << error_message(attribute, "not_found")
46
+ record.errors[attribute] << error_message(attribute: attribute, error: "not_found")
47
47
  end
48
48
  rescue StandardError
49
- record.errors[attribute] << error_message(attribute, "error")
49
+ record.errors[attribute] << error_message(attribute: attribute, error: "error")
50
50
  end
51
51
 
52
52
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DefraRuby
4
+ module Validators
5
+ module CanValidateSelection
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ private
10
+
11
+ def value_is_included?(record, attribute, value, valid_options)
12
+ return true if value.present? && valid_options.include?(value)
13
+
14
+ record.errors[attribute] << error_message(error: "inclusion")
15
+ false
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DefraRuby
4
+ module Validators
5
+ class TrueFalseValidator < BaseValidator
6
+ include CanValidateSelection
7
+
8
+ def validate_each(record, attribute, value)
9
+ valid_options = %w[true false]
10
+
11
+ value_is_included?(record, attribute, value, valid_options)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module DefraRuby
4
4
  module Validators
5
- VERSION = "1.0.0"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Accept-Encoding:
13
13
  - gzip, deflate
14
14
  User-Agent:
15
- - rest-client/2.0.2 (darwin18.5.0 x86_64) ruby/2.4.2p198
15
+ - rest-client/2.0.2 (darwin18.2.0 x86_64) ruby/2.4.2p198
16
16
  Host:
17
17
  - api.companieshouse.gov.uk
18
18
  Authorization:
@@ -39,7 +39,7 @@ http_interactions:
39
39
  Content-Type:
40
40
  - application/json
41
41
  Date:
42
- - Mon, 13 May 2019 10:51:59 GMT
42
+ - Tue, 04 Jun 2019 22:42:41 GMT
43
43
  Pragma:
44
44
  - no-cache
45
45
  Server:
@@ -47,9 +47,9 @@ http_interactions:
47
47
  X-Ratelimit-Limit:
48
48
  - '600'
49
49
  X-Ratelimit-Remain:
50
- - '597'
50
+ - '599'
51
51
  X-Ratelimit-Reset:
52
- - '1557745019'
52
+ - '1559688461'
53
53
  X-Ratelimit-Window:
54
54
  - 5m
55
55
  Content-Length:
@@ -63,5 +63,5 @@ http_interactions:
63
63
  Elizabeth House","address_line_2":"54-58 High Street"},"undeliverable_registered_office_address":false,"company_name":"DIRECT
64
64
  SKIPS UK LTD","annual_return":{"last_made_up_to":"2014-06-11"},"jurisdiction":"england-wales","etag":"1cdef5bc2a020b3e9003b086033b64b78bcb28f6","company_status":"dissolved","has_insolvency_history":false,"has_charges":false,"links":{"self":"/company/07281919","filing_history":"/company/07281919/filing-history","officers":"/company/07281919/officers"},"date_of_cessation":"2016-01-05","can_file":false}'
65
65
  http_version:
66
- recorded_at: Mon, 13 May 2019 10:51:59 GMT
66
+ recorded_at: Tue, 04 Jun 2019 22:42:41 GMT
67
67
  recorded_with: VCR 4.0.0
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Accept-Encoding:
13
13
  - gzip, deflate
14
14
  User-Agent:
15
- - rest-client/2.0.2 (darwin18.5.0 x86_64) ruby/2.4.2p198
15
+ - rest-client/2.0.2 (darwin18.2.0 x86_64) ruby/2.4.2p198
16
16
  Host:
17
17
  - api.companieshouse.gov.uk
18
18
  Authorization:
@@ -39,7 +39,7 @@ http_interactions:
39
39
  Content-Type:
40
40
  - application/json
41
41
  Date:
42
- - Mon, 13 May 2019 10:51:59 GMT
42
+ - Tue, 04 Jun 2019 22:42:41 GMT
43
43
  Pragma:
44
44
  - no-cache
45
45
  Server:
@@ -49,7 +49,7 @@ http_interactions:
49
49
  X-Ratelimit-Remain:
50
50
  - '598'
51
51
  X-Ratelimit-Reset:
52
- - '1557745019'
52
+ - '1559688461'
53
53
  X-Ratelimit-Window:
54
54
  - 5m
55
55
  Content-Length:
@@ -60,5 +60,5 @@ http_interactions:
60
60
  encoding: UTF-8
61
61
  string: '{"errors":[{"type":"ch:service","error":"company-profile-not-found"}]}'
62
62
  http_version:
63
- recorded_at: Mon, 13 May 2019 10:51:59 GMT
63
+ recorded_at: Tue, 04 Jun 2019 22:42:41 GMT
64
64
  recorded_with: VCR 4.0.0
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Accept-Encoding:
13
13
  - gzip, deflate
14
14
  User-Agent:
15
- - rest-client/2.0.2 (darwin18.5.0 x86_64) ruby/2.4.2p198
15
+ - rest-client/2.0.2 (darwin18.2.0 x86_64) ruby/2.4.2p198
16
16
  Host:
17
17
  - api.companieshouse.gov.uk
18
18
  Authorization:
@@ -39,7 +39,7 @@ http_interactions:
39
39
  Content-Type:
40
40
  - application/json
41
41
  Date:
42
- - Mon, 13 May 2019 10:51:59 GMT
42
+ - Tue, 04 Jun 2019 22:42:41 GMT
43
43
  Pragma:
44
44
  - no-cache
45
45
  Server:
@@ -47,9 +47,9 @@ http_interactions:
47
47
  X-Ratelimit-Limit:
48
48
  - '600'
49
49
  X-Ratelimit-Remain:
50
- - '599'
50
+ - '597'
51
51
  X-Ratelimit-Reset:
52
- - '1557745019'
52
+ - '1559688461'
53
53
  X-Ratelimit-Window:
54
54
  - 5m
55
55
  Content-Length:
@@ -61,5 +61,5 @@ http_interactions:
61
61
  string: '{"type":"ltd","company_name":"0800 WASTE LTD.","has_insolvency_history":false,"accounts":{"next_due":"2019-09-30","next_made_up_to":"2018-12-31","next_accounts":{"overdue":false,"period_start_on":"2018-01-01","due_on":"2019-09-30","period_end_on":"2018-12-31"},"accounting_reference_date":{"month":"12","day":"31"},"last_accounts":{"period_end_on":"2017-12-31","period_start_on":"2017-01-01","made_up_to":"2017-12-31"},"overdue":false},"undeliverable_registered_office_address":false,"etag":"0ec9d00cab0ffee2ef1f5d59f4f714fa5b1618f5","company_number":"09360070","registered_office_address":{"postal_code":"SM3
62
62
  9ND","locality":"Sutton","region":"Surrey","address_line_1":"21 Haslam Avenue"},"jurisdiction":"england-wales","date_of_creation":"2014-12-18","company_status":"active","has_charges":false,"sic_codes":["38110"],"last_full_members_list_date":"2015-12-18","confirmation_statement":{"overdue":false,"next_made_up_to":"2020-01-23","last_made_up_to":"2019-01-23","next_due":"2020-02-06"},"links":{"self":"/company/09360070","filing_history":"/company/09360070/filing-history","officers":"/company/09360070/officers"},"registered_office_is_in_dispute":false,"can_file":true}'
63
63
  http_version:
64
- recorded_at: Mon, 13 May 2019 10:51:58 GMT
64
+ recorded_at: Tue, 04 Jun 2019 22:42:41 GMT
65
65
  recorded_with: VCR 4.0.0
@@ -37,14 +37,22 @@ module DefraRuby
37
37
  context "when given an invalid company number" do
38
38
  context "because it is blank" do
39
39
  validatable = Test::CompaniesHouseNumberValidatable.new
40
- error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :company_no, :blank)
40
+ error_message = Helpers::Translator.error_message(
41
+ klass: CompaniesHouseNumberValidator,
42
+ attribute: :company_no,
43
+ error: :blank
44
+ )
41
45
 
42
46
  it_behaves_like "an invalid record", validatable, :company_no, error_message
43
47
  end
44
48
 
45
49
  context "because the format is wrong" do
46
50
  validatable = Test::CompaniesHouseNumberValidatable.new(invalid_format_number)
47
- error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :company_no, :invalid)
51
+ error_message = Helpers::Translator.error_message(
52
+ klass: CompaniesHouseNumberValidator,
53
+ attribute: :company_no,
54
+ error: :invalid
55
+ )
48
56
 
49
57
  it_behaves_like "an invalid record", validatable, :company_no, error_message
50
58
  end
@@ -55,7 +63,11 @@ module DefraRuby
55
63
  end
56
64
 
57
65
  validatable = Test::CompaniesHouseNumberValidatable.new(unknown_number)
58
- error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :company_no, :not_found)
66
+ error_message = Helpers::Translator.error_message(
67
+ klass: CompaniesHouseNumberValidator,
68
+ attribute: :company_no,
69
+ error: :not_found
70
+ )
59
71
 
60
72
  it_behaves_like "an invalid record", validatable, :company_no, error_message
61
73
  end
@@ -66,7 +78,11 @@ module DefraRuby
66
78
  end
67
79
 
68
80
  validatable = Test::CompaniesHouseNumberValidatable.new(inactive_number)
69
- error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :company_no, :inactive)
81
+ error_message = Helpers::Translator.error_message(
82
+ klass: CompaniesHouseNumberValidator,
83
+ attribute: :company_no,
84
+ error: :inactive
85
+ )
70
86
 
71
87
  it_behaves_like "an invalid record", validatable, :company_no, error_message
72
88
  end
@@ -78,7 +94,11 @@ module DefraRuby
78
94
  end
79
95
 
80
96
  validatable = Test::CompaniesHouseNumberValidatable.new(valid_numbers.sample)
81
- error_message = Helpers::Translator.error_message(CompaniesHouseNumberValidator, :company_no, :error)
97
+ error_message = Helpers::Translator.error_message(
98
+ klass: CompaniesHouseNumberValidator,
99
+ attribute: :company_no,
100
+ error: :error
101
+ )
82
102
 
83
103
  it_behaves_like "an invalid record", validatable, :company_no, error_message
84
104
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ module Test
6
+ TrueFalseValidatable = Struct.new(:response) do
7
+ include ActiveModel::Validations
8
+
9
+ validates :response, "defra_ruby/validators/true_false": true
10
+ end
11
+ end
12
+
13
+ module DefraRuby
14
+ module Validators
15
+ RSpec.describe TrueFalseValidator do
16
+
17
+ valid_value = %w[true false].sample
18
+
19
+ it_behaves_like "a validator"
20
+ it_behaves_like "a selection validator", TrueFalseValidator, Test::TrueFalseValidatable, :response, valid_value
21
+ end
22
+ end
23
+ end
data/spec/examples.txt CHANGED
@@ -1,36 +1,46 @@
1
1
  example_id | status | run_time |
2
2
  ---------------------------------------------------------------------------------- | ------ | --------------- |
3
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:1:1] | passed | 0.00014 seconds |
4
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:1:1:1] | passed | 0.00062 seconds |
5
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:1:1:2] | passed | 0.00048 seconds |
6
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:2:1:1] | passed | 0.00081 seconds |
7
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:2:1:2] | passed | 0.0005 seconds |
8
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:3:1:1] | passed | 0.00047 seconds |
9
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:3:1:2] | passed | 0.00047 seconds |
10
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:4:1:1] | passed | 0.00044 seconds |
11
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:4:1:2] | passed | 0.00052 seconds |
12
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:1:1:1] | passed | 0.00172 seconds |
13
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:1:1:2] | passed | 0.00018 seconds |
14
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:1:1:3] | passed | 0.00764 seconds |
15
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:2:1:1] | passed | 0.00055 seconds |
16
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:2:1:2] | passed | 0.00028 seconds |
17
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:2:1:3] | passed | 0.0002 seconds |
18
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:3:1:1] | passed | 0.00049 seconds |
19
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:3:1:2] | passed | 0.00915 seconds |
20
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:3:1:3] | passed | 0.00051 seconds |
21
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:4:1:1] | passed | 0.00049 seconds |
22
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:4:1:2] | passed | 0.00043 seconds |
23
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:4:1:3] | passed | 0.00046 seconds |
24
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:3:1:1] | passed | 0.00055 seconds |
25
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:3:1:2] | passed | 0.00049 seconds |
26
- ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:3:1:3] | passed | 0.00061 seconds |
27
- ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:1:1] | passed | 0.02711 seconds |
28
- ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:2:1] | passed | 0.01832 seconds |
29
- ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:3:1] | passed | 0.01756 seconds |
30
- ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:4:1:1] | passed | 0.03546 seconds |
31
- ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:4:2:1] | passed | 0.01611 seconds |
32
- ./spec/defra_ruby/validators/configuration_spec.rb[1:1:1] | passed | 0.00407 seconds |
33
- ./spec/defra_ruby/validators/configuration_spec.rb[1:2] | passed | 0.0001 seconds |
34
- ./spec/defra_ruby/validators/configuration_spec.rb[1:3:1:1] | passed | 0.00021 seconds |
35
- ./spec/defra_ruby/validators/configuration_spec.rb[1:3:2:1] | passed | 0.00021 seconds |
36
- ./spec/defra_ruby/validators_spec.rb[1:1:1] | passed | 0.00494 seconds |
3
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:1:1] | passed | 0.00016 seconds |
4
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:1:1:1] | passed | 0.00072 seconds |
5
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:1:1:2] | passed | 0.00079 seconds |
6
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:2:1:1] | passed | 0.00082 seconds |
7
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:2:1:2] | passed | 0.00081 seconds |
8
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:3:1:1] | passed | 0.00065 seconds |
9
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:3:1:2] | passed | 0.00062 seconds |
10
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:4:1:1] | passed | 0.00131 seconds |
11
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:1:4:1:2] | passed | 0.00086 seconds |
12
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:1:1:1] | passed | 0.00029 seconds |
13
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:1:1:2] | passed | 0.00023 seconds |
14
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:1:1:3] | passed | 0.0003 seconds |
15
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:2:1:1] | passed | 0.00026 seconds |
16
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:2:1:2] | passed | 0.00021 seconds |
17
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:2:1:3] | passed | 0.00028 seconds |
18
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:3:1:1] | passed | 0.00081 seconds |
19
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:3:1:2] | passed | 0.00102 seconds |
20
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:3:1:3] | passed | 0.00073 seconds |
21
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:4:1:1] | passed | 0.001 seconds |
22
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:4:1:2] | passed | 0.00071 seconds |
23
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:2:4:1:3] | passed | 0.00137 seconds |
24
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:3:1:1] | passed | 0.00503 seconds |
25
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:3:1:2] | passed | 0.00091 seconds |
26
+ ./spec/defra_ruby/validators/companies_house_number_validator_spec.rb[1:2:3:1:3] | passed | 0.07132 seconds |
27
+ ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:1:1] | passed | 0.03655 seconds |
28
+ ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:2:1] | passed | 0.02028 seconds |
29
+ ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:3:1] | passed | 0.02097 seconds |
30
+ ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:4:1:1] | passed | 0.03174 seconds |
31
+ ./spec/defra_ruby/validators/companies_house_service_spec.rb[1:1:4:2:1] | passed | 0.01659 seconds |
32
+ ./spec/defra_ruby/validators/configuration_spec.rb[1:1:1] | passed | 0.0146 seconds |
33
+ ./spec/defra_ruby/validators/configuration_spec.rb[1:2] | passed | 0.006 seconds |
34
+ ./spec/defra_ruby/validators/configuration_spec.rb[1:3:1:1] | passed | 0.0008 seconds |
35
+ ./spec/defra_ruby/validators/configuration_spec.rb[1:3:2:1] | passed | 0.00518 seconds |
36
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:1:1] | passed | 0.00041 seconds |
37
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:1] | passed | 0.00031 seconds |
38
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:1:1:1] | passed | 0.00055 seconds |
39
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:1:1:2] | passed | 0.00029 seconds |
40
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:2:1:1:1] | passed | 0.00027 seconds |
41
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:2:1:1:2] | passed | 0.00027 seconds |
42
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:2:1:1:3] | passed | 0.00029 seconds |
43
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:2:2:1:1] | passed | 0.00026 seconds |
44
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:2:2:1:2] | passed | 0.00027 seconds |
45
+ ./spec/defra_ruby/validators/true_false_validator_spec.rb[1:2:2:2:2:1:3] | passed | 0.00024 seconds |
46
+ ./spec/defra_ruby/validators_spec.rb[1:1:1] | passed | 0.00956 seconds |
@@ -2,9 +2,11 @@
2
2
 
3
3
  module Helpers
4
4
  module Translator
5
- def self.error_message(klass, attribute, error)
5
+ def self.error_message(klass:, attribute: nil, error:)
6
6
  class_name = klass_name(klass)
7
- I18n.t("defra_ruby.validators.#{class_name}.#{attribute}.#{error}")
7
+ return I18n.t("defra_ruby.validators.#{class_name}.#{attribute}.#{error}") if attribute
8
+
9
+ I18n.t("defra_ruby.validators.#{class_name}.#{error}")
8
10
  end
9
11
 
10
12
  def self.klass_name(klass)
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples "a selection validator" do |validator, validatable_class, property, valid_value|
4
+ it "includes CanValidateSelection" do
5
+ included_modules = described_class.ancestors.select { |ancestor| ancestor.instance_of?(Module) }
6
+
7
+ expect(included_modules)
8
+ .to include(DefraRuby::Validators::CanValidateSelection)
9
+ end
10
+
11
+ describe "#validate_each" do
12
+ context "when the #{property} is valid" do
13
+ it_behaves_like "a valid record", validatable_class.new(valid_value)
14
+ end
15
+
16
+ context "when the #{property} is not valid" do
17
+ context "because the #{property} is not present" do
18
+ validatable = validatable_class.new
19
+ error_message = Helpers::Translator.error_message(klass: validator, error: :inclusion)
20
+
21
+ it_behaves_like "an invalid record", validatable, property, error_message
22
+ end
23
+
24
+ context "because the #{property} is not from an approved list" do
25
+ validatable = validatable_class.new("unexpected_#{property}")
26
+ error_message = Helpers::Translator.error_message(klass: validator, error: :inclusion)
27
+
28
+ it_behaves_like "an invalid record", validatable, property, error_message
29
+ end
30
+ end
31
+ end
32
+ end
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: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Defra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-23 00:00:00.000000000 Z
11
+ date: 2019-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rest-client
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -205,12 +219,15 @@ files:
205
219
  - bin/console
206
220
  - bin/setup
207
221
  - config/locales/defra_ruby/validators/companies_house_number_validator/en.yml
222
+ - config/locales/defra_ruby/validators/true_false_validator/en.yml
208
223
  - lib/defra_ruby/validators.rb
209
224
  - lib/defra_ruby/validators/base_validator.rb
210
225
  - lib/defra_ruby/validators/companies_house_number_validator.rb
211
226
  - lib/defra_ruby/validators/companies_house_service.rb
227
+ - lib/defra_ruby/validators/concerns/can_validate_selection.rb
212
228
  - lib/defra_ruby/validators/configuration.rb
213
229
  - lib/defra_ruby/validators/engine.rb
230
+ - lib/defra_ruby/validators/true_false_validator.rb
214
231
  - lib/defra_ruby/validators/version.rb
215
232
  - lib/defra_ruby_validators.rb
216
233
  - spec/cassettes/company_no_inactive.yml
@@ -219,6 +236,7 @@ files:
219
236
  - spec/defra_ruby/validators/companies_house_number_validator_spec.rb
220
237
  - spec/defra_ruby/validators/companies_house_service_spec.rb
221
238
  - spec/defra_ruby/validators/configuration_spec.rb
239
+ - spec/defra_ruby/validators/true_false_validator_spec.rb
222
240
  - spec/defra_ruby/validators_spec.rb
223
241
  - spec/examples.txt
224
242
  - spec/spec_helper.rb
@@ -228,6 +246,7 @@ files:
228
246
  - spec/support/i18n.rb
229
247
  - spec/support/pry.rb
230
248
  - spec/support/shared_examples/validators/invalid_record.rb
249
+ - spec/support/shared_examples/validators/selection_validator.rb
231
250
  - spec/support/shared_examples/validators/valid_record.rb
232
251
  - spec/support/shared_examples/validators/validator.rb
233
252
  - spec/support/simplecov.rb
@@ -263,6 +282,7 @@ test_files:
263
282
  - spec/defra_ruby/validators/companies_house_service_spec.rb
264
283
  - spec/defra_ruby/validators/configuration_spec.rb
265
284
  - spec/defra_ruby/validators/companies_house_number_validator_spec.rb
285
+ - spec/defra_ruby/validators/true_false_validator_spec.rb
266
286
  - spec/examples.txt
267
287
  - spec/cassettes/company_no_not_found.yml
268
288
  - spec/cassettes/company_no_valid.yml
@@ -274,6 +294,7 @@ test_files:
274
294
  - spec/support/dotenv.rb
275
295
  - spec/support/defra_ruby_validators.rb
276
296
  - spec/support/helpers/translator.rb
297
+ - spec/support/shared_examples/validators/selection_validator.rb
277
298
  - spec/support/shared_examples/validators/invalid_record.rb
278
299
  - spec/support/shared_examples/validators/valid_record.rb
279
300
  - spec/support/shared_examples/validators/validator.rb