package core_test import ( "context" "fmt" "os" "path/filepath" "testing" "github.com/carlosframework/docs/internal/core" ) // Exercise the embedded server WASM, including its normal garbage collection. // A native authority snapshot alone hides the incremental deletion regression. func TestNativeRuleReversalSurvivesServerReplay(t *testing.T) { ctx := context.Background() rt, err := core.New(ctx) if err != nil { t.Fatal(err) } defer rt.Close(ctx) doc, err := rt.NewDoc(ctx, "native-rule", 900) if err != nil { t.Fatal(err) } defer doc.Close(ctx) for step := 0; step <= 6; step++ { update, err := os.ReadFile(filepath.Join("..", "..", "fixtures", "vectors", "native-rule", fmt.Sprintf("%d.bin", step))) if err != nil { t.Fatal(err) } if err := doc.Apply(ctx, update); err != nil { t.Fatalf("step %d: %v", step, err) } } want := "

- Alpha

Beta

" got, err := doc.HTML(ctx) if err != nil { t.Fatal(err) } if got != want { t.Fatalf("incremental HTML = %q, want %q", got, want) } snapshot, err := doc.Snapshot(ctx) if err != nil { t.Fatal(err) } reloaded, err := rt.NewDoc(ctx, "native-rule", 901) if err != nil { t.Fatal(err) } defer reloaded.Close(ctx) if err := reloaded.Apply(ctx, snapshot); err != nil { t.Fatal(err) } got, err = reloaded.HTML(ctx) if err != nil { t.Fatal(err) } if got != want { t.Fatalf("reloaded HTML = %q, want %q", got, want) } }