github.com/moov-io/imagecashletter@v0.10.1/internal/storage/storage_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 storage 6 7 import ( 8 "os" 9 "path/filepath" 10 "testing" 11 12 "github.com/moov-io/base" 13 "github.com/moov-io/imagecashletter" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func TestMemoryStorage(t *testing.T) { 18 repo := &memoryICLFileRepository{ 19 files: make(map[string]*imagecashletter.File), 20 } 21 22 files, err := repo.GetFiles() 23 require.NoError(t, err) 24 require.Equal(t, 0, len(files)) 25 26 f := readFile(t, "BNK20180905121042882-A.icl") 27 f.ID = base.ID() 28 require.NoError(t, repo.SaveFile(f)) 29 30 files, err = repo.GetFiles() 31 require.NoError(t, err) 32 require.Equal(t, 1, len(files)) 33 34 file, err := repo.GetFile(f.ID) 35 require.NoError(t, err) 36 require.Equal(t, f.ID, file.ID) 37 38 require.NoError(t, repo.DeleteFile(f.ID)) 39 files, err = repo.GetFiles() 40 require.NoError(t, err) 41 require.Equal(t, 0, len(files)) 42 } 43 44 func readFile(t *testing.T, filename string) *imagecashletter.File { 45 t.Helper() 46 47 fd, err := os.Open(filepath.Join("..", "..", "test", "testdata", filename)) 48 require.NoError(t, err) 49 f, err := imagecashletter.NewReader(fd, imagecashletter.ReadVariableLineLengthOption()).Read() 50 require.NoError(t, err) 51 return &f 52 }