github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/features/feed/domain/service/service_test.go (about) 1 package service_test 2 3 import ( 4 "github.com/k0marov/go-socnet/core/general/client_errors" 5 "github.com/k0marov/go-socnet/core/general/core_values" 6 . "github.com/k0marov/go-socnet/core/helpers/test_helpers" 7 "github.com/k0marov/go-socnet/features/feed/domain/service" 8 "testing" 9 ) 10 11 func TestFeedGetter(t *testing.T) { 12 caller := RandomId() 13 countStr := "8" 14 posts := []string{RandomId(), RandomId(), RandomId()} 15 16 t.Run("error case - count is not int", func(t *testing.T) { 17 _, err := service.NewFeedGetter(nil)("asdf", caller) 18 AssertError(t, err, client_errors.NonIntegerCount) 19 }) 20 t.Run("error case - count is too big", func(t *testing.T) { 21 _, err := service.NewFeedGetter(nil)("9999", caller) 22 AssertError(t, err, client_errors.TooBigCount) 23 }) 24 25 feedGetter := func(callerId core_values.UserId, count int) ([]string, error) { 26 if count == 8 && callerId == caller { 27 return posts, nil 28 } 29 panic("unexpected") 30 } 31 t.Run("error case - getting feed throws", func(t *testing.T) { 32 feedGetter := func(core_values.UserId, int) ([]string, error) { 33 return nil, RandomError() 34 } 35 _, err := service.NewFeedGetter(feedGetter)(countStr, caller) 36 AssertSomeError(t, err) 37 }) 38 39 t.Run("happy case", func(t *testing.T) { 40 gotPosts, err := service.NewFeedGetter(feedGetter)(countStr, caller) 41 AssertNoError(t, err) 42 Assert(t, gotPosts, posts, "returned posts") 43 }) 44 t.Run("happy case - count is empty", func(t *testing.T) { 45 feedGetter := func(callerId core_values.UserId, count int) ([]string, error) { 46 if count == service.DefaultCount && callerId == caller { 47 return posts, nil 48 } 49 panic("unexpected") 50 } 51 gotPosts, err := service.NewFeedGetter(feedGetter)("", caller) 52 AssertNoError(t, err) 53 Assert(t, gotPosts, posts, "returned posts") 54 }) 55 56 }