github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/abstract/deletable/service/service_test.go (about) 1 package service_test 2 3 import ( 4 "github.com/k0marov/go-socnet/core/abstract/deletable/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 TestDeleter(t *testing.T) { 12 target := RandomId() 13 owner := RandomId() 14 15 caller := owner 16 17 getOwner := func(targetId string) (core_values.UserId, error) { 18 if targetId == target { 19 return owner, nil 20 } 21 panic("unexpected args") 22 } 23 t.Run("error case - caller is not owner", func(t *testing.T) { 24 err := service.NewDeleter(getOwner, nil)(target, RandomId()) 25 AssertError(t, err, client_errors.InsufficientPermissions) 26 }) 27 t.Run("error case - getting owner throws", func(t *testing.T) { 28 getOwner := func(string) (core_values.UserId, error) { 29 return owner, RandomError() 30 } 31 err := service.NewDeleter(getOwner, nil)(target, caller) 32 AssertSomeError(t, err) 33 }) 34 35 delete := func(targetId string) error { 36 if targetId == target { 37 return nil 38 } 39 panic("unexpected args") 40 } 41 t.Run("error case - deleting throws", func(t *testing.T) { 42 delete := func(string) error { 43 return RandomError() 44 } 45 err := service.NewDeleter(getOwner, delete)(target, caller) 46 AssertSomeError(t, err) 47 }) 48 49 t.Run("happy case", func(t *testing.T) { 50 err := service.NewDeleter(getOwner, delete)(target, caller) 51 AssertNoError(t, err) 52 }) 53 }