forked from guregu/mogi
/
mogi_test.go
65 lines (51 loc) · 1.34 KB
/
mogi_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
package mogi_test
import (
"database/sql"
"database/sql/driver"
"testing"
"github.com/guregu/mogi"
)
func TestMogi(t *testing.T) {
defer mogi.Reset()
mogi.Verbose(false)
db := openDB()
// select (any columns)
mogi.Select().StubCSV(beerCSV)
runBeerSelectQuery(t, db)
// test .Stub()
mogi.Select().Stub([][]driver.Value{
{1, "Yona Yona Ale", "Yo-Ho Brewing", 5.5},
{2, "Punk IPA", "BrewDog", 5.6}})
runBeerSelectQuery(t, db)
// test reset
mogi.Reset()
_, err := db.Query("SELECT id, name, brewery, pct FROM beer WHERE pct > ?", 5)
if err != mogi.ErrUnstubbed {
t.Error("after reset, err should be ErrUnstubbed but is", err)
}
// select specific columns
mogi.Select("id", "name", "brewery", "pct").StubCSV(beerCSV)
runBeerSelectQuery(t, db)
// select the "wrong" columns
mogi.Reset()
mogi.Select("hello", "👞").StubCSV(beerCSV)
runUnstubbedSelect(t, db)
}
func TestNotify(t *testing.T) {
defer mogi.Reset()
db := openDB()
ch := make(chan struct{})
mogi.Insert().Into("beer").Notify(ch).StubResult(3, 1)
_, err := db.Exec("INSERT INTO beer (name, brewery, pct) VALUES (?, ?, ?)", "Mikkel’s Dream", "Mikkeller", 4.6)
checkNil(t, err)
<-ch
}
func checkNil(t *testing.T, err error) {
if err != nil {
t.Error("error should be nil but is", err)
}
}
func openDB() *sql.DB {
db, _ := sql.Open("mogi", "")
return db
}