-
Notifications
You must be signed in to change notification settings - Fork 42
/
localdocs_test.go
82 lines (73 loc) · 1.89 KB
/
localdocs_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http:https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//go:build !js
// +build !js
package sqlite
import (
"context"
"testing"
"gitlab.com/flimzy/testy"
"github.com/go-kivik/kivik/v4"
"github.com/go-kivik/kivik/v4/driver"
"github.com/go-kivik/kivik/v4/int/mock"
)
func TestDBLocalDocs(t *testing.T) {
t.Parallel()
type test struct {
db *testDB
options driver.Options
want []rowResult
wantStatus int
wantErr string
}
tests := testy.NewTable()
tests.Add("no docs in db", test{
want: nil,
})
tests.Add("returns only the local docs", func(t *testing.T) interface{} {
db := newDB(t)
_ = db.tPut("foo", map[string]string{"cat": "meow"})
rev2 := db.tPut("_local/bar", map[string]string{"dog": "woof"})
return test{
db: db,
want: []rowResult{
{
ID: "_local/bar",
Key: `"_local/bar"`,
Value: `{"value":{"rev":"` + rev2 + `"}}`,
},
},
}
})
tests.Run(t, func(t *testing.T, tt test) {
t.Parallel()
db := tt.db
if db == nil {
db = newDB(t)
}
opts := tt.options
if opts == nil {
opts = mock.NilOption
}
rows, err := db.LocalDocs(context.Background(), opts)
if !testy.ErrorMatches(tt.wantErr, err) {
t.Errorf("Unexpected error: %s", err)
}
if status := kivik.HTTPStatus(err); status != tt.wantStatus {
t.Errorf("Unexpected status: %d", status)
}
if err != nil {
return
}
checkRows(t, rows, tt.want)
})
}