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  }