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 }