credit_card_validations 6.0.0 → 7.0.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: c955ab578ccc68fa1525166a326408c8f7ceedb16dfd197b4cee363453f4148c
4
- data.tar.gz: f66d2c0969e1aac24c04463633e4466c997527b4d9b3a11f36914d207eea08dc
3
+ metadata.gz: f8f7d7a9d4f3ab464575d41f7fb4c6892340a2540752e1b3237b532ff2437eed
4
+ data.tar.gz: 82edcf7c91e4b2d4e3774068fd7dd1ebdb32bf61711328365c1fb17b2e769452
5
5
  SHA512:
6
- metadata.gz: 96231d43a74789045abf1df806f085d649fb9400c749f2334eaa08771fcc2e369831ae65a74698484fe2b8a531241e8effa4dc6d5258f29523af33319dae435c
7
- data.tar.gz: 4926b30dce4ca818b0ab18e7711ba96b8145a461703c3659c3eff1368fa860760febb476d1086b7f7addce5608ee501986c30a2dcb13cdab68f26a78a98e18d7
6
+ metadata.gz: 2b559bfc0762eb66e6fcd096924bdfad21babcfeb6e9e73f31aebe224f85e80a381c9c01f4568bd473fbdcbc412f0607e719c52a541e81e6e88a7aaadc2d90f1
7
+ data.tar.gz: f32c9d410d0a06a85d12d837b9c696801de61bbd0fffa1da62563c189d6ec3d51e7068cfbb73470b8254294dd2a5385189161633021fd3e5a7a3783bdea4f173
@@ -6,16 +6,21 @@ on:
6
6
  - master
7
7
  jobs:
8
8
  test:
9
- name: Tests with Ruby ${{ matrix.ruby }} Rails ${{ matrix.rails }}
9
+ name: Tests with Ruby ${{ matrix.ruby-version }} Rails ${{ matrix.rails }}
10
10
  runs-on: ubuntu-latest
11
11
  strategy:
12
12
  matrix:
13
13
  ruby-version:
14
- - 2.7
15
- - 3.0
14
+ - 3.1
15
+ - 3.2
16
+ - 3.3
16
17
  rails:
17
- - '6.1.5'
18
- - '7.0.2.3'
18
+ - '7.1.0'
19
+ - '7.2.0'
20
+ - '8.0.0'
21
+ exclude:
22
+ - ruby-version: 3.1
23
+ rails: '8.0.0'
19
24
  env:
20
25
  RAILS_VERSION: ${{ matrix.rails }}
21
26
  steps:
@@ -26,4 +31,4 @@ jobs:
26
31
  bundler-cache: true
27
32
  - name: Run tests
28
33
  run: |
29
- bundle exec rake
34
+ bundle exec rake
data/Changelog.md CHANGED
@@ -1,3 +1,18 @@
1
+ # 7.0.0
2
+ * allow rails 8
3
+ * drop rails 6.1 and rails 7.0
4
+ * drop support of eol ruby versions 2.7, 3.0
5
+
6
+ # 6.3.0
7
+ * rails 7.2 support
8
+
9
+ # 6.2.0
10
+ * support ruby 3.3
11
+ * more accurate brand matching using matched prefix length
12
+
13
+ # 6.1.0
14
+ * support rails 7.1
15
+
1
16
  # 6.0.0
2
17
  * changes to discover branch
3
18
  * allows to configure usage of own yaml brands file
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.summary = "gem should be used for credit card numbers validation, card brands detections, luhn checks"
13
13
  gem.homepage = "http://didww.github.io/credit_card_validations/"
14
14
  gem.license = "MIT"
15
-
15
+
16
16
  gem.metadata = {
17
17
  'bug_tracker_uri' => 'https://github.com/didww/credit_card_validations/issues',
18
18
  'changelog_uri' => 'https://github.com/didww/credit_card_validations/blob/master/Changelog.md',
@@ -25,12 +25,12 @@ Gem::Specification.new do |gem|
25
25
  gem.require_paths = ["lib"]
26
26
 
27
27
 
28
- gem.add_dependency "activemodel", ">= 5.2", "< 7.1"
29
- gem.add_dependency "activesupport", ">= 5.2", "< 7.1"
28
+ gem.add_dependency "activemodel", ">= 5.2", "< 8.1"
29
+ gem.add_dependency "activesupport", ">= 5.2", "< 8.1"
30
30
 
31
31
 
32
32
  gem.add_development_dependency "minitest", '~> 5.14.3'
33
33
  gem.add_development_dependency "mocha", '1.1.0'
34
- gem.add_development_dependency 'rake', '~> 10'
34
+ gem.add_development_dependency 'rake'
35
35
  gem.add_development_dependency 'byebug'
36
36
  end
@@ -28,8 +28,14 @@ module CreditCardValidations
28
28
  def valid_number?(*keys)
29
29
  selected_brands = keys.blank? ? self.brands : resolve_keys(*keys)
30
30
  if selected_brands.any?
31
+ matched_brands = []
31
32
  selected_brands.each do |key, brand|
32
- return key if matches_brand?(brand)
33
+ match_data = matches_brand?(brand)
34
+ matched_brands << {brand: key, matched_prefix_length: match_data.to_s.length} if match_data
35
+ end
36
+
37
+ if matched_brands.present?
38
+ return matched_brands.sort{|a, b| a[:matched_prefix_length] <=> b[:matched_prefix_length]}.last[:brand]
33
39
  end
34
40
  end
35
41
  nil
@@ -64,8 +70,8 @@ module CreditCardValidations
64
70
  rules.each do |rule|
65
71
  if (options[:skip_luhn] || valid_luhn?) &&
66
72
  rule[:length].include?(number.length) &&
67
- number.match(rule[:regexp])
68
- return true
73
+ match_data = number.match(rule[:regexp])
74
+ return match_data
69
75
  end
70
76
  end
71
77
  false
@@ -1,3 +1,3 @@
1
1
  module CreditCardValidations
2
- VERSION = '6.0.0'
2
+ VERSION = '7.0.0'
3
3
  end
@@ -170,6 +170,28 @@ describe CreditCardValidations do
170
170
  end
171
171
  end
172
172
  end
173
+
174
+ describe 'Add kortimilli rule' do
175
+ let(:kortimilli_number) { '505827028341713' }
176
+
177
+ it 'before invoke add_brand credit card behaves like maestro' do
178
+ expect(detector(kortimilli_number).valid?(:maestro)).must_equal true
179
+ expect(detector(kortimilli_number).maestro?).must_equal true
180
+ expect(detector(kortimilli_number).brand).must_equal :maestro
181
+ end
182
+
183
+ describe 'after adding wider prefix for kortimilli' do
184
+ before do
185
+ CreditCardValidations::Detector.add_brand(:kortimilli, length: 15, prefixes: '505827028')
186
+ end
187
+
188
+ it 'should validate number as kortimilli' do
189
+ expect(detector(kortimilli_number).valid?(:kortimilli)).must_equal true
190
+ expect(detector(kortimilli_number).kortimilli?).must_equal true
191
+ expect(detector(kortimilli_number).brand).must_equal :kortimilli
192
+ end
193
+ end
194
+ end
173
195
  end
174
196
 
175
197
  describe 'plugins' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: credit_card_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-05 00:00:00.000000000 Z
11
+ date: 2024-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.1'
22
+ version: '8.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.1'
32
+ version: '8.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '5.2'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '7.1'
42
+ version: '8.1'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '5.2'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '7.1'
52
+ version: '8.1'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: minitest
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -82,16 +82,16 @@ dependencies:
82
82
  name: rake
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - "~>"
85
+ - - ">="
86
86
  - !ruby/object:Gem::Version
87
- version: '10'
87
+ version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - "~>"
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
- version: '10'
94
+ version: '0'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: byebug
97
97
  requirement: !ruby/object:Gem::Requirement
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  requirements: []
170
- rubygems_version: 3.1.6
170
+ rubygems_version: 3.4.22
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: gem should be used for credit card numbers validation, card brands detections,