github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/abstract/ownable_likeable/contexters/contexters_test.go (about) 1 package contexters_test 2 3 import ( 4 "fmt" 5 "github.com/k0marov/go-socnet/core/abstract/ownable_likeable/contexters" 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 TestLikeableContextAdder(t *testing.T) { 12 target := RandomId() 13 caller := RandomId() 14 15 runCase := func(isLiked, isMine bool) { 16 t.Run(fmt.Sprintf("isLiked = %v, isMine = %v", isLiked, isMine), func(t *testing.T) { 17 checkLiked := func(targetId string, callerId core_values.UserId) (bool, error) { 18 if targetId == target && callerId == caller { 19 return isLiked, nil 20 } 21 panic("unexpected args") 22 } 23 t.Run("error case - getting isLiked throws", func(t *testing.T) { 24 checkLiked := func(string, core_values.UserId) (bool, error) { 25 return false, RandomError() 26 } 27 _, err := contexters.NewOwnLikeContextGetter(checkLiked)(target, "", caller) 28 AssertSomeError(t, err) 29 }) 30 t.Run("happy case", func(t *testing.T) { 31 var owner core_values.UserId 32 if isMine { 33 owner = caller 34 } else { 35 owner = RandomId() 36 } 37 gotContext, err := contexters.NewOwnLikeContextGetter(checkLiked)(target, owner, caller) 38 AssertNoError(t, err) 39 wantContext := contexters.OwnLikeContext{ 40 IsLiked: isLiked, 41 IsMine: isMine, 42 } 43 Assert(t, gotContext, wantContext, "returned context") 44 }) 45 }) 46 } 47 48 runCase(true, true) 49 runCase(true, false) 50 runCase(false, true) 51 runCase(false, false) 52 }