github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/abstract/recommendable/service/service_test.go (about) 1 package service_test 2 3 import ( 4 "github.com/k0marov/go-socnet/core/abstract/recommendable/service" 5 "github.com/k0marov/go-socnet/core/general/core_values" 6 . "github.com/k0marov/go-socnet/core/helpers/test_helpers" 7 "testing" 8 ) 9 10 func TestRecsGetter(t *testing.T) { 11 target := RandomId() 12 count := 5 13 recs := []string{RandomId(), RandomId(), RandomId(), RandomId(), RandomId()} 14 t.Run("error case - storeRecsGetter throws", func(t *testing.T) { 15 storeRecsGetter := func(core_values.UserId, int) ([]string, error) { 16 return nil, RandomError() 17 } 18 _, gotErr := service.NewRecsGetter(storeRecsGetter, nil)(target, count) 19 AssertSomeError(t, gotErr) 20 }) 21 t.Run("happy case - storeRecsGetter returns enough recs", func(t *testing.T) { 22 storeRecsGetter := func(targetId core_values.UserId, gotCount int) ([]string, error) { 23 if targetId == target && gotCount == count { 24 return recs, nil 25 } 26 panic("unexpected args") 27 } 28 got, err := service.NewRecsGetter(storeRecsGetter, nil)(target, count) 29 AssertNoError(t, err) 30 Assert(t, got, recs, "returned recommendations") 31 }) 32 t.Run("storeRecsGetter returns not enough recs", func(t *testing.T) { 33 returnedRecs := recs[:2] 34 storeRecsGetter := func(core_values.UserId, int) ([]string, error) { 35 return returnedRecs, nil 36 } 37 t.Run("happy case", func(t *testing.T) { 38 randomRecs := recs[2:] 39 randomRecsGetter := func(gotCount int) ([]string, error) { 40 if gotCount == count-2 { 41 return randomRecs, nil 42 } 43 panic("unexpected") 44 } 45 got, err := service.NewRecsGetter(storeRecsGetter, randomRecsGetter)(target, count) 46 AssertNoError(t, err) 47 Assert(t, got, recs, "merged recommendations") 48 }) 49 t.Run("error case - getting random recs throws", func(t *testing.T) { 50 randomRecsGetter := func(int) ([]string, error) { 51 return nil, RandomError() 52 } 53 _, err := service.NewRecsGetter(storeRecsGetter, randomRecsGetter)(target, count) 54 AssertSomeError(t, err) 55 }) 56 }) 57 }