-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathremittanceFreeText_test.go
135 lines (100 loc) · 5.79 KB
/
remittanceFreeText_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package wire
import (
"errors"
"strings"
"testing"
"github.com/stretchr/testify/require"
)
// RemittanceFreeText creates a RemittanceFreeText
func mockRemittanceFreeText() *RemittanceFreeText {
rft := NewRemittanceFreeText()
rft.LineOne = "Remittance Free Text Line One"
rft.LineTwo = "Remittance Free Text Line Two"
rft.LineThree = "Remittance Free Text Line Three"
return rft
}
// TestMockRemittanceFreeText validates mockRemittanceFreeText
func TestMockRemittanceFreeText(t *testing.T) {
rft := mockRemittanceFreeText()
require.NoError(t, rft.Validate(), "mockRemittanceFreeText does not validate and will break other tests")
}
// TestRemittanceFreeTextLineOneAlphaNumeric validates RemittanceFreeText LineOne is alphanumeric
func TestRemittanceFreeTextLineOneAlphaNumeric(t *testing.T) {
rft := mockRemittanceFreeText()
rft.LineOne = "®"
err := rft.Validate()
require.EqualError(t, err, fieldError("LineOne", ErrNonAlphanumeric, rft.LineOne).Error())
}
// TestRemittanceFreeTextLineTwoAlphaNumeric validates RemittanceFreeText LineTwo is alphanumeric
func TestRemittanceFreeTextLineTwoAlphaNumeric(t *testing.T) {
rft := mockRemittanceFreeText()
rft.LineTwo = "®"
err := rft.Validate()
require.EqualError(t, err, fieldError("LineTwo", ErrNonAlphanumeric, rft.LineTwo).Error())
}
// TestRemittanceFreeTextLineThreeAlphaNumeric validates RemittanceFreeText LineThree is alphanumeric
func TestRemittanceFreeTextLineThreeAlphaNumeric(t *testing.T) {
rft := mockRemittanceFreeText()
rft.LineThree = "®"
err := rft.Validate()
require.EqualError(t, err, fieldError("LineThree", ErrNonAlphanumeric, rft.LineThree).Error())
}
// TestParseRemittanceFreeTextWrongLength parses a wrong RemittanceFreeText record length
func TestParseRemittanceFreeTextWrongLength(t *testing.T) {
var line = "{8750}Remittance Free Text Line One Remittance Free Text Line Two Remittance Free Text Line Three "
r := NewReader(strings.NewReader(line))
r.line = line
err := r.parseRemittanceFreeText()
require.EqualError(t, err, r.parseError(fieldError("LineOne", ErrRequireDelimiter)).Error())
}
// TestParseRemittanceFreeTextReaderParseError parses a wrong RemittanceFreeText reader parse error
func TestParseRemittanceFreeTextReaderParseError(t *testing.T) {
var line = "{8750}Re®ittance Free Text Line One *Remittance Free Text Line Two Remittance Free Text Line Three *"
r := NewReader(strings.NewReader(line))
r.line = line
err := r.parseRemittanceFreeText()
require.EqualError(t, err, r.parseError(fieldError("LineOne", ErrNonAlphanumeric, "Re®ittance Free Text Line One")).Error())
_, err = r.Read()
require.EqualError(t, err, r.parseError(fieldError("LineOne", ErrNonAlphanumeric, "Re®ittance Free Text Line One")).Error())
}
// TestRemittanceFreeTextTagError validates a RemittanceFreeText tag
func TestRemittanceFreeTextTagError(t *testing.T) {
rft := mockRemittanceFreeText()
rft.tag = "{9999}"
require.EqualError(t, rft.Validate(), fieldError("tag", ErrValidTagForType, rft.tag).Error())
}
// TestStringRemittanceFreeTextVariableLength parses using variable length
func TestStringRemittanceFreeTextVariableLength(t *testing.T) {
var line = "{8750}"
r := NewReader(strings.NewReader(line))
r.line = line
err := r.parseRemittanceFreeText()
require.NoError(t, err)
line = "{8750} NNN"
r = NewReader(strings.NewReader(line))
r.line = line
err = r.parseRemittanceFreeText()
require.ErrorContains(t, err, ErrRequireDelimiter.Error())
line = "{8750}****************************"
r = NewReader(strings.NewReader(line))
r.line = line
err = r.parseRemittanceFreeText()
require.ErrorContains(t, err, r.parseError(NewTagMaxLengthErr(errors.New(""))).Error())
line = "{8750}*"
r = NewReader(strings.NewReader(line))
r.line = line
err = r.parseRemittanceFreeText()
require.NoError(t, err)
}
// TestStringRemittanceFreeTextOptions validates Format() formatted according to the FormatOptions
func TestStringRemittanceFreeTextOptions(t *testing.T) {
var line = "{8750}"
r := NewReader(strings.NewReader(line))
r.line = line
err := r.parseRemittanceFreeText()
require.NoError(t, err)
record := r.currentFEDWireMessage.RemittanceFreeText
require.Equal(t, "{8750} * * *", record.String())
require.Equal(t, "{8750}*", record.Format(FormatOptions{VariableLengthFields: true}))
require.Equal(t, record.String(), record.Format(FormatOptions{VariableLengthFields: false}))
}