credit_card_validations 1.5.1 → 2.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.
@@ -1,151 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'yaml'
3
-
4
- class CreditCardValidationsTest < MiniTest::Test
5
-
6
-
7
- def initialize name
8
- super name
9
- @test_valid_numbers = YAML.load_file File.join(File.dirname(__FILE__), 'fixtures/valid_cards.yml')
10
- @test_invalid_numbers = YAML.load_file File.join(File.dirname(__FILE__), 'fixtures/invalid_cards.yml')
11
- end
12
-
13
-
14
- def test_card_luhn
15
- @test_valid_numbers.each do |brand, card_numbers|
16
- if has_luhn_check_rule?(brand)
17
- card_numbers.each do |number|
18
- assert luhn_valid?(detector(number).number), "#{number} failed luhn"
19
- end
20
- end
21
- end
22
-
23
- end
24
-
25
- def test_card_if_credit_card_valid
26
- @test_valid_numbers.each do |brand, card_numbers|
27
- card_numbers.each do |card_number|
28
- assert detector(card_number).send("#{brand}?"), "#{card_number} is #{brand}"
29
- assert_equal brand, detector(card_number).brand, "#{card_number} detects as #{brand}"
30
- end
31
- end
32
- end
33
-
34
- def test_card_if_credit_card_invalid
35
- @test_invalid_numbers.each do |card_number|
36
- assert !detector(card_number).valid?
37
- assert_nil detector(card_number).brand
38
- @test_valid_numbers.keys.each do |brand|
39
- assert !detector(card_number).send("#{brand}?")
40
- end
41
- end
42
- end
43
-
44
- def test_card_brand_detection_with_restriction
45
- @test_valid_numbers.slice(:visa, :mastercard).each do |key, value|
46
- assert_equal key, detector(value.first).brand(:visa, :mastercard)
47
- end
48
-
49
- @test_valid_numbers.except(:visa, :mastercard).each do |key, value|
50
- assert_nil detector(value.first).brand(:visa, :mastercard)
51
- end
52
- end
53
-
54
- def test_card_valid_method
55
- @test_valid_numbers.each do |key, value|
56
- value.each do |card_number|
57
- assert detector(card_number).valid?(key)
58
- assert detector(card_number).valid?
59
- end
60
- end
61
- end
62
-
63
- def test_card_particular_brand_valid
64
- assert !detector(@test_valid_numbers[:visa].first).valid?(:mastercard)
65
- assert !detector(@test_valid_numbers[:mastercard].first).valid?(:visa)
66
- end
67
-
68
- def test_card_particular_brands_valid
69
- assert detector(@test_valid_numbers[:visa].first).valid?(:mastercard, :visa)
70
- assert !detector(@test_valid_numbers[:visa].first).valid?(:mastercard, :amex)
71
- end
72
-
73
- #add rules which were not present before
74
- def test_card_valid_after_rules_added
75
- voyager_test_card_number = '869926275400212'
76
- assert !detector(voyager_test_card_number).valid?
77
- CreditCardValidations::Detector.add_rule(:voyager, 15, '86')
78
- assert detector(voyager_test_card_number).valid?
79
- assert_equal :voyager, detector(voyager_test_card_number).brand
80
- assert detector(voyager_test_card_number).voyager?
81
- assert !detector(voyager_test_card_number).visa?
82
- assert !detector(voyager_test_card_number).mastercard?
83
- end
84
-
85
- def test_active_model_any_validator
86
- cc = AnyCreditCard.new
87
- cc.number='1'
88
- assert !cc.valid?
89
- cc.number = @test_valid_numbers[:mastercard].first
90
- assert cc.valid?
91
- end
92
-
93
- def test_active_model_validator
94
- cc = CreditCard.new
95
- cc.number = @test_valid_numbers[:maestro].first
96
- assert cc.valid?
97
-
98
- cc = CreditCard.new
99
- cc.number = @test_valid_numbers[:mastercard].first
100
- assert !cc.valid?
101
- assert cc.errors[:number].include?(cc.errors.generate_message(:number, :invalid))
102
-
103
- end
104
-
105
- def test_string_extension
106
- assert !@test_valid_numbers[:mastercard].first.respond_to?(:credit_card_brand)
107
- assert !@test_valid_numbers[:mastercard].first.respond_to?(:valid_credit_card_brand?)
108
- require 'credit_card_validations/string'
109
- assert_equal @test_valid_numbers[:mastercard].first.credit_card_brand, :mastercard
110
- assert @test_valid_numbers[:mastercard].first.valid_credit_card_brand?(:mastercard)
111
- assert !@test_valid_numbers[:mastercard].first.valid_credit_card_brand?(:visa, :amex)
112
- end
113
-
114
- def test_call_luhn
115
- d = detector(@test_valid_numbers[:unionpay].first)
116
- d.expects(:valid_luhn?).once
117
- assert !d.valid?(:visa)
118
-
119
- d.expects(:valid_luhn?).once
120
- assert d.valid?(:visa, :unionpay)
121
- end
122
-
123
- def test_skip_luhn
124
- d = detector(@test_valid_numbers[:unionpay].first)
125
- d.expects(:valid_luhn?).never
126
- assert d.valid?(:unionpay)
127
- d.expects(:valid_luhn?).never
128
- assert d.valid?(:unionpay, :visa)
129
- end
130
-
131
- def test_mmi
132
- d = detector(@test_valid_numbers[:visa].first)
133
- assert_equal d.issuer_category, CreditCardValidations::Mmi::ISSUER_CATEGORIES[d.number[0]]
134
- end
135
-
136
- protected
137
-
138
- def luhn_valid?(number)
139
- CreditCardValidations::Luhn.valid?(number)
140
- end
141
-
142
- def detector(number)
143
- CreditCardValidations::Detector.new(number)
144
- end
145
-
146
-
147
- def has_luhn_check_rule?(brand)
148
- CreditCardValidations::Detector.rules[brand].any? { |rule| !rule[:skip_luhn] }
149
- end
150
-
151
- end
@@ -1,6 +0,0 @@
1
- class AnyCreditCard
2
- attr_accessor :number
3
- include ActiveModel::Validations
4
- validates :number, presence: true, credit_card_number: true
5
- end
6
-
@@ -1,5 +0,0 @@
1
- class CreditCard
2
- attr_accessor :number
3
- include ActiveModel::Validations
4
- validates :number, credit_card_number: {brands: [:amex, :maestro]}
5
- end