Skip to content

Commit 5462370

Browse files
authored
Merge pull request #143 from loukotal/fix/j1-j2-generation-code
Fix J1 & J2 validation for missing/empty generationCode
2 parents fd6fd84 + 6ed3ed9 commit 5462370

File tree

4 files changed

+56
-4
lines changed

4 files changed

+56
-4
lines changed

pkg/lib/j1_segment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func (s *J1Segment) Length() int {
159159
func (s *J1Segment) ValidateGenerationCode() error {
160160
switch s.GenerationCode {
161161
case GenerationCodeJunior, GenerationCodeSenior, GenerationCode2, GenerationCode3, GenerationCode4,
162-
GenerationCode5, GenerationCode6, GenerationCode7, GenerationCode8, GenerationCode9:
162+
GenerationCode5, GenerationCode6, GenerationCode7, GenerationCode8, GenerationCode9, "":
163163
return nil
164164
}
165165
return utils.NewErrInvalidValueOfField("generation code", "j1 segment")

pkg/lib/j1_segment_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ package lib
66

77
import (
88
"bytes"
9+
"encoding/json"
10+
911
"gopkg.in/check.v1"
1012
)
1113

@@ -26,6 +28,26 @@ func (t *SegmentTest) TestJ1SegmentWithInvalidData(c *check.C) {
2628
c.Assert(err, check.Not(check.IsNil))
2729
}
2830

31+
func (t *SegmentTest) TestJ1SegmentWithEmptyGenerationCode(c *check.C) {
32+
jsonStr := `{
33+
"segmentIdentifier": "J1",
34+
"surname": "BEAUCHAMP",
35+
"firstName": "KEVIN",
36+
"socialSecurityNumber": 445112877,
37+
"dateBirth": "2020-01-02T00:00:00Z",
38+
"telephoneNumber": 4335552333,
39+
"ecoaCode": "2",
40+
"consumerInformationIndicator": "R"
41+
}`
42+
segment := NewJ1Segment()
43+
err := json.Unmarshal([]byte(jsonStr), &segment)
44+
c.Assert(err, check.IsNil)
45+
err = segment.Validate()
46+
c.Assert(err, check.IsNil)
47+
c.Assert(segment.Name(), check.Equals, J1SegmentName)
48+
c.Assert(segment.Length(), check.Equals, J1SegmentLength)
49+
}
50+
2951
func (t *SegmentTest) TestJ1SegmentWithInvalidGenerationCode(c *check.C) {
3052
segment := J1Segment{}
3153
_, err := segment.Parse(t.sampleJ1Segment)

pkg/lib/j2_segment.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,10 @@ func (s *J2Segment) Length() int {
215215
func (s *J2Segment) ValidateGenerationCode() error {
216216
switch s.GenerationCode {
217217
case GenerationCodeJunior, GenerationCodeSenior, GenerationCode2, GenerationCode3, GenerationCode4,
218-
GenerationCode5, GenerationCode6, GenerationCode7, GenerationCode8, GenerationCode9:
218+
GenerationCode5, GenerationCode6, GenerationCode7, GenerationCode8, GenerationCode9, "":
219219
return nil
220220
}
221-
return utils.NewErrInvalidValueOfField("generation code", "j1 segment")
221+
return utils.NewErrInvalidValueOfField("generation code", "j2 segment")
222222
}
223223

224224
// validation of telephone number

pkg/lib/j2_segment_test.go

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ package lib
66

77
import (
88
"bytes"
9+
"encoding/json"
10+
911
"gopkg.in/check.v1"
1012
)
1113

@@ -33,7 +35,35 @@ func (t *SegmentTest) TestJ2SegmentWithInvalidGenerationCode(c *check.C) {
3335
segment.GenerationCode = "0"
3436
err = segment.Validate()
3537
c.Assert(err, check.Not(check.IsNil))
36-
c.Assert(err.Error(), check.DeepEquals, "generation code in j1 segment has an invalid value")
38+
c.Assert(err.Error(), check.DeepEquals, "generation code in j2 segment has an invalid value")
39+
}
40+
41+
func (t *SegmentTest) TestJ2SegmentWithEmptyGenerationCode(c *check.C) {
42+
jsonStr := `{
43+
"segmentIdentifier": "J2",
44+
"surname": "BEAUCHAMP",
45+
"firstName": "KEVIN",
46+
"socialSecurityNumber": 445112877,
47+
"dateBirth": "2020-01-02T00:00:00Z",
48+
"telephoneNumber": 4335552333,
49+
"ecoaCode": "2",
50+
"consumerInformationIndicator": "R",
51+
"countryCode": "US",
52+
"firstLineAddress": "234 HARRISON PLACE",
53+
"secondLineAddress": "SUITE #305",
54+
"city": "LANSING",
55+
"state": "MI",
56+
"zipCode": "72654",
57+
"addressIndicator": "Y",
58+
"residenceCode": "O"
59+
}`
60+
segment := NewJ2Segment()
61+
err := json.Unmarshal([]byte(jsonStr), &segment)
62+
c.Assert(err, check.IsNil)
63+
err = segment.Validate()
64+
c.Assert(err, check.IsNil)
65+
c.Assert(segment.Name(), check.Equals, J2SegmentName)
66+
c.Assert(segment.Length(), check.Equals, J2SegmentLength)
3767
}
3868

3969
func (t *SegmentTest) TestJ2SegmentWithInvalidTelephoneNumber(c *check.C) {

0 commit comments

Comments
 (0)