github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/abstract/ownable_likeable/service/service_test.go (about) 1 package service_test 2 3 import ( 4 "github.com/k0marov/go-socnet/core/abstract/ownable_likeable/service" 5 "github.com/k0marov/go-socnet/core/general/client_errors" 6 "github.com/k0marov/go-socnet/core/general/core_values" 7 . "github.com/k0marov/go-socnet/core/helpers/test_helpers" 8 "testing" 9 ) 10 11 func TestSafeLikeToggler(t *testing.T) { 12 target := RandomId() 13 owner := RandomId() 14 caller := RandomId() 15 16 getOwner := func(targetId string) (core_values.UserId, error) { 17 if targetId == target { 18 return owner, nil 19 } 20 panic("unexpected args") 21 } 22 t.Run("error case - caller is owner", func(t *testing.T) { 23 err := service.NewSafeLikeToggler(getOwner, nil)(target, owner) 24 AssertError(t, err, client_errors.LikingYourself) 25 }) 26 t.Run("error case - getting author throws", func(t *testing.T) { 27 getOwner := func(targetId string) (core_values.UserId, error) { 28 return "", RandomError() 29 } 30 err := service.NewSafeLikeToggler(getOwner, nil)(target, caller) 31 AssertSomeError(t, err) 32 }) 33 toggleLike := func(targetId string, callerId core_values.UserId) error { 34 if targetId == target && callerId == caller { 35 return nil 36 } 37 panic("unexpected args") 38 } 39 t.Run("error case - toggling like throws", func(t *testing.T) { 40 toggleLike := func(string, core_values.UserId) error { 41 return RandomError() 42 } 43 err := service.NewSafeLikeToggler(getOwner, toggleLike)(target, caller) 44 AssertSomeError(t, err) 45 }) 46 t.Run("happy case", func(t *testing.T) { 47 err := service.NewSafeLikeToggler(getOwner, toggleLike)(target, caller) 48 AssertNoError(t, err) 49 }) 50 }