github.com/mikejeuga/temperature-converter@v0.0.0-20220721135550-2cf6fcec7145/src/internal/adapters/transport/server/server_test.go (about)

     1  //+go:build unit
     2  
     3  package server_test
     4  
     5  import (
     6  	"github.com/matryer/is"
     7  	"github.com/mikejeuga/temperature-converter/src/internal/adapters/transport/server"
     8  	"net/http"
     9  	"net/http/httptest"
    10  	"testing"
    11  )
    12  
    13  func TestServer(t *testing.T) {
    14  	t.Parallel()
    15  	newServer := server.NewServer()
    16  	for _, tc := range []struct {
    17  		description         string
    18  		request             *http.Request
    19  		response            *httptest.ResponseRecorder
    20  		expectedTemperature string
    21  	}{
    22  		{
    23  			description:         "Server is healthy",
    24  			request:             httptest.NewRequest(http.MethodGet, "/", nil),
    25  			response:            httptest.NewRecorder(),
    26  			expectedTemperature: "Server is Healthy, the temperature seems perfect!",
    27  		},
    28  		{
    29  			description:         "Convert Celsius to Fahrenheit",
    30  			request:             httptest.NewRequest(http.MethodGet, "/to-fahrenheit/5", nil),
    31  			response:            httptest.NewRecorder(),
    32  			expectedTemperature: "41",
    33  		},
    34  		{
    35  			description:         "Convert Fahrenheit to Celsius",
    36  			request:             httptest.NewRequest(http.MethodGet, "/to-celsius/41", nil),
    37  			response:            httptest.NewRecorder(),
    38  			expectedTemperature: "5",
    39  		},
    40  	} {
    41  		t.Run(tc.description, func(t *testing.T) {
    42  			is := is.New(t)
    43  			newServer.Handler.ServeHTTP(tc.response, tc.request)
    44  			is.Equal(tc.response.Code, http.StatusOK)
    45  			is.Equal(tc.response.Body.String(), tc.expectedTemperature)
    46  		})
    47  	}
    48  }