File: batch_test.go

package info (click to toggle)
golang-github-willfaught-gockle 0.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 136 kB
  • sloc: makefile: 2
file content (75 lines) | stat: -rw-r--r-- 1,632 bytes parent folder | download | duplicates (4)
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
package gockle

import (
	"fmt"
	"reflect"
	"testing"
)

func TestBatch(t *testing.T) {
	var execs = newSession(t)

	var exec = func(q string) {
		if err := execs.Exec(q); err != nil {
			t.Fatalf("Actual error %v, expected no error", err)
		}
	}

	exec(ksDropIf)
	exec(ksCreate)
	exec(tabCreate)
	exec(rowInsert)

	defer execs.Close()
	defer exec(ksDrop)
	defer exec(tabDrop)

	// Exec
	var s = newSession(t)
	var b = s.Batch(BatchKind(0))

	if b == nil {
		t.Error("Actual batch nil, expected not nil")
	}

	b.Add("update gockle_test.test set n = 3 where id = 1 if n = 2")

	if err := b.Exec(); err != nil {
		t.Errorf("Actual error %v, expected no error", err)
	}

	// ExecTx
	b = s.Batch(BatchKind(0))
	b.Add("update gockle_test.test set n = 4 where id = 1 if n = 3")

	if a, err := b.ExecTx(); err == nil {
		if e := ([]map[string]interface{}{{"[applied]": true}}); !reflect.DeepEqual(a, e) {
			t.Errorf("Actual tx %v, expected %v", a, e)
		}
	} else {
		t.Errorf("Actual error %v, expected no error", err)
	}

	s.Close()

	if _, err := b.ExecTx(); err == nil {
		t.Error("Actual no error, expected error")
	}
}

func TestBatchMock(t *testing.T) {
	var m, e = &BatchMock{}, fmt.Errorf("e")

	testMock(t, m, &m.Mock, []struct {
		method    string
		arguments []interface{}
		results   []interface{}
	}{
		{"Add", []interface{}{"", []interface{}(nil)}, nil},
		{"Add", []interface{}{"a", []interface{}{1}}, nil},
		{"Exec", nil, []interface{}{nil}},
		{"Exec", nil, []interface{}{e}},
		{"ExecTx", nil, []interface{}{([]map[string]interface{})(nil), nil}},
		{"ExecTx", nil, []interface{}{[]map[string]interface{}{}, e}},
	})
}