fix: omit status on non-archive writes, skip finished in refresh and scan
This commit is contained in:
@@ -160,3 +160,39 @@ func TestPutStatusValidation(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// A PUT that omits the status field entirely (what a userscript build
|
||||
// predating the column sends) is the actual preserve path — the "" case
|
||||
// above only exercises the fresh-INSERT default and never touches an
|
||||
// existing bucket. This must both keep the archived bucket and still apply
|
||||
// the chapter progress carried in the same request.
|
||||
func TestPutOmittedStatusPreservesArchivedAndAppliesProgress(t *testing.T) {
|
||||
srv := newTestServer(t)
|
||||
|
||||
seed := httptest.NewRequest(http.MethodPut, "/bookmarks/asura:solo",
|
||||
strings.NewReader(`{"title":"Solo","status":"archived"}`))
|
||||
rr := httptest.NewRecorder()
|
||||
srv.ServeHTTP(rr, auth(seed))
|
||||
if rr.Code != http.StatusOK {
|
||||
t.Fatalf("seed status = %d, want 200 (body %s)", rr.Code, rr.Body.String())
|
||||
}
|
||||
|
||||
req := httptest.NewRequest(http.MethodPut, "/bookmarks/asura:solo",
|
||||
strings.NewReader(`{"title":"Solo","last_chapter":"12","last_chapter_num":12}`))
|
||||
rr = httptest.NewRecorder()
|
||||
srv.ServeHTTP(rr, auth(req))
|
||||
if rr.Code != http.StatusOK {
|
||||
t.Fatalf("status = %d, want 200 (body %s)", rr.Code, rr.Body.String())
|
||||
}
|
||||
|
||||
var got Bookmark
|
||||
if err := json.Unmarshal(rr.Body.Bytes(), &got); err != nil {
|
||||
t.Fatalf("decode: %v", err)
|
||||
}
|
||||
if got.Status != "archived" {
|
||||
t.Fatalf("stored status = %q, want %q", got.Status, "archived")
|
||||
}
|
||||
if got.LastChapterNum != 12 {
|
||||
t.Fatalf("stored last_chapter_num = %v, want 12", got.LastChapterNum)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user