forked from slicebit/qb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetadata_test.go
87 lines (65 loc) · 2.15 KB
/
metadata_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
83
84
85
86
87
package qb
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestMetadataCreateAllDropAllError(t *testing.T) {
type Account struct {
ID string `qb:"type:uuid; constraints:primary_key"`
}
qb, err := New("postgres", "user=postgres dbname=qb_test sslmode=disable")
qb.Dialect().SetEscaping(true)
assert.Nil(t, err)
qb.AddTable(&Account{})
err = qb.Metadata().CreateAll(qb.Engine())
assert.Nil(t, err)
qbNew, err := New("postgres", "user=postgres dbname=qb_test sslmode=disable")
qbNew.Dialect().SetEscaping(true)
assert.Nil(t, err)
qbNew.AddTable(&Account{})
err = qbNew.Metadata().CreateAll(qbNew.Engine())
assert.NotNil(t, err)
err = qb.Metadata().DropAll(qb.Engine())
assert.Nil(t, err)
err = qbNew.Metadata().DropAll(qbNew.Engine())
assert.NotNil(t, err)
}
type UserMetadataError struct {
ID int `qb:"constraints:i:nvalid"`
}
func TestMetadataAddError(t *testing.T) {
dialect := NewDialect("postgres")
metadata := MetaData(dialect)
assert.Panics(t, func() { metadata.Add(UserMetadataError{}) })
assert.Equal(t, len(metadata.Tables()), 0)
}
func TestMetadataAddTable(t *testing.T) {
dialect := NewDialect("postgres")
metadata := MetaData(dialect)
table := Table("user", Column("id", BigInt()))
metadata.AddTable(table)
assert.Equal(t, metadata.Tables(), []TableElem{table})
assert.Equal(t, metadata.Table("user").Name, "user")
}
func TestMetadataTable(t *testing.T) {
dialect := NewDialect("postgres")
metadata := MetaData(dialect)
assert.Panics(t, func() { metadata.Table("invalid-table") })
}
func TestMetadataFailCreateDropAll(t *testing.T) {
engine, _ := NewEngine("postgres", "user=postgres dbname=qb_test sslmode=disable")
dialect := NewDialect(engine.Driver())
metadata := MetaData(dialect)
var err error
err = metadata.CreateAll(engine)
assert.NotNil(t, err)
err = metadata.DropAll(engine)
assert.NotNil(t, err)
}
func TestMetadataWithNoConnection(t *testing.T) {
engine, _ := NewEngine("postgres", "user=postgres dbname=qb_test sslmode=disable")
engine.DB().Close()
metadata := MetaData(NewDialect(engine.Driver()))
assert.NotNil(t, metadata.CreateAll(engine))
assert.NotNil(t, metadata.DropAll(engine))
}