github.com/jdolitsky/cnab-go@v0.7.1-beta1/utils/crud/store_test.go (about) 1 package crud 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 // The main point of these tests is to catch any case where the interface 10 // changes. But we also provide a mock for testing. 11 var _ Store = &MockStore{} 12 13 func TestMockStore(t *testing.T) { 14 s := NewMockStore() 15 is := assert.New(t) 16 is.NoError(s.Store("test", []byte("data"))) 17 list, err := s.List() 18 is.NoError(err) 19 is.Len(list, 1) 20 data, err := s.Read("test") 21 is.NoError(err) 22 is.Equal(data, []byte("data")) 23 24 } 25 26 type MockStore struct { 27 data map[string][]byte 28 } 29 30 func NewMockStore() *MockStore { 31 return &MockStore{data: map[string][]byte{}} 32 } 33 34 func (s *MockStore) List() ([]string, error) { 35 buf := make([]string, len(s.data)) 36 i := 0 37 for k := range s.data { 38 buf[i] = k 39 i++ 40 } 41 return buf, nil 42 } 43 func (s *MockStore) Store(name string, data []byte) error { s.data[name] = data; return nil } 44 func (s *MockStore) Read(name string) ([]byte, error) { return s.data[name], nil } 45 func (s *MockStore) Delete(name string) error { delete(s.data, name); return nil }