Files
Agent-System/internal/docgov/duty_lock_test.go
T
weichenandCursor 67b3b5e070 test: cover duty lock, heal/revoke skip, and instance duty adapter
Unit evidence for AE5a/AE5b filters; optional PG cases when
TEST_DATABASE_URL is set.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 09:59:38 +00:00

56 lines
1.5 KiB
Go

package docgov
import (
"context"
"testing"
)
func TestLockDocumentDuty_Memory(t *testing.T) {
ctx := context.Background()
engine := NewGovernanceEngine(nil)
doc, err := engine.CreateOrGetDocument(
ctx, "doc_lock_mem", 9, "intake", "锁定测试",
"V0.5", "ws/lock",
1, "A", 1, "A", 1, "A",
)
if err != nil {
t.Fatalf("create: %v", err)
}
if doc.DutyLocked || doc.DutyPolicy != "" {
t.Fatalf("defaults: locked=%v policy=%q", doc.DutyLocked, doc.DutyPolicy)
}
if err := engine.LockDocumentDuty(ctx, doc.DocID, "author_only"); err != nil {
t.Fatalf("lock: %v", err)
}
got, err := engine.GetDocument(ctx, doc.DocID)
if err != nil {
t.Fatalf("get: %v", err)
}
if !got.DutyLocked || got.DutyPolicy != "author_only" {
t.Fatalf("after lock: locked=%v policy=%q", got.DutyLocked, got.DutyPolicy)
}
}
func TestListWorkflowDocuments_IncludesDutyPolicy_Memory(t *testing.T) {
ctx := context.Background()
engine := NewGovernanceEngine(nil)
doc, err := engine.CreateOrGetDocument(
ctx, "doc_proj9_intake", 9, "intake", "投影测试",
"V0.5", "ws/proj",
7, "编制", 7, "编制", 7, "编制",
)
if err != nil {
t.Fatalf("create: %v", err)
}
if err := engine.LockDocumentDuty(ctx, doc.DocID, "author_only"); err != nil {
t.Fatalf("lock: %v", err)
}
list, err := engine.ListWorkflowDocumentsByProject(ctx, 9)
if err != nil {
t.Fatalf("list: %v", err)
}
if len(list) != 1 || list[0].DutyPolicy != "author_only" {
t.Fatalf("want duty_policy=author_only, got %+v", list)
}
}