github.com/seeker-insurance/kit@v0.0.13/assets/assets_test.go (about)

     1  package assets
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/seeker-insurance/kit/copyslice"
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/seeker-insurance/kit/errorlib"
    10  	"github.com/seeker-insurance/kit/maputil/stringmap"
    11  )
    12  
    13  var testAssets = map[string][]byte{}
    14  
    15  const errMissingAsset errorlib.ErrorString = "missing asset"
    16  
    17  func mockGet(m map[string]string) AssetGet {
    18  	m = stringmap.Copy(m)
    19  	return func(s string) ([]byte, error) {
    20  		if v, ok := m[s]; ok {
    21  			return []byte(v), nil
    22  		}
    23  		return nil, errMissingAsset
    24  	}
    25  }
    26  
    27  func mockDir(m map[string][]string) AssetDir {
    28  	copy := make(map[string][]string)
    29  	for k, v := range m {
    30  		copy[k] = copyslice.String(v)
    31  	}
    32  	return func(s string) ([]string, error) {
    33  		if v, ok := m[s]; ok {
    34  			return v, nil
    35  		}
    36  		return nil, errMissingAsset
    37  	}
    38  }
    39  
    40  func revertManager() { Manager = nil }
    41  
    42  func TestGet(t *testing.T) {
    43  	const key, want = "foo", "bar"
    44  	defer revertManager()
    45  	_, err := Get(key)
    46  	assert.EqualError(t, err, string(ErrManagerNotSet))
    47  
    48  	Manager = new(AssetManager)
    49  	_, err = Get(key)
    50  	assert.EqualError(t, err, string(ErrNoGetFunc))
    51  
    52  	get := mockGet(map[string]string{key: want})
    53  	Manager = &AssetManager{Get: get}
    54  	got, err := Get(key)
    55  	assert.NoError(t, err)
    56  	assert.Equal(t, []byte(want), got)
    57  
    58  }
    59  func TestDir(t *testing.T) {
    60  	const key = "foo"
    61  	want := []string{"bar", "baz"}
    62  	defer revertManager()
    63  	_, err := Dir(key)
    64  	assert.EqualError(t, err, string(ErrManagerNotSet))
    65  
    66  	Manager = new(AssetManager)
    67  	_, err = Dir(key)
    68  	assert.EqualError(t, err, string(ErrNoDirFunc))
    69  
    70  	dir := mockDir(map[string][]string{key: want})
    71  	Manager = &AssetManager{Dir: dir}
    72  	got, err := Dir(key)
    73  	assert.NoError(t, err)
    74  	assert.Equal(t, want, got)
    75  
    76  }