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  }