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  }