metro_2 1.2.4 → 1.2.5

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
  SHA256:
3
- metadata.gz: 53c7a7abd63b475add82aa238e4cb634767b38ca2c0f49f98422c3de53485c59
4
- data.tar.gz: 7043dbe7604d64c8b5db6b3fa9062c2b169e701a033a27ea480ab5b2ca2fa31c
3
+ metadata.gz: d01632b27a1c846c37db947bfb4502ef109d0aa987daf598ffcbd8a810f6fd2b
4
+ data.tar.gz: 4212d0fced1d05b500db2aac38d16a0e0fd935f25933824f9b7a99a8e6c2f9e0
5
5
  SHA512:
6
- metadata.gz: 571c5c7704912cf4f984a2bb4f2c32e691afdc70a465c9b88c876b2a1fa332d93a5b62fea1b2451aff42dd9ca7ebe3953473ad41becbfddd714e77b55271bb83
7
- data.tar.gz: 1d111fde7dd76134d9722d5ef164414c3b0b3eb46362fc76ee267b6cc55912f5a2af06ff6aaf2a372501cdf71a967d1b2b22a6986be4faa67beebe910659c488
6
+ metadata.gz: f2680086eed4bd35915d66076af44bb77eb7c8db254b24df7d406e7a3268e76896fbd0c979d41c56845d0f71e55bb241c89d4e5a6f21406c7200d468e2387236
7
+ data.tar.gz: 11e923f3641cf71cf6e572d6255385b853105627fa04cf94be157948ed29bdec2daf1ab68ce89e6d9717bcc6268c54ebef43135f39fe7144ba03b5c2031fab5e
data/.rubocop.yml CHANGED
@@ -1,12 +1,4 @@
1
- # The behavior of RuboCop can be controlled via the .rubocop.yml
2
- # configuration file. It makes it possible to enable/disable
3
- # certain cops (checks) and to alter their behavior if they accept
4
- # any parameters. The file can be placed either in your home
5
- # directory or in some project directory.
6
- #
7
- # RuboCop will start looking for the configuration file in the directory
8
- # where the inspected file is and continue its way up to the root directory.
9
- #
10
- # See https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md
1
+ ---
11
2
  Layout/LineLength:
12
- Max: 100
3
+ Max: 120
4
+ Description: Limit lines to 120 characters
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ Metro_2 gem versions
4
+
5
+ # 1.2.5
6
+ 1. Adds account types and ECOA codes for business loans
7
+ 2. Adds J2 segment appendage
@@ -0,0 +1,4 @@
1
+ # Repository Ownership
2
+ Repository Owner - @teamupstart/borrower-squad
3
+
4
+ Slack Channel ID - C08UGTUG1
@@ -61,11 +61,20 @@ module Metro2::Records
61
61
  @k2_segment
62
62
  end
63
63
 
64
+ def j2_segment
65
+ @j2_segment
66
+ end
67
+
64
68
  def k2_segment=(segment)
65
69
  @k2_segment = segment
66
70
  @appendages << @k2_segment
67
71
  end
68
72
 
73
+ def j2_segment=(segment)
74
+ @j2_segment = segment
75
+ @appendages << @j2_segment
76
+ end
77
+
69
78
  def to_metro2
70
79
  @appendages.compact!
71
80
  set_record_descriptor_word
@@ -0,0 +1,29 @@
1
+ module Metro2::Records
2
+ class J2Segment < Record
3
+ LENGTH = 200
4
+
5
+ @fields = []
6
+
7
+ alphanumeric_const_field :segment_identifier, 2, "J2"
8
+ alphanumeric_const_field :reserved, 1, nil # reserved - blank fill
9
+ alphanumeric_field :surname, 25, Metro2::ALPHANUMERIC_PLUS_DASH
10
+ alphanumeric_field :first_name, 20, Metro2::ALPHANUMERIC_PLUS_DASH
11
+ alphanumeric_field :middle_name, 20, Metro2::ALPHANUMERIC_PLUS_DASH
12
+ alphanumeric_field :generation_code, 1
13
+ numeric_field :social_security_number, 9
14
+ date_field :date_of_birth
15
+ numeric_field :telephone_number, 10
16
+ alphanumeric_field :ecoa_code, 1
17
+ alphanumeric_field :consumer_information_indicator, 2
18
+ alphanumeric_field :country_code, 2
19
+ alphanumeric_field :address_1, 32, Metro2::ALPHANUMERIC_PLUS_DOT_DASH_SLASH
20
+ alphanumeric_field :address_2, 32, Metro2::ALPHANUMERIC_PLUS_DOT_DASH_SLASH
21
+ alphanumeric_field :city, 20, Metro2::ALPHANUMERIC_PLUS_DOT_DASH_SLASH
22
+ alphanumeric_field :state, 2
23
+ alphanumeric_field :postal_code, 9
24
+ alphanumeric_field :address_indicator, 1
25
+ alphanumeric_field :residence_code, 1
26
+ alphanumeric_const_field :reserved2, 2, nil # reserved - blank fill
27
+ end
28
+
29
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Metro2
4
- VERSION = '1.2.4'
4
+ VERSION = '1.2.5'
5
5
 
6
6
  def self.version_string
7
7
  str = VERSION.split('.')
data/lib/metro_2.rb CHANGED
@@ -14,14 +14,17 @@ module Metro2
14
14
  ACCOUNT_TYPE = {
15
15
  auto: '00',
16
16
  unsecured: '01',
17
- education: '12'
17
+ education: '12',
18
+ business_individual_personally_liable: '10'
18
19
  # TODO: add other account types
19
20
  }.freeze
20
21
 
21
22
  ECOA_CODE = {
22
23
  individual: '1',
23
24
  deceased: 'X',
24
- delete: 'Z'
25
+ delete: 'Z',
26
+ comaker_or_guarantor: '5',
27
+ business: 'W'
25
28
  # TODO: add other ECOA codes
26
29
  }.freeze
27
30
 
@@ -36,9 +36,11 @@ describe Metro2::Records::BaseSegment do
36
36
  @base.address_indicator = 'N'
37
37
  @base.residence_code = 'O'
38
38
  @base.k2_segment = k2_segment
39
+ @base.j2_segment = j2_segment
39
40
  end
40
41
 
41
42
  let(:k2_segment) { nil }
43
+ let(:j2_segment) { nil }
42
44
 
43
45
  context '#to_metro2' do
44
46
  let(:expected) do
@@ -115,6 +117,29 @@ describe Metro2::Records::BaseSegment do
115
117
  expect(base_str[0..3].to_i).to eql(expected_length)
116
118
  end
117
119
  end
120
+
121
+ context 'with a J2 segment' do
122
+ let(:j2_segment) do
123
+ j2 = Metro2::Records::J2Segment.new
124
+ j2.surname = "Business Name"
125
+ j2.social_security_number = '333224444'
126
+ j2.date_of_birth = Date.new(1987, 4, 19)
127
+ j2.ecoa_code = 'W'
128
+ j2.country_code = 'US'
129
+ j2.address_1 = '742 Evergreen Terrace'
130
+ j2.city = 'Springfield'
131
+ j2.state = 'IL'
132
+ j2.postal_code = '54321'
133
+ j2
134
+ end
135
+
136
+ it 'should output the j2 segment in its string and update set_record_descriptor_word' do
137
+ base_str = @base.to_metro2
138
+ expected_length = Metro2::Records::BaseSegment::LENGTH + Metro2::Records::J2Segment::LENGTH
139
+ expect(base_str.size).to eql(expected_length)
140
+ expect(base_str[0..3].to_i).to eql(expected_length)
141
+ end
142
+ end
118
143
  end
119
144
 
120
145
  context 'alphanumerics' do
@@ -0,0 +1,53 @@
1
+ require "spec_helper"
2
+
3
+ describe Metro2::Records::BaseSegment do
4
+ before do
5
+ @j2_segment = Metro2::Records::J2Segment.new
6
+ @j2_segment.surname = business_name
7
+ @j2_segment.social_security_number = "333224444"
8
+ @j2_segment.date_of_birth = Date.new(1987, 4, 19)
9
+ @j2_segment.ecoa_code = "W"
10
+ @j2_segment.country_code = 'US'
11
+ @j2_segment.address_1 = '742 Evergreen Terrace'
12
+ @j2_segment.city = 'Springfield'
13
+ @j2_segment.state = 'IL'
14
+ @j2_segment.postal_code = '54321'
15
+ end
16
+
17
+ context "#to_metro2" do
18
+ let(:expected) do
19
+ [
20
+ "J2",
21
+ " ",
22
+ business_name.to_s.ljust(25, ' '),
23
+ " " * 20,
24
+ " " * 20,
25
+ " ",
26
+ "333224444",
27
+ "04191987",
28
+ "0" * 10,
29
+ "W",
30
+ " " * 2,
31
+ "US",
32
+ "742 Evergreen Terrace".ljust(32, ' '),
33
+ " " * 32,
34
+ "Springfield".ljust(20, ' '),
35
+ "IL",
36
+ "54321".ljust(9, ' '),
37
+ " ",
38
+ " ",
39
+ " " * 2
40
+ ]
41
+ end
42
+
43
+ context "with valid attributes set" do
44
+ let(:business_name) { "Business Name" }
45
+
46
+ it "should create output string that matches expected" do
47
+ j2_segment_str = @j2_segment.to_metro2
48
+ expect(j2_segment_str).to eql(expected.join)
49
+ expect(j2_segment_str.size).to eql(Metro2::Records::J2Segment::LENGTH)
50
+ end
51
+ end
52
+ end
53
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metro_2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Mascarenhas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-17 00:00:00.000000000 Z
11
+ date: 2022-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -62,15 +62,18 @@ files:
62
62
  - ".gitignore"
63
63
  - ".rspec"
64
64
  - ".rubocop.yml"
65
+ - CHANGELOG.md
65
66
  - Gemfile
66
67
  - LICENSE.txt
67
68
  - README.md
68
69
  - Rakefile
70
+ - Repositoryowner.md
69
71
  - lib/metro_2.rb
70
72
  - lib/metro_2/fields.rb
71
73
  - lib/metro_2/metro2_file.rb
72
74
  - lib/metro_2/records/base_segment.rb
73
75
  - lib/metro_2/records/header_segment.rb
76
+ - lib/metro_2/records/j2_segment.rb
74
77
  - lib/metro_2/records/k2_segment.rb
75
78
  - lib/metro_2/records/record.rb
76
79
  - lib/metro_2/records/trailer_segment.rb
@@ -78,6 +81,7 @@ files:
78
81
  - metro_2.gemspec
79
82
  - spec/records/base_segment_spec.rb
80
83
  - spec/records/header_segment_spec.rb
84
+ - spec/records/j2_segment_spec.rb
81
85
  - spec/records/k2_segment_spec.rb
82
86
  - spec/records/trailer_segment_spec.rb
83
87
  - spec/spec_helper.rb
@@ -100,13 +104,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
104
  - !ruby/object:Gem::Version
101
105
  version: '0'
102
106
  requirements: []
103
- rubygems_version: 3.0.1
107
+ rubygems_version: 3.1.4
104
108
  signing_key:
105
109
  specification_version: 4
106
110
  summary: Create Metro 2 format files for credit reporting
107
111
  test_files:
108
112
  - spec/records/base_segment_spec.rb
109
113
  - spec/records/header_segment_spec.rb
114
+ - spec/records/j2_segment_spec.rb
110
115
  - spec/records/k2_segment_spec.rb
111
116
  - spec/records/trailer_segment_spec.rb
112
117
  - spec/spec_helper.rb