refactor: integra reconcile no boot, dedup categoria/pasta, CI, Go 1.24
ci / check (push) Successful in 4m12s
ci / check (push) Successful in 4m12s
- Boot chama ReconcileBlobs com log de órfãos (era código morto)
- treeNode/validTreeName/siblingDup/moveCreatesCycle compartilhados
entre Create/Update Category/Folder (mesma regra, um só lugar)
- mapStoreErrorFor com mensagens 404 por recurso (nota/arquivo/pasta/categoria)
- revisionHash helper + teste GET /revisions/{hash} (200 + 404)
- ReconcileBlobs com lock curto (coleta sob RLock, I/O fora do lock)
- AddFile com LimitReader no stream (cap antes de gravar, não depois)
- DeleteFile/DeleteFolder transacionais com rollback em memória
- attachmentKind único no frontend (syntax/html/preview)
- CI: gofmt, vet, test -race, node --check; go.mod 1.24 = Dockerfile
- README: notas operacionais (memória, proxy, boot, SSE, 413/400)
This commit is contained in:
1 parent
0e59ef23f4
commit
e0bef77e31
16 files changed
+518
-126
No files matched your search
@@ -210,7 +210,26 @@ func TestNoteLifecycleWithHistoryAndRestore(t *testing.T) {
|
||||
t.Fatalf("stats do diff: +%d -%d", dv.Added, dv.Removed)
|
||||
}
|
||||
|
||||
// Restaurar a primeira revisão.
|
||||
// GET de revisão específica (conteúdo + metadados).
|
||||
resp = call("GET", "/api/notes/"+id+"/revisions/"+created.Hash, "")
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
t.Fatalf("get revision: %s", resp.Status)
|
||||
}
|
||||
var rc struct {
|
||||
Hash string `json:"hash"`
|
||||
Content string `json:"content"`
|
||||
}
|
||||
decode(t, resp, &rc)
|
||||
if rc.Hash != created.Hash || !strings.Contains(rc.Content, "#systemd") {
|
||||
t.Fatalf("revisão: %+v", rc)
|
||||
}
|
||||
// Hash malformado → 404.
|
||||
resp = call("GET", "/api/notes/"+id+"/revisions/xyz", "")
|
||||
if resp.StatusCode != http.StatusNotFound {
|
||||
t.Fatalf("hash inválido: esperava 404, obtive %s", resp.Status)
|
||||
}
|
||||
resp.Body.Close()
|
||||
|
||||
resp = call("POST", "/api/notes/"+id+"/revisions/"+created.Hash+"/restore", `{"author":"lg"}`)
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
t.Fatalf("restore: %s", resp.Status)
|
||||
|
||||
Reference in new issue
Block a user