bank_account_number_validator 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23279b52e4ec9c0af8727a4f360d033dfef2cd57
4
- data.tar.gz: 0e3f5dae5a24ec443271fae6a3a42a49705fcf47
3
+ metadata.gz: 332260d181f0a0a2a193fcdee03520e100531729
4
+ data.tar.gz: 2553d7f51e5397f6b37f4787784694b3d60a1a8d
5
5
  SHA512:
6
- metadata.gz: 532fbdd8f1f471ed89eaa9cc5a5cf82256738a5cc957686d2d9962cfb1a9d5427335a0e3bbd766ac68973f64192a4bb0894c8c2a1b349f56f397f47de3985546
7
- data.tar.gz: ed0ff7f92d1a935ea6701d6b8c24d88ab94c794bcc65b6785f679a1ae6f987d754fbbc20b2fc4b4fb3993099ed30f7ed5a29314e1cfd8ff222738e33b90638df
6
+ metadata.gz: 43a20251d77d74c81739b0277e788bc8c75e4c7893e632fbdd8b8fde58cf4da85e439a429ff54924d6a2327d572741a6fe4cddd12ddf5ef07d670dd620755807
7
+ data.tar.gz: 57a819bdcd0c6c5d5ca072f94f886a53b5bfd1932fcb90e2be4b3036961932553cb7a53156167216a7dc807caae8eabe2a5c5708de529d2754c61b074ef23da7
data/README.md CHANGED
@@ -0,0 +1,17 @@
1
+ #Bank account number validator
2
+
3
+ In this version validations only POLISH bank account number validator
4
+
5
+ ## Installation
6
+ ```ruby
7
+ gem install bank_account_number_validator
8
+ ```
9
+ ## Installation in GemFile
10
+ ```ruby
11
+ gem 'bank_account_number_validator'
12
+ ```
13
+
14
+ ## Usage
15
+ ```ruby
16
+ validates :number, bank_account_number: true
17
+ ```
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = "bank_account_number_validator"
7
- gem.version = '0.0.2'
7
+ gem.version = '0.0.3'
8
8
  gem.authors = ["jacoobb"]
9
9
  gem.email = ["mikrut.jakub@gmail.com"]
10
10
  gem.summary = %q{Bank account number validator}
@@ -1,24 +1,30 @@
1
1
  class BankAccountNumberValidator::Validator
2
2
 
3
3
  def initialize location: nil, value: nil
4
- @validator = location_valid location, numbrt_only(value)
4
+ @value = remote_white_space value
5
+ @validator = location_valid location
5
6
  end
6
7
 
7
8
  def valid
9
+ return false unless only_numer?
8
10
  @validator.valid
9
11
  end
10
12
 
11
13
 
12
14
  private
13
15
 
14
- def numbrt_only value
15
- value.chars.map{|char| char.to_i if char =~ /\d/}.compact
16
+ def only_numer?
17
+ @value =~ /^(?<num>\d+)$/
16
18
  end
17
19
 
18
- def location_valid location, value
20
+ def remote_white_space value
21
+ value.gsub(/\s+/, "")
22
+ end
23
+
24
+ def location_valid location
19
25
  case location
20
26
  when :pl
21
- BankAccountNumberValidator::Validator::Pl.new value: value
27
+ BankAccountNumberValidator::Validator::Pl.new value: @value
22
28
  end
23
29
  end
24
30
  end
@@ -1,6 +1,6 @@
1
1
  class BankAccountNumberValidator::Validator::Pl < BankAccountNumberValidator::Validator
2
2
  def initialize value: nil
3
- @value = value
3
+ @value = value_to_array value
4
4
  @weight = [1,10,3,30,9,90,27,76,81,34,49,5,50,15,53,45,62,38,89,17,73,51,25,56,75,71,31,19,93,57]
5
5
  end
6
6
 
@@ -13,6 +13,10 @@ class BankAccountNumberValidator::Validator::Pl < BankAccountNumberValidator::Va
13
13
 
14
14
 
15
15
  private
16
+
17
+ def value_to_array value
18
+ value.chars.map{|char| char.to_i}
19
+ end
16
20
 
17
21
  def length_valid
18
22
  @value.size == 26
@@ -10,26 +10,38 @@ describe BankAccountNumberValidator::Validator::Pl do
10
10
  end
11
11
 
12
12
  it "return false if number is too short" do
13
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
13
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
14
14
  expect(validator.valid).to be false
15
15
  end
16
16
 
17
17
  it "return false if number is too long" do
18
- validator = BankAccountNumberValidator::Validator::Pl.new value: (1..40).to_a
18
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '11111111111111111111111111111111'
19
19
  expect(validator.valid).to be false
20
20
  end
21
21
 
22
22
  it 'call length_valid' do
23
23
  expect_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:length_valid)
24
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
24
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
25
25
  validator.valid
26
26
  end
27
27
 
28
28
  end
29
29
 
30
+ describe "value_to_array" do
31
+ it "return array" do
32
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
33
+ expect(validator.send(:value_to_array, '123')).to eq [1,2,3]
34
+ end
35
+
36
+ it "call value_to_array" do
37
+ expect_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:value_to_array).with('123')
38
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
39
+ end
40
+ end
41
+
30
42
  describe "set_pl_code" do
31
43
  it "add code to array" do
32
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
44
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
33
45
  expect(validator.send(:set_pl_code)).to eq [1,2,3,2,5,2,1]
34
46
  end
35
47
 
@@ -39,14 +51,14 @@ describe BankAccountNumberValidator::Validator::Pl do
39
51
  allow_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:remainder?)
40
52
 
41
53
  expect_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:set_pl_code)
42
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
54
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
43
55
  validator.valid
44
56
  end
45
57
  end
46
58
 
47
59
  describe "set_first_to_end" do
48
60
  it "set first to end" do
49
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
61
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
50
62
  expect(validator.send(:set_first_to_end)).to eq [3,1,2]
51
63
  end
52
64
 
@@ -56,21 +68,21 @@ describe BankAccountNumberValidator::Validator::Pl do
56
68
  allow_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:remainder?)
57
69
 
58
70
  expect_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:set_first_to_end)
59
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
71
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
60
72
  validator.valid
61
73
  end
62
74
  end
63
75
 
64
76
  describe "sum_up_the_weight" do
65
77
  it "set first to end" do
66
- validator = BankAccountNumberValidator::Validator::Pl.new value: [8,3,1,0,1,0,1,0,2,3,0,0,0,0,2,6,1,3,9,5,1,0,0,0,0,0]
78
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '83101010230000261395100000'
67
79
  expect(validator.send(:sum_up_the_weight)).to eq 2669
68
80
  end
69
81
 
70
82
  it "call sum_up_the_weight" do
71
83
  expect_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:sum_up_the_weight).and_return 97
72
84
 
73
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
85
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
74
86
  validator.send :remainder?
75
87
  end
76
88
  end
@@ -78,13 +90,13 @@ describe BankAccountNumberValidator::Validator::Pl do
78
90
  describe 'remainder?' do
79
91
  it "return true " do
80
92
  allow_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:sum_up_the_weight).and_return 98
81
- validator = BankAccountNumberValidator::Validator::Pl.new value: [8,3]
93
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '83'
82
94
  expect(validator.send(:remainder?)).to be true
83
95
  end
84
96
 
85
97
  it "return false" do
86
98
  allow_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:sum_up_the_weight).and_return 97
87
- validator = BankAccountNumberValidator::Validator::Pl.new value: [8,3]
99
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '83'
88
100
  expect(validator.send(:remainder?)).to be false
89
101
  end
90
102
 
@@ -94,7 +106,7 @@ describe BankAccountNumberValidator::Validator::Pl do
94
106
  allow_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:set_first_to_end)
95
107
 
96
108
  expect_any_instance_of(BankAccountNumberValidator::Validator::Pl).to receive(:remainder?)
97
- validator = BankAccountNumberValidator::Validator::Pl.new value: [1,2,3]
109
+ validator = BankAccountNumberValidator::Validator::Pl.new value: '123'
98
110
  validator.valid
99
111
  end
100
112
  end
@@ -1,28 +1,56 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe BankAccountNumberValidator::Validator do
4
- before(:all) { @number = "IBAN PL83 1010 1023 0000 2613 9510 0000" }
5
-
6
- describe 'numbrt_only' do
7
- it "should return array" do
8
- validator = BankAccountNumberValidator::Validator.new(location: :pl, value: @number)
9
- expect(validator.send(:numbrt_only, @number)).to eq [8, 3, 1, 0, 1, 0, 1, 0, 2, 3, 0, 0, 0, 0, 2, 6, 1, 3, 9, 5, 1, 0, 0, 0, 0, 0]
10
- end
11
- end
4
+ before(:all) { @number = "83" }
12
5
 
13
6
  describe 'location_valid' do
14
7
  it "should call location_valid in initialize" do
15
- allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:numbrt_only).with(@number).and_return([1,2,3])
8
+ allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:remote_white_space).with(@number).and_return('123')
16
9
 
17
- expect_any_instance_of(BankAccountNumberValidator::Validator).to receive(:location_valid).with(:pl, [1,2,3])
18
- BankAccountNumberValidator::Validator.new(location: :pl, value: @number)
10
+ expect_any_instance_of(BankAccountNumberValidator::Validator).to receive(:location_valid).with(:pl)
11
+ BankAccountNumberValidator::Validator.new(location: :pl, value: @number )
19
12
  end
20
13
 
21
14
  it "should call PL validator" do
22
- allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:numbrt_only).with(@number).and_return([1,2,3])
15
+ allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:remote_white_space).with(@number).and_return('123')
23
16
 
24
- expect(BankAccountNumberValidator::Validator::Pl).to receive(:new).with(value: [1,2,3])
17
+ expect(BankAccountNumberValidator::Validator::Pl).to receive(:new).with(value: '123')
25
18
  BankAccountNumberValidator::Validator.new(location: :pl, value: @number)
26
19
  end
27
20
  end
21
+
22
+ describe 'remote_white_space' do
23
+ before do
24
+ allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:location_valid).with(:pl).and_return(@valid_pl)
25
+ end
26
+
27
+ it do
28
+ validator = BankAccountNumberValidator::Validator.new(location: :pl, value: @number)
29
+ expect(validator.send(:remote_white_space, ' 12 23 23 23')).to eq('12232323')
30
+ end
31
+ end
32
+
33
+ describe 'only_numer?' do
34
+
35
+ before (:all) do
36
+ ValidPL = Struct.new(:valid)
37
+ @valid_pl = ValidPL.new(true)
38
+ end
39
+
40
+ before do
41
+ allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:location_valid).with(:pl).and_return(@valid_pl)
42
+ end
43
+
44
+ it "return false" do
45
+ allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:remote_white_space).with(@number).and_return('123a')
46
+ validator = BankAccountNumberValidator::Validator.new(location: :pl, value: @number)
47
+ expect(validator.valid).to be false
48
+ end
49
+
50
+ it "return true" do
51
+ allow_any_instance_of(BankAccountNumberValidator::Validator).to receive(:remote_white_space).with(@number).and_return('123')
52
+ validator = BankAccountNumberValidator::Validator.new(location: :pl, value: @number)
53
+ expect(validator.valid).to be true
54
+ end
55
+ end
28
56
  end
@@ -6,12 +6,12 @@ describe BankAccountNumberValidator do
6
6
  describe "valid is false" do
7
7
 
8
8
  it "number is incorrect" do
9
- dummy_class = DummyClass.new number: 'PL1234567890123456789012345444444535353453'
9
+ dummy_class = DummyClass.new number: '1234567890123456789012345444444535353453'
10
10
  expect(dummy_class.valid?).to be false
11
11
  end
12
12
 
13
13
  it "should return errors" do
14
- dummy_class = DummyClass.new number: 'IBAN PL83 1010 1023 0000 2613 9510 0001'
14
+ dummy_class = DummyClass.new number: '83 1010 1023 0000 2613 9510 0001'
15
15
  dummy_class.valid?
16
16
  expect(dummy_class.errors[:number]).to_not be_empty
17
17
  end
@@ -20,12 +20,12 @@ describe BankAccountNumberValidator do
20
20
  describe "valid is true" do
21
21
 
22
22
  it "number is correct" do
23
- dummy_class = DummyClass.new number: 'IBAN PL83 1010 1023 0000 2613 9510 0000'
23
+ dummy_class = DummyClass.new number: '83 1010 1023 0000 2613 9510 0000'
24
24
  expect(dummy_class.valid?).to be true
25
25
  end
26
26
 
27
27
  it "should not return errors" do
28
- dummy_class = DummyClass.new number: 'IBAN PL83 1010 1023 0000 2613 9510 0000'
28
+ dummy_class = DummyClass.new number: '83 1010 1023 0000 2613 9510 0000'
29
29
  dummy_class.valid?
30
30
  expect(dummy_class.errors[:number]).to be_empty
31
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bank_account_number_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - jacoobb