github.com/moov-io/imagecashletter@v0.10.1/file_test.go (about) 1 // Copyright 2020 The Moov Authors 2 // Use of this source code is governed by an Apache License 3 // license that can be found in the LICENSE file. 4 5 package imagecashletter 6 7 import ( 8 "os" 9 "path/filepath" 10 "testing" 11 12 "github.com/stretchr/testify/require" 13 ) 14 15 // mockFile creates an imagecashletter file 16 func mockFile(t *testing.T) *File { 17 t.Helper() 18 19 f := NewFile() 20 f.SetHeader(mockFileHeader()) 21 clh := mockCashLetterHeader() 22 mockCashLetter := NewCashLetter(clh) 23 mockCashLetter.CashLetterControl = mockCashLetterControl() 24 f.AddCashLetter(mockCashLetter) 25 26 require.NoError(t, f.Create()) 27 28 return f 29 } 30 31 func TestFileCreate(t *testing.T) { 32 file := mockFile(t) 33 require.NoError(t, file.Validate()) 34 } 35 36 func TestFile_FileFromJSON(t *testing.T) { 37 bs, err := os.ReadFile(filepath.Join("test", "testdata", "icl-valid.json")) 38 require.NoError(t, err) 39 40 file, err := FileFromJSON(bs) 41 require.NoError(t, err) 42 require.NoError(t, file.Validate()) 43 44 // error conditions 45 46 f, err := FileFromJSON(nil) 47 require.Nil(t, f) 48 require.Error(t, err) 49 50 f, err = FileFromJSON([]byte(`{invalid-json`)) 51 require.Nil(t, f) 52 require.Error(t, err) 53 }