Files
mila/handler_test.go
2026-07-12 20:44:44 +03:00

67 lines
1.9 KiB
Go

package mila
import (
"encoding/json"
"net/http"
"net/http/httptest"
"net/url"
"testing"
)
func TestHandlerSetAndGetContent(t *testing.T) {
handler := NewHandler(DefaultConfig(), NewMemoryStore())
params := url.Values{}
params.Set("route", "3")
params.Set("str", "Гостиный двор - Gostiny dvor")
params.Set("tpl_name", "Гостиный двор")
req := httptest.NewRequest(http.MethodGet, "/set-content?"+params.Encode(), nil)
rec := httptest.NewRecorder()
handler.ServeHTTP(rec, req)
if rec.Code != http.StatusOK {
t.Fatalf("set-content status=%d body=%s", rec.Code, rec.Body.String())
}
req = httptest.NewRequest(http.MethodGet, "/get-content", nil)
rec = httptest.NewRecorder()
handler.ServeHTTP(rec, req)
if rec.Code != http.StatusOK {
t.Fatalf("get-content status=%d body=%s", rec.Code, rec.Body.String())
}
var state ContentState
if err := json.NewDecoder(rec.Body).Decode(&state); err != nil {
t.Fatalf("decode response: %v", err)
}
if state.Route != "3" || state.Text != "Гостиный двор - Gostiny dvor" || state.Template != "Гостиный двор" {
t.Fatalf("unexpected state: %+v", state)
}
}
func TestHandlerGetBeforeSetReturns503(t *testing.T) {
handler := NewHandler(DefaultConfig(), NewMemoryStore())
req := httptest.NewRequest(http.MethodGet, "/get-content", nil)
rec := httptest.NewRecorder()
handler.ServeHTTP(rec, req)
if rec.Code != http.StatusServiceUnavailable {
t.Fatalf("status=%d body=%s", rec.Code, rec.Body.String())
}
}
func TestHandlerRejectsInvalidSetContent(t *testing.T) {
handler := NewHandler(DefaultConfig(), NewMemoryStore())
req := httptest.NewRequest(http.MethodGet, "/set-content?route=1234&str=ok&tpl_name=tpl", nil)
rec := httptest.NewRecorder()
handler.ServeHTTP(rec, req)
if rec.Code != http.StatusBadRequest {
t.Fatalf("status=%d body=%s", rec.Code, rec.Body.String())
}
}