返回 DeepSeek-Reasonix
purge_topic_test.go
根目录 / desktop / internal / workspacestate / purge_topic_test.go
1 package workspacestate
2
3 import "testing"
4
5 func TestPurgeRetainsOnlyTopicOwnershipInOperation(t *testing.T) {
6 store, _ := seedArchivedProcessState(t)
7 if err := store.EnsureSessionTopic(t.Context(), "victim", "original-topic", "Private title"); err != nil {
8 t.Fatal(err)
9 }
10 state, err := store.Load(t.Context())
11 if err != nil {
12 t.Fatal(err)
13 }
14 if err := store.BeginPurge(t.Context(), "victim", state.Generation); err != nil {
15 t.Fatal(err)
16 }
17 if err := store.AdvancePurge(t.Context(), "victim", "content_removed"); err != nil {
18 t.Fatal(err)
19 }
20 if err := store.CompletePurge(t.Context(), "victim"); err != nil {
21 t.Fatal(err)
22 }
23 state, err = NewStore(store.Path()).Load(t.Context())
24 if err != nil {
25 t.Fatal(err)
26 }
27 op := state.PendingOperations["purge-victim"]
28 if op.WorkspaceID != GlobalWorkspaceID || op.Presentation == nil || op.Presentation.TopicID != "original-topic" || op.Presentation.Title != "" || op.Presentation.Pinned {
29 t.Fatalf("invalid purge topic tombstone: %+v", op)
30 }
31 if _, ok := state.Presentation["victim"]; ok {
32 t.Fatal("purge retained user presentation")
33 }
34 if len(state.Workspaces[GlobalWorkspaceID].SessionIDs) != 0 {
35 t.Fatal("purge retained workspace membership")
36 }
37 }
38
38 lines GO