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  }