package testdata import ( "context" "errors" "testing" ) func TestNoneCache(t *testing.T) { d := New() meta := &Demo{ID: 1} getFromCache := func(c context.Context) (*Demo, error) { return meta, nil } notGetFromCache := func(c context.Context) (*Demo, error) { return nil, errors.New("err") } getFromSource := func(c context.Context) (*Demo, error) { return meta, nil } notGetFromSource := func(c context.Context) (*Demo, error) { return meta, errors.New("err") } addToCache := func(c context.Context, values *Demo) error { return nil } // get from cache _noneCacheFunc = getFromCache _noneRawFunc = notGetFromSource _noneAddCacheFunc = addToCache res, err := d.None(context.TODO()) if err != nil { t.Fatalf("err should be nil, get: %v", err) } if res.ID != 1 { t.Fatalf("id should be 1") } // get from source _noneCacheFunc = notGetFromCache _noneRawFunc = getFromSource res, err = d.None(context.TODO()) if err != nil { t.Fatalf("err should be nil, get: %v", err) } if res.ID != 1 { t.Fatalf("id should be 1") } // with null cache nullCache := &Demo{ID: -1} getNullFromCache := func(c context.Context) (*Demo, error) { return nullCache, nil } _noneCacheFunc = getNullFromCache _noneRawFunc = notGetFromSource res, err = d.None(context.TODO()) if err != nil { t.Fatalf("err should be nil, get: %v", err) } if res != nil { t.Fatalf("res should be nil") } }