GildedRose-Refactoring-Kata/go/api/controllers/item_controller_test.go
2023-07-11 23:23:34 +01:00

63 lines
1.6 KiB
Go

package controllers
import (
"net/http"
"testing"
"strings"
"github.com/stretchr/testify/assert"
"github.com/emilybache/gildedrose-refactoring-kata/lib"
)
func TestStatus(t *testing.T) {
runTestCase(t, func(
handler lib.RequestHandler,
) {
req, _ := http.NewRequest("GET", "/status", nil)
w := executeRequest(handler, req)
assert.Equal(t, 200, w.Code)
assert.Equal(t, `{"status":"ok"}`, w.Body.String())
})
}
func TestNotFound(t *testing.T) {
runTestCase(t, func(
handler lib.RequestHandler,
) {
req, _ := http.NewRequest("GET", "/notfoundurl", nil)
w := executeRequest(handler, req)
assert.Equal(t, 404, w.Code)
})
}
func TestInvalidItem(t *testing.T) {
runTestCase(t, func(
handler lib.RequestHandler,
) {
req, _ := http.NewRequest("POST", "/update_quality", strings.NewReader(`
{ "id": 1, "people": invalid
`))
req.Header = map[string][]string{"Content-Type": {"application/json"}}
w := executeRequest(handler, req)
assert.Equal(t, 400, w.Code)
})
}
func TestValidItem(t *testing.T) {
runTestCase(t, func(
handler lib.RequestHandler,
) {
req, _ := http.NewRequest("POST", "/update_quality", strings.NewReader(`
{ "days": 1, "items": [{ "name": "Random normal item", "quality": 5, "sellIn": 5}]}
`))
req.Header = map[string][]string{"Content-Type": {"application/json"}}
w := executeRequest(handler, req)
assert.Equal(t, 200, w.Code)
})
}