63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGetHealthzRoute(t *testing.T) {
|
|
router := setupRouter()
|
|
response := httptest.NewRecorder()
|
|
request, _ := http.NewRequest("GET", "/healthz", nil)
|
|
router.ServeHTTP(response, request)
|
|
|
|
assert.Equal(t, http.StatusOK, response.Code)
|
|
assert.Equal(t, "", response.Body.String())
|
|
}
|
|
|
|
func TestGetVehiclesRoute(t *testing.T) {
|
|
router := setupRouter()
|
|
response := httptest.NewRecorder()
|
|
request, _ := http.NewRequest("GET", "/vehicles", nil)
|
|
router.ServeHTTP(response, request)
|
|
|
|
assert.Equal(t, http.StatusOK, response.Code)
|
|
expectedBytes, _ := json.Marshal(vehicles)
|
|
actual := response.Body.String()
|
|
require.JSONEq(t, string(expectedBytes), actual)
|
|
}
|
|
|
|
func TestGetVehicleByIDRoute(t *testing.T) {
|
|
router := setupRouter()
|
|
response := httptest.NewRecorder()
|
|
request, _ := http.NewRequest("GET", "/vehicles/1", nil)
|
|
router.ServeHTTP(response, request)
|
|
|
|
assert.Equal(t, http.StatusOK, response.Code)
|
|
expectedBytes, _ := json.Marshal(vehicles[0])
|
|
actual := response.Body.String()
|
|
require.JSONEq(t, string(expectedBytes), actual)
|
|
}
|
|
|
|
func TestPostVehiclesRoute(t *testing.T) {
|
|
router := setupRouter()
|
|
response := httptest.NewRecorder()
|
|
var expectedBytes = []byte(`{
|
|
"id": "6",
|
|
"model": "Kia e-Niro",
|
|
"maker": "Kia"
|
|
}`)
|
|
request, _ := http.NewRequest("POST", "/vehicles", bytes.NewBuffer(expectedBytes))
|
|
router.ServeHTTP(response, request)
|
|
|
|
assert.Equal(t, http.StatusCreated, response.Code)
|
|
actual := response.Body.String()
|
|
require.JSONEq(t, string(expectedBytes), actual)
|
|
}
|