35 lines
912 B
Go
35 lines
912 B
Go
|
|
package crm
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"context"
|
|||
|
|
"encoding/json"
|
|||
|
|
"errors"
|
|||
|
|
"net/http"
|
|||
|
|
"net/http/httptest"
|
|||
|
|
"testing"
|
|||
|
|
|
|||
|
|
"apps/backend/internal/domain"
|
|||
|
|
crmDomain "apps/backend/internal/module/crm/domain"
|
|||
|
|
"apps/backend/internal/response"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// notReady envelope 契約:殘留未實作 capability 須 501,不可 102000 空成功。
|
|||
|
|
func TestNotReadyEnvelope(t *testing.T) {
|
|||
|
|
err := notReady("example.capability")
|
|||
|
|
if !errors.Is(err, crmDomain.ErrNotReady) {
|
|||
|
|
t.Fatalf("expected ErrNotReady, got %v", err)
|
|||
|
|
}
|
|||
|
|
rec := httptest.NewRecorder()
|
|||
|
|
response.Write(context.Background(), rec, nil, err)
|
|||
|
|
if rec.Code != http.StatusNotImplemented {
|
|||
|
|
t.Fatalf("expected HTTP 501, got %d", rec.Code)
|
|||
|
|
}
|
|||
|
|
var env response.Envelope
|
|||
|
|
if decErr := json.NewDecoder(rec.Body).Decode(&env); decErr != nil {
|
|||
|
|
t.Fatalf("decode envelope: %v", decErr)
|
|||
|
|
}
|
|||
|
|
if env.Code == domain.SuccessCode {
|
|||
|
|
t.Fatal("not-ready must not use success code")
|
|||
|
|
}
|
|||
|
|
}
|