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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/lib/defra_ruby/validators/companies_house_number_validator.rb +2 -1
  3. data/lib/defra_ruby/validators/version.rb +1 -1
  4. metadata +22 -175
  5. data/spec/defra_ruby/validators/business_type_validator_spec.rb +0 -56
  6. data/spec/defra_ruby/validators/companies_house_number_validator_spec.rb +0 -124
  7. data/spec/defra_ruby/validators/companies_house_service_spec.rb +0 -98
  8. data/spec/defra_ruby/validators/configuration_spec.rb +0 -49
  9. data/spec/defra_ruby/validators/email_validator_spec.rb +0 -46
  10. data/spec/defra_ruby/validators/grid_reference_validator_spec.rb +0 -57
  11. data/spec/defra_ruby/validators/location_validator_spec.rb +0 -56
  12. data/spec/defra_ruby/validators/past_date_validator_spec.rb +0 -35
  13. data/spec/defra_ruby/validators/phone_number_validator_spec.rb +0 -59
  14. data/spec/defra_ruby/validators/position_validator_spec.rb +0 -47
  15. data/spec/defra_ruby/validators/token_validator_spec.rb +0 -45
  16. data/spec/defra_ruby/validators/true_false_validator_spec.rb +0 -37
  17. data/spec/defra_ruby/validators_spec.rb +0 -12
  18. data/spec/examples.txt +0 -189
  19. data/spec/spec_helper.rb +0 -87
  20. data/spec/support/defra_ruby_validators.rb +0 -16
  21. data/spec/support/helpers/text_generator.rb +0 -17
  22. data/spec/support/helpers/translator.rb +0 -15
  23. data/spec/support/i18n.rb +0 -8
  24. data/spec/support/pry.rb +0 -7
  25. data/spec/support/shared_examples/validators/characters_validator.rb +0 -29
  26. data/spec/support/shared_examples/validators/invalid_record.rb +0 -29
  27. data/spec/support/shared_examples/validators/length_validator.rb +0 -29
  28. data/spec/support/shared_examples/validators/presence_validator.rb +0 -29
  29. data/spec/support/shared_examples/validators/selection_validator.rb +0 -40
  30. data/spec/support/shared_examples/validators/valid_record.rb +0 -12
  31. data/spec/support/shared_examples/validators/validator.rb +0 -8
  32. data/spec/support/simplecov.rb +0 -17
data/spec/spec_helper.rb DELETED
@@ -1,87 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/setup"
4
-
5
- # Require and run our simplecov initializer as the very first thing we do.
6
- # This is as per its docs https://github.com/colszowka/simplecov#getting-started
7
- require "./spec/support/simplecov"
8
-
9
- # Load env vars from a text file. This must be done before we load the other
10
- # support files as some of them rely on the env vars being set.
11
- require "dotenv/load"
12
-
13
- # Requires supporting ruby files with custom matchers and macros, etc, in
14
- # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
15
- # run as spec files by default. This means that files in spec/support that end
16
- # in _spec.rb will both be required and run as specs, causing the specs to be
17
- # run twice. It is recommended that you do not name files matching this glob to
18
- # end with _spec.rb. You can configure this pattern with the --pattern
19
- # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
20
- #
21
- # We make an exception for simplecov because that will already have been
22
- # required and run at the very top of spec_helper.rb
23
- support_files = Dir["./spec/support/**/*.rb"].reject { |file| file == "./spec/support/simplecov.rb" }
24
- support_files.each { |f| require f }
25
-
26
- RSpec.configure do |config|
27
- # rspec-expectations config goes here. You can use an alternate
28
- # assertion/expectation library such as wrong or the stdlib/minitest
29
- # assertions if you prefer.
30
- config.expect_with :rspec do |expectations|
31
- # This option will default to `true` in RSpec 4. It makes the `description`
32
- # and `failure_message` of custom matchers include text for helper methods
33
- # defined using `chain`, e.g.:
34
- # be_bigger_than(2).and_smaller_than(4).description
35
- # # => "be bigger than 2 and smaller than 4"
36
- # ...rather than:
37
- # # => "be bigger than 2"
38
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
39
- end
40
-
41
- # rspec-mocks config goes here. You can use an alternate test double
42
- # library (such as bogus or mocha) by changing the `mock_with` option here.
43
- config.mock_with :rspec do |mocks|
44
- # Prevents you from mocking or stubbing a method that does not exist on
45
- # a real object. This is generally recommended, and will default to
46
- # `true` in RSpec 4.
47
- mocks.verify_partial_doubles = true
48
- end
49
-
50
- # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
51
- # have no way to turn it off -- the option exists only for backwards
52
- # compatibility in RSpec 3). It causes shared context metadata to be
53
- # inherited by the metadata hash of host groups and examples, rather than
54
- # triggering implicit auto-inclusion in groups with matching metadata.
55
- config.shared_context_metadata_behavior = :apply_to_host_groups
56
-
57
- # This allows you to limit a spec run to individual examples or groups
58
- # you care about by tagging them with `:focus` metadata. When nothing
59
- # is tagged with `:focus`, all examples get run. RSpec also provides
60
- # aliases for `it`, `describe`, and `context` that include `:focus`
61
- # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
62
- config.filter_run_when_matching :focus
63
-
64
- # Allows RSpec to persist some state between runs in order to support
65
- # the `--only-failures` and `--next-failure` CLI options. We recommend
66
- # you configure your source control system to ignore this file.
67
- config.example_status_persistence_file_path = "spec/examples.txt"
68
-
69
- # Limits the available syntax to the non-monkey patched syntax that is
70
- # recommended. For more details, see:
71
- # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
72
- # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
73
- # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
74
- config.disable_monkey_patching!
75
-
76
- # Run specs in random order to surface order dependencies. If you find an
77
- # order dependency and want to debug it, you can fix the order by providing
78
- # the seed, which is printed after each run.
79
- # --seed 1234
80
- config.order = :random
81
-
82
- # Seed global randomization in this process using the `--seed` CLI option.
83
- # Setting this allows you to use `--seed` to deterministically reproduce
84
- # test failures related to randomization by passing the same `--seed` value
85
- # as the one that triggered the failure.
86
- Kernel.srand config.seed
87
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Need to require our actual code files. We don't just require everything in
4
- # lib/defra_ruby because it contains the engine file which has a dependency on
5
- # rails. We don't have that as a dependency of this project because it is
6
- # a given this will be used in a rails project. So instead we require the
7
- # validators file directly to load the content covered by our tests.
8
- require "defra_ruby/validators"
9
-
10
- DefraRuby::Validators.configure do |c|
11
- def raise_missing_env_var(variable)
12
- raise("Environment variable #{variable} has not been set")
13
- end
14
-
15
- c.companies_house_api_key = (ENV["COMPANIES_HOUSE_API_KEY"] || raise_missing_env_var("COMPANIES_HOUSE_API_KEY"))
16
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Helpers
4
- module TextGenerator
5
- def self.random_string(length)
6
- random_string_from_sequence([("a".."z"), ("A".."Z")].map(&:to_a).flatten, length)
7
- end
8
-
9
- def self.random_number_string(length)
10
- random_string_from_sequence(("0".."9").to_a, length)
11
- end
12
-
13
- def self.random_string_from_sequence(sequence, length)
14
- (0...length).map { sequence[rand(sequence.length)] }.join
15
- end
16
- end
17
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Helpers
4
- module Translator
5
- def self.error_message(klass, error)
6
- class_name = klass_name(klass)
7
-
8
- I18n.t("defra_ruby.validators.#{class_name}.#{error}")
9
- end
10
-
11
- def self.klass_name(klass)
12
- klass.name.split("::").last
13
- end
14
- end
15
- end
data/spec/support/i18n.rb DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Support using the locale files within our tests (else we'd rely on loading the
4
- # gem in a rails app to confirm these are being pulled through correctly.)
5
- require "i18n"
6
-
7
- I18n.load_path << Dir["#{File.expand_path('config/locales')}/**/*.yml"]
8
- I18n.default_locale = :en
data/spec/support/pry.rb DELETED
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Support debugging in the tests. Add `binding.pry` wherever you want execution
4
- # to stop and the debugger to kick in.
5
- # Details on the debugging commands can be found here
6
- # https://github.com/deivid-rodriguez/pry-byebug#commands
7
- require "pry-byebug"
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples "a characters validator" do |validator, validatable_class, attribute, values|
4
- it "includes CanValidateCharacters" do
5
- included_modules = described_class.ancestors.select { |ancestor| ancestor.instance_of?(Module) }
6
-
7
- expect(included_modules)
8
- .to include(DefraRuby::Validators::CanValidateCharacters)
9
- end
10
-
11
- describe "#validate_each" do
12
- context "when the #{attribute} is valid" do
13
- it_behaves_like "a valid record", validatable_class.new(values[:valid])
14
- end
15
-
16
- context "when the #{attribute} is not valid" do
17
- context "because the #{attribute} is not correctly formatted" do
18
- validatable = validatable_class.new(values[:invalid])
19
- error_message = Helpers::Translator.error_message(validator, :invalid_format)
20
-
21
- it_behaves_like "an invalid record",
22
- validatable: validatable,
23
- attribute: attribute,
24
- error: :invalid_format,
25
- error_message: error_message
26
- end
27
- end
28
- end
29
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples "an invalid record" do |validatable:, attribute:, error:, error_message:|
4
- it "confirms the object is invalid" do
5
- expect(validatable).to_not be_valid
6
- end
7
-
8
- it "adds a single validation error to the record" do
9
- validatable.valid?
10
- expect(validatable.errors[attribute].count).to eq(1)
11
- end
12
-
13
- it "adds an appropriate validation error" do
14
- validatable.valid?
15
- expect(error_message).to_not include("translation missing:")
16
- expect(validatable.errors[attribute]).to eq([error_message])
17
- end
18
-
19
- context "when there are custom error messages" do
20
- let(:custom_message) { "something is wrong (in a customised way)" }
21
- let(:messages) { { error => custom_message } }
22
- before { allow_any_instance_of(DefraRuby::Validators::BaseValidator).to receive(:options).and_return(messages: messages) }
23
-
24
- it "uses the custom message instead of the default" do
25
- validatable.valid?
26
- expect(validatable.errors[attribute]).to eq([custom_message])
27
- end
28
- end
29
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples "a length validator" do |validator, validatable_class, attribute, values|
4
- it "includes CanValidateLength" do
5
- included_modules = described_class.ancestors.select { |ancestor| ancestor.instance_of?(Module) }
6
-
7
- expect(included_modules)
8
- .to include(DefraRuby::Validators::CanValidateLength)
9
- end
10
-
11
- describe "#validate_each" do
12
- context "when the #{attribute} is valid" do
13
- it_behaves_like "a valid record", validatable_class.new(values[:valid])
14
- end
15
-
16
- context "when the #{attribute} is not valid" do
17
- context "because the #{attribute} is too long" do
18
- validatable = validatable_class.new(values[:invalid])
19
- error_message = Helpers::Translator.error_message(validator, :too_long)
20
-
21
- it_behaves_like "an invalid record",
22
- validatable: validatable,
23
- attribute: attribute,
24
- error: :too_long,
25
- error_message: error_message
26
- end
27
- end
28
- end
29
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples "a presence validator" do |validator, validatable_class, attribute, values|
4
- it "includes CanValidatePresence" do
5
- included_modules = described_class.ancestors.select { |ancestor| ancestor.instance_of?(Module) }
6
-
7
- expect(included_modules)
8
- .to include(DefraRuby::Validators::CanValidatePresence)
9
- end
10
-
11
- describe "#validate_each" do
12
- context "when the #{attribute} is valid" do
13
- it_behaves_like "a valid record", validatable_class.new(values[:valid])
14
- end
15
-
16
- context "when the #{attribute} is not valid" do
17
- context "because the #{attribute} is not present" do
18
- validatable = validatable_class.new
19
- error_message = Helpers::Translator.error_message(validator, :blank)
20
-
21
- it_behaves_like "an invalid record",
22
- validatable: validatable,
23
- attribute: attribute,
24
- error: :blank,
25
- error_message: error_message
26
- end
27
- end
28
- end
29
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples "a selection validator" do |validator, validatable_class, attribute, values|
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 #{attribute} is valid" do
13
- it_behaves_like "a valid record", validatable_class.new(values[:valid])
14
- end
15
-
16
- context "when the #{attribute} is not valid" do
17
- context "because the #{attribute} is not present" do
18
- validatable = validatable_class.new
19
- error_message = Helpers::Translator.error_message(validator, :inclusion)
20
-
21
- it_behaves_like "an invalid record",
22
- validatable: validatable,
23
- attribute: attribute,
24
- error: :inclusion,
25
- error_message: error_message
26
- end
27
-
28
- context "because the #{attribute} is not from an approved list" do
29
- validatable = validatable_class.new(values[:invalid])
30
- error_message = Helpers::Translator.error_message(validator, :inclusion)
31
-
32
- it_behaves_like "an invalid record",
33
- validatable: validatable,
34
- attribute: attribute,
35
- error: :inclusion,
36
- error_message: error_message
37
- end
38
- end
39
- end
40
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples "a valid record" do |validatable|
4
- it "confirms the object is valid" do
5
- expect(validatable).to be_valid
6
- end
7
-
8
- it "the errors are empty" do
9
- validatable.valid?
10
- expect(validatable.errors).to be_empty
11
- end
12
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples "a validator" do
4
- it "is a type of BaseValidator" do
5
- expect(described_class.ancestors)
6
- .to include(DefraRuby::Validators::BaseValidator)
7
- end
8
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "simplecov"
4
-
5
- # We start it with the rails param to ensure it includes coverage for all code
6
- # started by the rails app, and not just the files touched by our unit tests.
7
- # This gives us the most accurate assessment of our unit test coverage
8
- # https://github.com/colszowka/simplecov#getting-started
9
- SimpleCov.start do
10
- # We filter the spec folder, mainly to ensure that any dummy apps don't get
11
- # included in the coverage report. However our intent is that nothing in the
12
- # spec folder should be included
13
- add_filter "/spec/"
14
- # The version file is simply just that, so we do not feel the need to ensure
15
- # we have a test for it
16
- add_filter "lib/defra_ruby/validators/version"
17
- end