credit_card_validations 1.1.0 → 1.1.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.
- data/lib/active_model/credit_card_number_validator.rb +16 -0
- data/lib/credit_card_validations.rb +2 -2
- data/lib/credit_card_validations/detector.rb +1 -1
- data/lib/credit_card_validations/version.rb +1 -1
- data/test/credit_card_validations_test.rb +1 -2
- metadata +10 -10
- data/lib/credit_card_number_validator.rb +0 -11
@@ -0,0 +1,16 @@
|
|
1
|
+
module ActiveModel
|
2
|
+
module Validations
|
3
|
+
class CreditCardNumberValidator < EachValidator
|
4
|
+
|
5
|
+
def validate_each(record, attribute, value)
|
6
|
+
brands = options.fetch(:brands)
|
7
|
+
record.errors[attribute] << (options[:message] || "is not valid") unless credit_card_valid?(value, Array.wrap(brands))
|
8
|
+
end
|
9
|
+
|
10
|
+
def credit_card_valid?(number, brands = [])
|
11
|
+
CreditCardValidations::Detector.new(number).valid?(*brands)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'credit_card_validations/version'
|
2
2
|
require 'active_model'
|
3
|
-
require 'active_support/
|
3
|
+
require 'active_support/core_ext'
|
4
4
|
require 'active_model/validations'
|
5
|
-
require 'credit_card_number_validator'
|
5
|
+
require 'active_model/credit_card_number_validator'
|
6
6
|
|
7
7
|
module CreditCardValidations
|
8
8
|
extend ActiveSupport::Autoload
|
@@ -22,7 +22,7 @@ module CreditCardValidations
|
|
22
22
|
def valid_number?(*brands)
|
23
23
|
return nil unless valid_luhn?
|
24
24
|
number_length = number.length
|
25
|
-
brand_rules = brands.blank? ? self.rules : self.rules.slice(*brands.map{|el| el.downcase
|
25
|
+
brand_rules = brands.blank? ? self.rules : self.rules.slice(*brands.map{ |el| el.downcase })
|
26
26
|
unless brand_rules.blank?
|
27
27
|
brand_rules.each do |brand_name, rules|
|
28
28
|
rules.each do |rule|
|
@@ -14,7 +14,6 @@ class CreditCardValidationsTest < Test::Unit::TestCase
|
|
14
14
|
validates :number, presence: true, credit_card_number: {brands: [:amex, :maestro]}
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
17
|
def initialize name
|
19
18
|
super name
|
20
19
|
@test_numbers = {
|
@@ -79,7 +78,7 @@ class CreditCardValidationsTest < Test::Unit::TestCase
|
|
79
78
|
cc.number = @test_numbers[:mastercard]
|
80
79
|
assert !cc.valid?
|
81
80
|
cc.number = @test_numbers[:amex]
|
82
|
-
assert cc.valid?
|
81
|
+
assert cc.valid?
|
83
82
|
end
|
84
83
|
|
85
84
|
def test_string_extension
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: credit_card_validations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-04-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
16
|
-
requirement: &
|
16
|
+
requirement: &70129509894700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70129509894700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
requirement: &
|
27
|
+
requirement: &70129509900380 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70129509900380
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: test-unit
|
38
|
-
requirement: &
|
38
|
+
requirement: &70129509896480 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70129509896480
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70129509904920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70129509904920
|
58
58
|
description: A ruby gem for validating credit card numbers (a port of ZF2 Zend\Validator\CreditCard)
|
59
59
|
email:
|
60
60
|
- fedoronchuk@gmail.com
|
@@ -67,7 +67,7 @@ files:
|
|
67
67
|
- README.md
|
68
68
|
- Rakefile
|
69
69
|
- credit_card_validations.gemspec
|
70
|
-
- lib/credit_card_number_validator.rb
|
70
|
+
- lib/active_model/credit_card_number_validator.rb
|
71
71
|
- lib/credit_card_validations.rb
|
72
72
|
- lib/credit_card_validations/card_rules.rb
|
73
73
|
- lib/credit_card_validations/detector.rb
|
@@ -1,11 +0,0 @@
|
|
1
|
-
class CreditCardNumberValidator < ActiveModel::EachValidator
|
2
|
-
|
3
|
-
def validate_each(record, attribute, value)
|
4
|
-
brands = options.fetch(:brands)
|
5
|
-
record.errors[attribute] << (options[:message] || "is not valid") unless credit_card_valid?(value, Array.wrap(brands))
|
6
|
-
end
|
7
|
-
|
8
|
-
def credit_card_valid?(number, brands = [])
|
9
|
-
CreditCardValidations::Detector.new(number).valid?(*brands)
|
10
|
-
end
|
11
|
-
end
|