Files
2026-07-27 11:54:34 +08:00

53 lines
1.5 KiB
Go

package questiontable
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"reflect"
"testing"
)
func TestInsertFieldsUsesExactProvidedFAQFieldMap(t *testing.T) {
want := map[string]interface{}{
"01ZM8y7": "标准问题",
"fj3JQ1C": "原始问题",
"07YYagS": "Chinese",
}
var got map[string]interface{}
mux := http.NewServeMux()
mux.HandleFunc("/token", func(w http.ResponseWriter, _ *http.Request) {
_, _ = w.Write([]byte(`{"accessToken":"token","expireIn":7200}`))
})
mux.HandleFunc("/v1.0/notable/bases/faq-base/sheets/faq-sheet/records", func(w http.ResponseWriter, r *http.Request) {
var body struct {
Records []struct {
Fields map[string]interface{} `json:"fields"`
} `json:"records"`
}
if err := json.NewDecoder(r.Body).Decode(&body); err != nil || len(body.Records) != 1 {
t.Fatalf("invalid request body: err=%v body=%#v", err, body)
}
got = body.Records[0].Fields
_, _ = w.Write([]byte(`{"value":[{"id":"faq-record-1"}]}`))
})
server := httptest.NewServer(mux)
defer server.Close()
client, err := NewClient(Config{
ClientID: "client", Secret: "secret", BaseID: "faq-base", SheetID: "faq-sheet", OperatorID: "operator",
TokenURL: server.URL + "/token", BaseURL: server.URL,
}, server.Client())
if err != nil {
t.Fatal(err)
}
recordID, err := client.InsertFields(context.Background(), want)
if err != nil {
t.Fatal(err)
}
if recordID != "faq-record-1" || !reflect.DeepEqual(got, want) {
t.Fatalf("recordID=%q fields=%#v", recordID, got)
}
}