-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzengin_test.go
174 lines (167 loc) · 15.1 KB
/
zengin_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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package zengin
import (
"reflect"
"strings"
"testing"
)
type test struct {
name string
input string
expected [][]string
expectedError bool
}
func TestZenginToCSV(t *testing.T) {
var tests = []test{
{"InvalidFile", "invalid file", nil, true},
{"EmptyFile", ``, [][]string{}, true},
{"NoDataRecord", `12110110999999ケンシン タロウ 02242606 010 20999999
8000000000000000000
9`, [][]string{
{"振込名義人", "金融機関コード", "支店コード", "科目", "口座番号", "口座名義人", "金額"},
}, false},
{"OneDataRecord", `12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
8000001000000000001
9`, [][]string{
{"振込名義人", "金融機関コード", "支店コード", "科目", "口座番号", "口座名義人", "金額"},
{"ケンシン タロウ", "2606", "020", "1", "9876543", "ケンシン シヨウジ", "1"},
}, false},
{"WrongDate", `12110110999999ケンシン タロウ 13322606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
8000001000000000001
9`, [][]string{}, true},
{"MultipleDataRecords", `12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000004000000000009
9`, [][]string{
{"振込名義人", "金融機関コード", "支店コード", "科目", "口座番号", "口座名義人", "金額"},
{"ケンシン タロウ", "2606", "020", "1", "9876543", "ケンシン シヨウジ", "1"},
{"ケンシン タロウ", "2606", "030", "2", "9999999", "ケンシン ハナコ", "2"},
{"ケンシン タロウ", "2606", "030", "1", "1234567", "ケンシン ジロウ", "3"},
{"ケンシン タロウ", "2606", "030", "1", "1234567", "ケンシン ジロウ", "3"},
}, false},
{"ErrorMissingTrailer", `12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
9`, [][]string{}, true},
{"ErrorMissingHeader", `22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000004000000000009
9`, [][]string{}, true},
{"ErrorMissingEnd", `12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000004000000000009
`, [][]string{}, true},
{"ErrorWrongOrderDataFirst", `22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000004000000000009
9`, [][]string{}, true},
{"ErrorWrongOrderEndInTheMiddle", `12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
9
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000004000000000009
`, [][]string{}, true},
{"ErrorWrongOrderTrailerFirst", `8000004000000000009
12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
9`, [][]string{}, true},
{"ErrorMultipleHeadersMissingTrailer", `12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
12110110999999ケンシン タロ 01142606 010 20999999
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000004000000000009
9`, [][]string{}, true},
{"ErrorMismatchAmount", `
12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
8000002000000000003
12110110999999ケンシン タロ 01142606 010 20999999
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000002000000000009
9`, [][]string{}, true},
{"ErrorMismatchCount", `
12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
8000003000000000003
12110110999999ケンシン タロ 01142606 010 20999999
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000002000000000006
9`, [][]string{}, true},
{"MultipleHeaderRecords", `
12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
8000002000000000003
12110110999999ケンシン タロ 01142606 010 20999999
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000002000000000006
9`, [][]string{
{"振込名義人", "金融機関コード", "支店コード", "科目", "口座番号", "口座名義人", "金額"},
{"ケンシン タロウ", "2606", "020", "1", "9876543", "ケンシン シヨウジ", "1"},
{"ケンシン タロウ", "2606", "030", "2", "9999999", "ケンシン ハナコ", "2"},
{"ケンシン タロ", "2606", "030", "1", "1234567", "ケンシン ジロウ", "3"},
{"ケンシン タロ", "2606", "030", "1", "1234567", "ケンシン ジロウ", "3"},
}, false},
{"MultipleHeaderRecordsWithBadSymbolAtTheEnd", `
12110110999999ケンシン タロウ 02242606 010 20999999
22606ヒヨウゴケンシンクミ 020ヒヨウゴ 19876543ケンシン シヨウジ 00000000010 0
22606ヒヨウゴケンシンクミ 030サンノミヤ 29999999ケンシン ハナコ 00000000020 0
8000002000000000003
12110110999999ケンシン タロ 01142606 010 20999999
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030マイツキブン 0Y
22606ヒヨウゴケンシンクミ 030サンノミヤ 11234567ケンシン ジロウ 00000000030200504001 000001 0
8000002000000000006
9
b`, [][]string{
{"振込名義人", "金融機関コード", "支店コード", "科目", "口座番号", "口座名義人", "金額"},
{"ケンシン タロウ", "2606", "020", "1", "9876543", "ケンシン シヨウジ", "1"},
{"ケンシン タロウ", "2606", "030", "2", "9999999", "ケンシン ハナコ", "2"},
{"ケンシン タロ", "2606", "030", "1", "1234567", "ケンシン ジロウ", "3"},
{"ケンシン タロ", "2606", "030", "1", "1234567", "ケンシン ジロウ", "3"},
}, false},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
reader := strings.NewReader(test.input)
records, err := ToCSVJa(reader)
if test.expectedError {
if err == nil {
t.Fatal("expected error, got nil")
}
} else {
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(records, test.expected) {
t.Fatalf("expected %v, got %v", test.expected, records)
}
}
})
}
}