55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"example.com/arrays/internal/config"
|
|
"example.com/arrays/internal/handler"
|
|
"example.com/arrays/internal/svc"
|
|
"git.yuntuo.hk/k2safe/go-omni/logx"
|
|
"io"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestArrayWire(t *testing.T) {
|
|
cfg := config.Default()
|
|
cfg.Server.Log.Writer = io.Discard
|
|
logger, err := logx.New(cfg.Server.Log)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer logger.Close()
|
|
deps, err := svc.New(context.Background(), logger, cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer deps.Close()
|
|
app, err := handler.NewApp(deps)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer app.Close()
|
|
for path, want := range map[string]string{
|
|
"/strings": `["企业","备注"]`, "/integers": `[9223372036854775807,-3]`, "/dynamic": `["text",7,true,null,{"name":"企业"},[false,2]]`, "/empty": `[]`, "/raw": `[true,false]`,
|
|
} {
|
|
w := httptest.NewRecorder()
|
|
app.ServeHTTP(w, httptest.NewRequest("GET", path, nil))
|
|
got := strings.TrimSpace(w.Body.String())
|
|
if w.Code != 200 {
|
|
t.Fatal(got)
|
|
}
|
|
if path != "/raw" {
|
|
var obj map[string]json.RawMessage
|
|
if err := json.Unmarshal(w.Body.Bytes(), &obj); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
got = string(obj["data"])
|
|
}
|
|
if got != want {
|
|
t.Fatalf("%s got %s want %s", path, got, want)
|
|
}
|
|
}
|
|
}
|