uk_account_validator 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: c637157bc170af3a8dfffc98dc8eb077c8399a53
4
- data.tar.gz: 306471bc50f263137a9345d71bdbb01030dfedd9
3
+ metadata.gz: ebcd385fc8ba4ecc1703657a83b9b0eb45b30b51
4
+ data.tar.gz: 5114241aa01ffbfcc0ce676084f133b0c134dea4
5
5
  SHA512:
6
- metadata.gz: 5d4c22ba1364efd73e909e109f99875f281ec87dbbd90e27042cd50223f3a899e7efe803da9aeac4d7f4c634fdfb256413f51ee6f9255f47958ad0ff5f69cdc2
7
- data.tar.gz: 8455a102924d27c735870f1fe061c6200105a8a766a6fe36bf14e761b0e78aad6dc8a4f64b1258a718174d41ee2ca3cb2b0e0d8287de0fdcfe957821584adad3
6
+ metadata.gz: e95c9284cbc1423203ea396c5cba5d97ff46c104458ec031c63a3e6f60433c124d6e43905d7d0e54e5d04f4d98f410f5d05b7b8d16087e6e2288f44bde26c7cc
7
+ data.tar.gz: 9cdb8baca1a7cd094f963331fae6cd72a2f59616b693c398206a65b326b9799e4d18007dc9e2a5fc90cadebb225989111c7476ea2ba19df90fb167e3b2a8f5d9
data/README.md CHANGED
@@ -7,6 +7,10 @@ This gem validates uk account numbers against their sort codes in accordance wit
7
7
 
8
8
  http://www.vocalink.com/media/700427/vocalink_-_validating_account_numbers_v3.20.pdf
9
9
 
10
+ Note that this gem ensures the sort code and account number are valid, not that they exist.
11
+
12
+ NB the resource text files valacdos.txt and scsubtab.txt are produced and released by VocaLink.
13
+
10
14
  Requires Ruby > 2.0.0
11
15
 
12
16
  Usage
@@ -0,0 +1,9 @@
1
+ Feature: Allow hyphens in sort codes
2
+ Background:
3
+ Given I create a new checker
4
+
5
+ Scenario: A user supplies a valid sort code separated by hyphens
6
+ Given I have a sort code 08-99-99
7
+ And I have an account number 66374958
8
+
9
+ Then the combination is valid
@@ -0,0 +1,33 @@
1
+ Feature: Account number and sort code must be in recognised format
2
+ Background:
3
+ Given I create a new checker
4
+
5
+ Scenario: Account number contains letters
6
+ Given I have a sort code 089999
7
+ And I have an account number abcdefgh
8
+
9
+ Then the combination is invalid
10
+
11
+ Scenario: Account number must be at least 6 digits
12
+ Given I have a sort code 089999
13
+ And I have an account number 66374
14
+
15
+ Then the combination is invalid
16
+
17
+ Scenario: Account number may not be more than 10 digits
18
+ Given I have a sort code 089999
19
+ And I have an account number 66374958663
20
+
21
+ Then the combination is invalid
22
+
23
+ Scenario: The sort code may not be less than 6 digits
24
+ Given I have a sort code 08999
25
+ And I have an account number 66374958
26
+
27
+ Then the combination is invalid
28
+
29
+ Scenario: The sort code may not be more than 6 digits
30
+ Given I have a sort code 0899999
31
+ And I have an account number 66374958
32
+
33
+ Then the combination is invalid
@@ -2,11 +2,11 @@ Given(/^I create a new checker$/) do
2
2
  @checker = UkAccountValidator::Validator.new
3
3
  end
4
4
 
5
- Given(/^I have a sort code (\d+)$/) do |sort_code|
5
+ Given(/^I have a sort code (\S+)$/) do |sort_code|
6
6
  @checker.sort_code = sort_code
7
7
  end
8
8
 
9
- Given(/^I have an account number (\d+)$/) do |acc_number|
9
+ Given(/^I have an account number (\S+)$/) do |acc_number|
10
10
  @checker.account_number = acc_number
11
11
  end
12
12
 
@@ -1,12 +1,18 @@
1
1
  module UkAccountValidator
2
2
  class Validator
3
- attr_accessor :account_number, :sort_code
3
+
4
+ attr_writer :sort_code
5
+ attr_accessor :account_number
4
6
 
5
7
  def initialize(account_number = nil, sort_code = nil)
6
8
  @account_number = account_number
7
9
  @sort_code = sort_code
8
10
  end
9
11
 
12
+ def sort_code
13
+ @sort_code.gsub('-', '')
14
+ end
15
+
10
16
  def modulus_weights
11
17
  @modulus_weights ||= UkAccountValidator.modulus_weights_table.find(sort_code)
12
18
  end
@@ -25,6 +31,8 @@ module UkAccountValidator
25
31
  end
26
32
 
27
33
  def valid?
34
+ return false unless valid_format?
35
+
28
36
  exceptions = modulus_weights.map(&:exception)
29
37
  exception_class = self.exception_class(exceptions)
30
38
 
@@ -43,6 +51,15 @@ module UkAccountValidator
43
51
  results.all?
44
52
  end
45
53
 
54
+ def valid_format?
55
+ return false if account_number =~ /\D/
56
+ return false if account_number.length < 6
57
+ return false if account_number.length > 10
58
+ return false if sort_code.length != 6
59
+
60
+ return true
61
+ end
62
+
46
63
  def exception_class(exception_strings)
47
64
  case
48
65
  when exception_strings.include?('1')
@@ -1,3 +1,3 @@
1
1
  module UkAccountValidator
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uk_account_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
  - Hayden Ball
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-16 00:00:00.000000000 Z
11
+ date: 2015-05-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Validate UK Account Numbers and Sort Codes
14
14
  email:
@@ -26,7 +26,9 @@ files:
26
26
  - Rakefile
27
27
  - data/scsubtab.txt
28
28
  - data/valacdos.txt
29
+ - features/allow_hyphens_in_sort_codes.feature
29
30
  - features/exceptions.feature
31
+ - features/invalid_formats.feature
30
32
  - features/modulus10.feature
31
33
  - features/modulus11.feature
32
34
  - features/modulus_weight.feature
@@ -85,7 +87,9 @@ signing_key:
85
87
  specification_version: 4
86
88
  summary: Validate UK Account Numbers and Sort Codes
87
89
  test_files:
90
+ - features/allow_hyphens_in_sort_codes.feature
88
91
  - features/exceptions.feature
92
+ - features/invalid_formats.feature
89
93
  - features/modulus10.feature
90
94
  - features/modulus11.feature
91
95
  - features/modulus_weight.feature