activevalidators 5.0.1 → 5.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
  SHA256:
3
- metadata.gz: 5b7fa6eefd00b8ff0eeacbc73ef6e7c640be026737347898862a7ab42a0c2b86
4
- data.tar.gz: 9ed8128e768f17580d472228fb17ac8b212d8bb40589715d9bc8d7b1cba861c1
3
+ metadata.gz: e28fd41e5406e9d587414ae53528c6ab0ea6542950b16ba990a6f51f120bd192
4
+ data.tar.gz: 55add0e3513f0fe48f4924322e06456f4481ec4ce213be561b24cacd5342ebd0
5
5
  SHA512:
6
- metadata.gz: ad2aaf9b651037fbbbff1cfa6a52e3c5f47e6df4d4e05fc4211596ac81dad935538badac4982eb98efb0cf8098a557dbb494990145466ee570ca1488b6d68996
7
- data.tar.gz: f67a9456f140e2551d3006242342a003ae7b8b26d6e7bb76528e2950c8b7662c544b5678d75e653b3c5ead7f957b39c206b8bd546118183c5563bf1c18c19739
6
+ metadata.gz: '0866bce8c7f7d4bbb327681eb31b185534c5322533281e2adf56919dd6fbb6ca2d1315500a88b0b85d89b9524ff83b5435c3df41a164cab0c5f4154e07f52332'
7
+ data.tar.gz: 065aea8ed9dc5f4581163ec02e92a25671e548714c05b90b6e229b0af8856795fe07c2a4037beea6d2a9a0332bc840a6ee56682d75994b32fb8f543ac8075802
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -0,0 +1,84 @@
1
+ version: 2
2
+
3
+ shared: &shared
4
+ working_directory: ~/repo
5
+ steps:
6
+ - checkout
7
+
8
+ # Download and cache dependencies
9
+ - restore_cache:
10
+ keys:
11
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
12
+ # fallback to using the latest cache if no exact match is found
13
+ - v1-dependencies-
14
+
15
+ - run:
16
+ name: install dependencies
17
+ command: |
18
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
19
+
20
+ - save_cache:
21
+ paths:
22
+ - ./vendor/bundle
23
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
24
+
25
+ # run tests!
26
+ - run:
27
+ name: run tests
28
+ command: bundle exec rake
29
+
30
+ jobs:
31
+ # RAILS_VERSION=5.1.6
32
+ "ruby-2.4/rails-5.1.6":
33
+ <<: *shared
34
+ docker:
35
+ - image: circleci/ruby:2.4
36
+ environment:
37
+ RAILS_VERSION=5.1.6
38
+
39
+ "ruby-2.5/rails-5.1.6":
40
+ <<: *shared
41
+ docker:
42
+ - image: circleci/ruby:2.5
43
+ environment:
44
+ RAILS_VERSION=5.1.6
45
+
46
+ "ruby-2.6/rails-5.1.6":
47
+ <<: *shared
48
+ docker:
49
+ - image: circleci/ruby:2.6
50
+ environment:
51
+ RAILS_VERSION=5.1.6
52
+
53
+ # RAILS_VERSION=5.2.2
54
+ "ruby-2.4/rails-5.2.2":
55
+ <<: *shared
56
+ docker:
57
+ - image: circleci/ruby:2.4
58
+ environment:
59
+ RAILS_VERSION=5.2.2
60
+
61
+ "ruby-2.5/rails-5.2.2":
62
+ <<: *shared
63
+ docker:
64
+ - image: circleci/ruby:2.5
65
+ environment:
66
+ RAILS_VERSION=5.2.2
67
+
68
+ "ruby-2.6/rails-5.2.2":
69
+ <<: *shared
70
+ docker:
71
+ - image: circleci/ruby:2.6
72
+ environment:
73
+ RAILS_VERSION=5.2.2
74
+
75
+ workflows:
76
+ version: 2
77
+ build:
78
+ jobs:
79
+ - "ruby-2.4/rails-5.1.6"
80
+ - "ruby-2.5/rails-5.1.6"
81
+ - "ruby-2.6/rails-5.1.6"
82
+ - "ruby-2.4/rails-5.2.2"
83
+ - "ruby-2.5/rails-5.2.2"
84
+ - "ruby-2.6/rails-5.2.2"
@@ -0,0 +1,33 @@
1
+ # Authors
2
+
3
+ In alphabetical order:
4
+
5
+ * Abe Fehr
6
+ * Alyssa Ross
7
+ * Brian Moseley
8
+ * Cédric FABIANSKI
9
+ * Etienne Depaulis
10
+ * Franck Verrot
11
+ * Garrett Bjerkhoel
12
+ * Guten
13
+ * Igor Fedoronchuk
14
+ * John
15
+ * Julien Fusco
16
+ * Kevin Sołtysiak
17
+ * Kris Windham
18
+ * Manuel Menezes de Sequeira
19
+ * Oriol Gual
20
+ * Paco Guzmán
21
+ * Pierre-Baptiste Béchu
22
+ * Radovan Šmitala
23
+ * Ray Krueger
24
+ * Renato Riccieri
25
+ * Richard Michael
26
+ * Rob Zuber
27
+ * Serj L
28
+ * Stefan Kracht
29
+ * William Howard
30
+ * Zachary Porter
31
+ * daslicious
32
+ * dewski
33
+ * lukas
@@ -9,6 +9,18 @@
9
9
  ## CHANGES
10
10
 
11
11
 
12
+ # 5.1.0
13
+
14
+ ## BREAKING CHANGES
15
+
16
+ ## DEPRECATION
17
+
18
+ ## CHANGES
19
+
20
+ * Ditch Travis CI in favor or CircleCI
21
+ * Disallow business numbers from SIN validation
22
+
23
+
12
24
  # 5.0.1
13
25
 
14
26
  ## CHANGES
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # ActiveValidators [![Travis](https://secure.travis-ci.org/franckverrot/activevalidators.png)](http://travis-ci.org/franckverrot/activevalidators)
1
+ # ActiveValidators [![CircleCI](https://circleci.com/gh/franckverrot/activevalidators.svg?style=svg)](https://circleci.com/gh/franckverrot/activevalidators)
2
2
 
3
3
  # Description
4
4
 
@@ -124,7 +124,7 @@ Exhaustive list of supported validators and their implementation:
124
124
  * `respond_to` : generic Ruby `respond_to`
125
125
  * `siren` : [SIREN](http://fr.wikipedia.org/wiki/SIREN) company numbers in France
126
126
  * `slug` : based on `ActiveSupport::String#parameterize`
127
- * `sin` : Social Insurance Number (only for Canada). You may also allow permanent resident cards (such cards start with '9'): `:sin => {:country => :canada, :country_options => {allow_permanent_residents: true}}`
127
+ * `sin` : Social Insurance Number (only for Canada). You may also allow permanent resident cards (such cards start with '9') or business numbers (such numbers start with '8'): `:sin => {:country => :canada, :country_options => {allow_permanent_residents: true, allow_business_numbers: true}}`
128
128
  * `ssn` : Social Security Number (only for USA).
129
129
  * `tracking_number`: based on a set of predefined masks
130
130
  * `twitter` : based on a regular expression
@@ -176,18 +176,11 @@ Lots of improvements can be made:
176
176
 
177
177
  ## Contributors
178
178
 
179
- * Franck Verrot
180
- * Oriol Gual
181
- * Paco Guzmán
182
- * Garrett Bjerkhoel
183
- * Renato Riccieri Santos Zannon
184
- * Brian Moseley
185
- * Travis Vachon
186
- * Rob Zuber
187
- * Manuel Menezes de Sequeira
188
- * Serj L aka Loremaster
189
- * Pierre-Baptiste Béchu
179
+ Please checkout [AUTHORS.md](authors) to see who contributed. Get involved!
180
+
190
181
 
191
182
  ## Copyright
192
183
 
193
184
  Copyright (c) 2010-2018 Franck Verrot. MIT LICENSE. See LICENSE for details.
185
+
186
+ [authors]: https://github.com/franckverrot/activevalidators/blob/master/AUTHORS.md
@@ -1,9 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'activevalidators'
4
- s.version = '5.0.1'
4
+ s.version = '5.1.0'
5
5
  s.platform = Gem::Platform::RUBY
6
- s.authors = ['Franck Verrot', 'Paco Guzmán', 'Oriol Gual', 'Garrett Bjerkhoel', 'Renato Riccieri Santos Zannon', 'Brian Moseley', 'Serj L aka Loremaster']
6
+ s.authors = ['Franck Verrot']
7
7
  s.email = ['franck@verrot.fr']
8
8
  s.homepage = 'http://github.com/franckverrot/activevalidators'
9
9
  s.summary = %q{Collection of ActiveModel/ActiveRecord validations}
@@ -20,28 +20,31 @@ module ActiveModel
20
20
  # The Social Insurance Number is a nine-digit number in the format "AAA BBB CCC".
21
21
  # The number is divided into three parts.
22
22
  # AAA - is the first, BBB - is the second and the CCC is the third.
23
- # Numbers that begin with the number "9" are issued to temporary residents who are not Canadian citizens
23
+ # Numbers that begin with the number "9" are issued to temporary residents who are not Canadian citizens.
24
+ # Numbers that begin with the number "8" are issued to businesses as "Business Numbers".
24
25
  # More details: http://en.wikipedia.org/wiki/Social_Insurance_Number
25
26
  #
26
27
  # Possible flags:
27
28
  # allow_permanent_residents - citizens with cars, which begins with "9" are valid. By default it is false.
29
+ # allow_business_numbers - business numbers, which begins with "8" are valid. By default it is false.
28
30
  #
29
- # validates :sin, :sin => {:country => :canada, :country_options => {:allow_permanent_residents => true}}
31
+ # validates :sin, :sin => {:country => :canada, :country_options => {:allow_permanent_residents => true, :allow_business_numbers => true}}
30
32
  class SinValidatorCanada
31
33
  def initialize(str_value, options)
32
34
  @sin = str_value.gsub(/\D/, '') # keep only integers
33
35
  @allow_permanent_residents = false
36
+ @allow_business_numbers = false
34
37
 
35
38
  country_options = options.fetch(:country_options, {})
36
39
  allow_permanent_residents = country_options.fetch(:allow_permanent_residents, :nil)
40
+ allow_business_numbers = country_options.fetch(:allow_business_numbers, :nil)
37
41
 
38
- if allow_permanent_residents == true
39
- @allow_permanent_residents = true
40
- end
42
+ @allow_permanent_residents = true if allow_permanent_residents == true
43
+ @allow_business_numbers = true if allow_business_numbers == true
41
44
  end
42
45
 
43
46
  def valid?
44
- size_is?(9) && is_not_full_of_zeroes && allow_permanent_residents? && LuhnChecker.valid?(@sin)
47
+ size_is?(9) && is_not_full_of_zeroes && allow_permanent_residents? && allow_business_numbers? && LuhnChecker.valid?(@sin)
45
48
  end
46
49
 
47
50
  def size_is?(count)
@@ -61,6 +64,12 @@ module ActiveModel
61
64
  true
62
65
  end
63
66
  end
67
+
68
+ def allow_business_numbers?
69
+ business_indentifier = '8'
70
+
71
+ !(@allow_business_numbers == false && @sin.start_with?(business_indentifier))
72
+ end
64
73
  end
65
74
  end
66
75
  end
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+
3
+ cat << EOF > AUTHORS.md
4
+ # Authors
5
+
6
+ In alphabetical order:
7
+
8
+ EOF
9
+
10
+ git log --pretty=format:" * %an" | sort -u >> AUTHORS.md
@@ -9,10 +9,15 @@ ActiveValidators.activate(:date)
9
9
  # [on Github](https://github.com/codegram/date_validator)
10
10
  describe "Date Validation" do
11
11
  it "finds the translations" do
12
- TestRecord.validates :start_date, :date => {:before => :end_date }
13
- d = TestRecord.new(:start_date => Time.now, :end_date => Time.now - 1)
12
+ d = build_date_record
14
13
 
15
14
  refute d.valid?
16
15
  refute_includes d.errors.to_s, 'translation missing'
17
16
  end
17
+
18
+ def build_date_record
19
+ TestRecord.reset_callbacks(:validate)
20
+ TestRecord.validates :start_date, :date => { :before => :end_date }
21
+ TestRecord.new(:start_date => Time.now, :end_date => Time.now - 1)
22
+ end
18
23
  end
@@ -110,6 +110,7 @@ describe "Email Validation" do
110
110
  end
111
111
  end
112
112
 
113
+ before { TestRecord.reset_callbacks(:validate) }
113
114
  it "checks validity of the arguments" do
114
115
  [3, "foo", 1..6].each do |wrong_argument|
115
116
  assert_raises(ArgumentError,"Not a callable object #{wrong_argument.inspect}") do
@@ -34,6 +34,11 @@ describe "SIN validations" do
34
34
  subject.valid?.must_equal false
35
35
  end
36
36
 
37
+ it "rejects valid business numbers by default" do
38
+ subject = build_sin_record({:sin => '897 454 286'}, {:country => :canada })
39
+ subject.valid?.must_equal false
40
+ end
41
+
37
42
  it "rejects invalid sin for permanent residents" do
38
43
  subject = build_sin_record({:sin => '123 456 789'}, {:country => :canada })
39
44
  subject.valid?.must_equal false
@@ -56,6 +61,12 @@ describe "SIN validations" do
56
61
  {:country => :canada, :country_options => { allow_permanent_residents: true } })
57
62
  subject.valid?.must_equal true
58
63
  end
64
+
65
+ it "accept valid business numbers when flag is provided" do
66
+ subject = build_sin_record({:sin => '897 454 286'},
67
+ {:country => :canada, :country_options => { allow_business_numbers: true } })
68
+ subject.valid?.must_equal true
69
+ end
59
70
  end
60
71
  end
61
72
 
metadata CHANGED
@@ -1,16 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activevalidators
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franck Verrot
8
- - Paco Guzmán
9
- - Oriol Gual
10
- - Garrett Bjerkhoel
11
- - Renato Riccieri Santos Zannon
12
- - Brian Moseley
13
- - Serj L aka Loremaster
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain:
@@ -40,7 +34,7 @@ cert_chain:
40
34
  akLQjJWKHQCzyqDChJHRGhlxyVFKP2JwqFgzE3p1l64JArsb7BEqhpoBPXMwlChE
41
35
  HgzCBTsCU0syQBb1s6lBz2HrWA4=
42
36
  -----END CERTIFICATE-----
43
- date: 2018-12-21 00:00:00.000000000 Z
37
+ date: 2019-03-28 00:00:00.000000000 Z
44
38
  dependencies:
45
39
  - !ruby/object:Gem::Dependency
46
40
  name: bundler
@@ -181,8 +175,9 @@ executables: []
181
175
  extensions: []
182
176
  extra_rdoc_files: []
183
177
  files:
178
+ - ".circleci/config.yml"
184
179
  - ".gitignore"
185
- - ".travis.yml"
180
+ - AUTHORS.md
186
181
  - ChangeLog.md
187
182
  - Gemfile
188
183
  - LICENSE
@@ -218,6 +213,7 @@ files:
218
213
  - lib/active_validators/active_model/validations/url_validator.rb
219
214
  - lib/active_validators/one_nine_shims/one_nine_string.rb
220
215
  - lib/activevalidators.rb
216
+ - script/generate_authors
221
217
  - test/test_helper.rb
222
218
  - test/validations/barcode_test.rb
223
219
  - test/validations/credit_card_test.rb
@@ -257,8 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
253
  - !ruby/object:Gem::Version
258
254
  version: '0'
259
255
  requirements: []
260
- rubyforge_project:
261
- rubygems_version: 3.0.0.beta1
256
+ rubygems_version: 3.0.2
262
257
  signing_key:
263
258
  specification_version: 4
264
259
  summary: Collection of ActiveModel/ActiveRecord validations
metadata.gz.sig CHANGED
Binary file
@@ -1,10 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4.4
4
- - 2.5.3
5
- - ruby-head
6
- before_install:
7
- - gem install bundler
8
- env:
9
- - "RAILS_VERSION=5.2.2"
10
- - "RAILS_VERSION=5.1.6"