...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package pouchdb
16
17 import (
18 "context"
19 "testing"
20
21 "gitlab.com/flimzy/testy"
22
23 kivik "github.com/go-kivik/kivik/v4"
24 internal "github.com/go-kivik/kivik/v4/int/errors"
25 "github.com/go-kivik/kivik/v4/kiviktest/kt"
26 )
27
28 func TestChanges(t *testing.T) {
29 type tst struct {
30 opts kivik.Option
31 status int
32 err string
33 changesErr string
34 expectedIDs []string
35 expectedLastSeq string
36 expectedPending int64
37 }
38 tests := testy.NewTable()
39
40 tests.Run(t, func(t *testing.T, test tst) {
41 ctx := context.Background()
42 client, err := kivik.New("pouch", "")
43 if err != nil {
44 t.Fatalf("Failed to connect to PouchDB/memdown driver: %s", err)
45 }
46 dbname := kt.TestDBName(t)
47 t.Cleanup(func() {
48 _ = client.DestroyDB(ctx, dbname)
49 })
50 if err := client.CreateDB(ctx, dbname); err != nil {
51 t.Fatalf("Failed to create db: %s", err)
52 }
53 db := client.DB(dbname)
54 changes := db.Changes(ctx, test.opts)
55 if d := internal.StatusErrorDiff(test.err, test.status, changes.Err()); d != "" {
56 t.Error(d)
57 }
58 results := []string{}
59 for changes.Next() {
60 results = append(results, changes.ID())
61 }
62 if err := changes.Err(); !testy.ErrorMatches(test.changesErr, err) {
63 t.Errorf("Unexpected error: %s", err)
64 }
65 if d := testy.DiffTextSlices(test.expectedIDs, results); d != nil {
66 t.Error(d)
67 }
68 meta, err := changes.Metadata()
69 if err != nil {
70 t.Fatal(err)
71 }
72 if ls := meta.LastSeq; ls != test.expectedLastSeq {
73 t.Errorf("Unexpected last_seq: %s", ls)
74 }
75 if p := meta.Pending; p != test.expectedPending {
76 t.Errorf("Unexpected pending count: %d", p)
77 }
78 })
79 }
80
View as plain text