oficina / docs Public

Clone
git clone https://amadan.net/oficina/docs

Plain git — no account needed to clone.

Download

Download this file

1package core_test
2
3import (
4 "context"
5 "fmt"
6 "os"
7 "path/filepath"
8 "testing"
9
10 "github.com/carlosframework/docs/internal/core"
11)
12
13// Exercise the embedded server WASM, including its normal garbage collection.
14// A native authority snapshot alone hides the incremental deletion regression.
15func TestNativeRuleReversalSurvivesServerReplay(t *testing.T) {
16 ctx := context.Background()
17 rt, err := core.New(ctx)
18 if err != nil {
19 t.Fatal(err)
20 }
21 defer rt.Close(ctx)
22 doc, err := rt.NewDoc(ctx, "native-rule", 900)
23 if err != nil {
24 t.Fatal(err)
25 }
26 defer doc.Close(ctx)
27 for step := 0; step <= 6; step++ {
28 update, err := os.ReadFile(filepath.Join("..", "..", "fixtures", "vectors", "native-rule", fmt.Sprintf("%d.bin", step)))
29 if err != nil {
30 t.Fatal(err)
31 }
32 if err := doc.Apply(ctx, update); err != nil {
33 t.Fatalf("step %d: %v", step, err)
34 }
35 }
36 want := "<p>- Alpha</p><p>Beta</p>"
37 got, err := doc.HTML(ctx)
38 if err != nil {
39 t.Fatal(err)
40 }
41 if got != want {
42 t.Fatalf("incremental HTML = %q, want %q", got, want)
43 }
44 snapshot, err := doc.Snapshot(ctx)
45 if err != nil {
46 t.Fatal(err)
47 }
48 reloaded, err := rt.NewDoc(ctx, "native-rule", 901)
49 if err != nil {
50 t.Fatal(err)
51 }
52 defer reloaded.Close(ctx)
53 if err := reloaded.Apply(ctx, snapshot); err != nil {
54 t.Fatal(err)
55 }
56 got, err = reloaded.HTML(ctx)
57 if err != nil {
58 t.Fatal(err)
59 }
60 if got != want {
61 t.Fatalf("reloaded HTML = %q, want %q", got, want)
62 }
63}
64