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  }