github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/features/feed/delivery/http/handlers/handlers_test.go (about)

     1  package handlers_test
     2  
     3  import (
     4  	"github.com/k0marov/go-socnet/core/general/core_values"
     5  	helpers "github.com/k0marov/go-socnet/core/helpers/http_test_helpers"
     6  	. "github.com/k0marov/go-socnet/core/helpers/test_helpers"
     7  	"github.com/k0marov/go-socnet/features/feed/delivery/http/handlers"
     8  	"github.com/k0marov/go-socnet/features/feed/delivery/http/responses"
     9  	"io"
    10  	"net/http"
    11  	"net/http/httptest"
    12  	"testing"
    13  )
    14  
    15  func createRequestWithCount(count string, body io.Reader) *http.Request {
    16  	return httptest.NewRequest(http.MethodOptions, "/handler-should-not-care?count="+count, body)
    17  }
    18  
    19  func TestFeedHandler(t *testing.T) {
    20  	count := RandomString()
    21  	posts := []string{RandomString(), RandomString()}
    22  	caller := RandomAuthUser()
    23  
    24  	helpers.BaseTest401(t, handlers.NewFeedHandler(nil))
    25  	t.Run("happy case", func(t *testing.T) {
    26  		getter := func(countStr string, callerId core_values.UserId) ([]string, error) {
    27  			if countStr == count && callerId == caller.Id {
    28  				return posts, nil
    29  			}
    30  			panic("unexpected args")
    31  		}
    32  		response := httptest.NewRecorder()
    33  		request := helpers.AddAuthDataToRequest(createRequestWithCount(count, nil), caller)
    34  		handlers.NewFeedHandler(getter).ServeHTTP(response, request)
    35  		AssertJSONData(t, response, responses.FeedResponse{Posts: posts})
    36  	})
    37  	helpers.BaseTestServiceErrorHandling(t, func(err error, response *httptest.ResponseRecorder) {
    38  		getter := func(string, core_values.UserId) ([]string, error) {
    39  			return []string{}, err
    40  		}
    41  		request := helpers.AddAuthDataToRequest(createRequestWithCount(count, nil), caller)
    42  		handlers.NewFeedHandler(getter).ServeHTTP(response, request)
    43  	})
    44  }