aboutsummaryrefslogtreecommitdiff
path: root/dbstore/tx_test.go
blob: 0e3ed23d3f8b8f7dea8cb1515818830462827884 (plain)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package dbstore

import (
  "context"
  "os"
  "path/filepath"
  // "reflect"
  "testing"
  // "time"
)

func TestNewTxDupTx(t *testing.T) {
  // cache context, create temp dir
  ctx := context.Background()
  dir, err := os.MkdirTemp("", "")
  if err != nil {
    t.Error(err)
    return
  }
  defer os.RemoveAll(dir)

  // open db
  db, err := Open(filepath.Join(dir, "newtxduptx.db"))
  if err != nil {
    t.Error(err)
    return
  }

  // init db
  if err := db.Init(ctx); err != nil {
    t.Error(err)
    return
  }

  // create first transaction
  if _, err = db.Begin(ctx, []string{}); err != nil {
    t.Error(err)
    return
  }

  // create second transaction
  got, err := db.Begin(ctx, []string{})
  if err != nil { // FIXME
    t.Errorf("got %v, exp error", got)
    return
  }
}

func TestNewTxBadQueries(t *testing.T) {
  badQueryIds := []string { "query/does/not/exist" }

  // cache context, create temp dir
  ctx := context.Background()
  dir, err := os.MkdirTemp("", "")
  if err != nil {
    t.Error(err)
    return
  }
  defer os.RemoveAll(dir)

  // open db
  db, err := Open(filepath.Join(dir, "newtx-bad-queries.db"))
  if err != nil {
    t.Error(err)
    return
  }

  // init db
  if err := db.Init(ctx); err != nil {
    t.Error(err)
    return
  }

  // create first transaction
  if got, err := db.Begin(ctx, badQueryIds); err == nil {
    t.Errorf("got %v, exp error", got)
    return
  }
}

func TestNewTxPrepareFail(t *testing.T) {
  // cache context, create temp dir
  ctx := context.Background()
  dir, err := os.MkdirTemp("", "")
  if err != nil {
    t.Error(err)
    return
  }
  defer os.RemoveAll(dir)

  // open db
  db, err := Open(filepath.Join(dir, "newtx-prepare-fail.db"))
  if err != nil {
    t.Error(err)
    return
  }

  // create transaction
  if got, err := db.Begin(ctx, []string { "test/junk" }); err == nil {
    t.Errorf("got %v, exp error", got)
  }
}

func TestTxExecFail(t *testing.T) {
  // cache context, create temp dir
  ctx := context.Background()
  dir, err := os.MkdirTemp("", "")
  if err != nil {
    t.Error(err)
    return
  }
  defer os.RemoveAll(dir)

  // open db
  db, err := Open(filepath.Join(dir, "txexecfail.db"))
  if err != nil {
    t.Error(err)
    return
  }

  // init db
  if err := db.Init(ctx); err != nil {
    t.Error(err)
    return
  }

  // create transaction
  tx, err := db.Begin(ctx, []string { "init" })
  if err != nil {
    t.Error(err)
    return
  }

  // close transaction (this will clear statements)
  tx.Close()

  if got, err := tx.Exec(ctx, "init"); err == nil {
    t.Errorf("got %v, exp error", got)
  }
}