ifsc 0.0.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.
@@ -0,0 +1,113 @@
1
+ require 'ifsc'
2
+
3
+ describe Razorpay::IFSC::IFSC do
4
+ let(:mocked_response) do
5
+ {
6
+ 'BANK' => 'Kotak Mahindra Bank',
7
+ 'IFSC' => 'KKBK0000261',
8
+ 'BRANCH' => 'GURGAON',
9
+ 'ADDRESS' => 'JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,',
10
+ 'CONTACT' => '4131000',
11
+ 'CITY' => 'GURGAON',
12
+ 'DISTRICT' => 'GURGAON',
13
+ 'STATE' => 'HARYAN'
14
+ }
15
+ end
16
+ let(:dummy_code) { 'foo' }
17
+ let(:code_double) { double('code double') }
18
+ let(:code) { described_class.new(mocked_response['IFSC']) }
19
+
20
+ describe '.get' do
21
+ before do
22
+ allow(code).to receive(:api_data).and_return(mocked_response)
23
+ end
24
+
25
+ it 'should parse the IFSC details correctly from the server' do
26
+ fetched_code = code.get
27
+
28
+ expect(fetched_code.bank).to eq mocked_response['BANK']
29
+ expect(fetched_code.ifsc).to eq mocked_response['IFSC']
30
+ expect(fetched_code.branch).to eq mocked_response['BRANCH']
31
+ expect(fetched_code.address).to eq mocked_response['ADDRESS']
32
+ expect(fetched_code.contact).to eq mocked_response['CONTACT']
33
+ expect(fetched_code.city).to eq mocked_response['CITY']
34
+ expect(fetched_code.district).to eq mocked_response['DISTRICT']
35
+ expect(fetched_code.state).to eq mocked_response['STATE']
36
+ end
37
+
38
+ it 'should set @valid to true and skip local validation' do
39
+ fetched_code = code.get
40
+
41
+ expect(fetched_code.instance_variable_get(:@valid)).to eq true
42
+ expect(fetched_code.valid?).to eq true
43
+ end
44
+ end
45
+
46
+ describe '.get_bank_name' do
47
+ before do
48
+ allow(code).to receive(:api_data).and_return(mocked_response)
49
+ end
50
+
51
+ it 'should load the bank name into the object' do
52
+ expect(code.bank).to be_nil
53
+ code.get
54
+ expect(code.bank).to eq mocked_response['BANK']
55
+ end
56
+ end
57
+
58
+ describe '.class' do
59
+ describe '.find' do
60
+ it 'should validate and return the fetched object' do
61
+ expect(described_class).to receive(:new).with(dummy_code).and_return(code_double)
62
+ expect(code_double).to receive(:get)
63
+ described_class.find(dummy_code)
64
+ end
65
+ end
66
+
67
+ describe '#bank_name_for(code)' do
68
+ it 'should return the correct bank name' do
69
+ expect(described_class.bank_name_for(mocked_response['IFSC'])).to eq mocked_response['BANK']
70
+ end
71
+
72
+ it 'should return the correct sublet bank name' do
73
+ expect(described_class.bank_name_for('ALLA0AU1002')).to eq 'Allahabad Up Gramin Bank'
74
+ end
75
+ end
76
+
77
+ describe '#valid?' do
78
+ it 'should validate regular numeric branch codes' do
79
+ expect(described_class.valid?('KKBK0000261')).to eq true
80
+ expect(described_class.valid?('HDFC0002854')).to eq true
81
+ expect(described_class.valid?('KARB0000001')).to eq true
82
+ end
83
+
84
+ it 'should validate range branch codes' do
85
+ expect(described_class.valid?('DLXB0000097')).to eq true
86
+ end
87
+
88
+ it 'should validate string branch codes' do
89
+ expect(described_class.valid?('BOTM0NEEMRA')).to eq true
90
+ expect(described_class.valid?('BARB0ZOOTIN')).to eq true
91
+ end
92
+
93
+ it 'should not validate invalid codes' do
94
+ expect(described_class.valid?('BOTM0XEEMRA')).to eq false
95
+ expect(described_class.valid?('BOTX0000000')).to eq false
96
+ expect(described_class.valid?('BOTX0000500')).to eq false
97
+ expect(described_class.valid?('BOTM0000500')).to eq false
98
+ expect(described_class.valid?('DLXB0000500')).to eq false
99
+ end
100
+ end
101
+
102
+ describe '#validate!' do
103
+ context 'when valid? returns false' do
104
+ before do
105
+ allow(described_class).to receive(:valid?).with(dummy_code).and_return(false)
106
+ end
107
+ it 'should raise an error when validations fail' do
108
+ expect { described_class.validate!(dummy_code) }.to raise_error(Razorpay::IFSC::InvalidCodeError)
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,13 @@
1
+ require 'ifsc'
2
+
3
+ describe Razorpay::IFSC::IFSC do
4
+ tests = JSON.parse File.read 'tests/validator_asserts.json'
5
+
6
+ tests.each do |test_name, test_cases|
7
+ it "should #{test_name}" do
8
+ test_cases.each do |ifsc, expected_value|
9
+ expect(Razorpay::IFSC::IFSC.valid? ifsc).to eq expected_value
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ {
2
+ "testBasicValidator": {
3
+ "KKBK0000261": true,
4
+ "HDFC0002854": true,
5
+ "KARB0000001": true
6
+ },
7
+ "testValidateInsideRange": {
8
+ "DLXB0000097": true
9
+ },
10
+ "testValidateStringLookup": {
11
+ "BOTM0NEEMRA": true,
12
+ "BARB0ZOOTIN": true
13
+ },
14
+ "testValidateInvalidCode": {
15
+ "BOTM0XEEMRA": false,
16
+ "BOTX0XEEMRA": false,
17
+ "BOTX0000000": false,
18
+ "BOTX0000500": false,
19
+ "BOTM0000500": false,
20
+ "DLXB0000500": false
21
+ },
22
+ "testHPSC": {
23
+ "HPSC0000406": true,
24
+ "HPSC0000300": false
25
+ }
26
+ }
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ifsc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Abhay Rana
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-08-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.15'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.6'
55
+ description: A simple gem by @razorpay to help you validate your IFSC codes. IFSC
56
+ codes are bank codes within India
57
+ email:
58
+ - nemo@razorpay.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - CONTRIBUTING.md
64
+ - Gemfile
65
+ - README.md
66
+ - ifsc.gemspec
67
+ - src/IFSC.json
68
+ - src/banknames.json
69
+ - src/ruby/ifsc.rb
70
+ - src/sublet.json
71
+ - tests/ruby/ifsc_spec.rb
72
+ - tests/ruby/validate_spec.rb
73
+ - tests/validator_asserts.json
74
+ homepage: https://ifsc.razorpay.com
75
+ licenses:
76
+ - MIT
77
+ metadata: {}
78
+ post_install_message:
79
+ rdoc_options: []
80
+ require_paths:
81
+ - src/ruby
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ requirements: []
93
+ rubyforge_project:
94
+ rubygems_version: 2.6.12
95
+ signing_key:
96
+ specification_version: 4
97
+ summary: IFSC code database to help you validate IFSC codes
98
+ test_files:
99
+ - tests/ruby/ifsc_spec.rb
100
+ - tests/ruby/validate_spec.rb
101
+ - tests/validator_asserts.json