github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/features/feed/domain/service/service_test.go (about)

     1  package service_test
     2  
     3  import (
     4  	"github.com/k0marov/go-socnet/core/general/client_errors"
     5  	"github.com/k0marov/go-socnet/core/general/core_values"
     6  	. "github.com/k0marov/go-socnet/core/helpers/test_helpers"
     7  	"github.com/k0marov/go-socnet/features/feed/domain/service"
     8  	"testing"
     9  )
    10  
    11  func TestFeedGetter(t *testing.T) {
    12  	caller := RandomId()
    13  	countStr := "8"
    14  	posts := []string{RandomId(), RandomId(), RandomId()}
    15  
    16  	t.Run("error case - count is not int", func(t *testing.T) {
    17  		_, err := service.NewFeedGetter(nil)("asdf", caller)
    18  		AssertError(t, err, client_errors.NonIntegerCount)
    19  	})
    20  	t.Run("error case - count is too big", func(t *testing.T) {
    21  		_, err := service.NewFeedGetter(nil)("9999", caller)
    22  		AssertError(t, err, client_errors.TooBigCount)
    23  	})
    24  
    25  	feedGetter := func(callerId core_values.UserId, count int) ([]string, error) {
    26  		if count == 8 && callerId == caller {
    27  			return posts, nil
    28  		}
    29  		panic("unexpected")
    30  	}
    31  	t.Run("error case - getting feed throws", func(t *testing.T) {
    32  		feedGetter := func(core_values.UserId, int) ([]string, error) {
    33  			return nil, RandomError()
    34  		}
    35  		_, err := service.NewFeedGetter(feedGetter)(countStr, caller)
    36  		AssertSomeError(t, err)
    37  	})
    38  
    39  	t.Run("happy case", func(t *testing.T) {
    40  		gotPosts, err := service.NewFeedGetter(feedGetter)(countStr, caller)
    41  		AssertNoError(t, err)
    42  		Assert(t, gotPosts, posts, "returned posts")
    43  	})
    44  	t.Run("happy case - count is empty", func(t *testing.T) {
    45  		feedGetter := func(callerId core_values.UserId, count int) ([]string, error) {
    46  			if count == service.DefaultCount && callerId == caller {
    47  				return posts, nil
    48  			}
    49  			panic("unexpected")
    50  		}
    51  		gotPosts, err := service.NewFeedGetter(feedGetter)("", caller)
    52  		AssertNoError(t, err)
    53  		Assert(t, gotPosts, posts, "returned posts")
    54  	})
    55  
    56  }