fix(api): 未改动任何字段的 PATCH 返回空 patched 数组而非 null
This commit is contained in:
2 files changed
+7
-1
No files matched your search
@@ -683,7 +683,9 @@ func (a *API) handlePatchServer(w http.ResponseWriter, r *http.Request) {
|
||||
// the SAME helpers the create form uses. `changed` records what actually moves
|
||||
// so the response and audit name the real mutation.
|
||||
var patch ServerSpecPatch
|
||||
var changed []string
|
||||
// Non-nil so a patch that moves nothing (re-picking the image a server is
|
||||
// already pinned to) still answers "patched": [], as the API documents.
|
||||
changed := []string{}
|
||||
// imageFrom is the image a confirmed image change replaced, for the audit row.
|
||||
var imageFrom string
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"felis.lolicon.best/internal/imagepin"
|
||||
@@ -136,6 +137,9 @@ func TestPatchServerImageSamePinIsNoChange(t *testing.T) {
|
||||
if p := cl.patched["survival"]; p.Image != nil {
|
||||
t.Errorf("patched image = %q, want no image change", *p.Image)
|
||||
}
|
||||
if !strings.Contains(w.Body.String(), `"patched":[]`) {
|
||||
t.Errorf("body = %s, want an empty patched list", w.Body.String())
|
||||
}
|
||||
if len(repo.audits) != 1 || repo.audits[0].Payload != nil {
|
||||
t.Errorf("audits = %+v, want a plain server.patch", repo.audits)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user