|
1 | 1 | package qb |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "github.com/stretchr/testify/assert" |
5 | 4 | "testing" |
6 | | -) |
7 | 5 |
|
8 | | -func TestColumn(t *testing.T) { |
9 | | - dialect := NewDialect("default") |
| 6 | + "github.com/stretchr/testify/suite" |
10 | 7 |
|
11 | | - col := Column("id", Varchar().Size(40)) |
12 | | - assert.Equal(t, "id", col.Name) |
13 | | - assert.Equal(t, Varchar().Size(40), col.Type) |
| 8 | + "github.com/stretchr/testify/assert" |
| 9 | +) |
14 | 10 |
|
15 | | - assert.Equal(t, "id VARCHAR(40)", col.String(dialect)) |
| 11 | +type ColumnTestSuite struct { |
| 12 | + suite.Suite |
| 13 | + dialect Dialect |
| 14 | + ctx *CompilerContext |
| 15 | +} |
16 | 16 |
|
17 | | - col = Column("s", Varchar().Size(255)).Unique().NotNull().Default("hello") |
18 | | - assert.Equal(t, "s VARCHAR(255) UNIQUE NOT NULL DEFAULT 'hello'", col.String(dialect)) |
| 17 | +func (suite *ColumnTestSuite) SetupTest() { |
| 18 | + suite.dialect = NewDefaultDialect() |
| 19 | + suite.ctx = NewCompilerContext(suite.dialect) |
| 20 | +} |
19 | 21 |
|
20 | | - precisionCol := Column("f", Type("FLOAT").Precision(2, 5)).Null() |
21 | | - assert.Equal(t, "f FLOAT(2, 5) NULL", precisionCol.String(dialect)) |
| 22 | +func (suite *ColumnTestSuite) TestColumnVarcharSpecificSize() { |
| 23 | + col := Column("id", Varchar().Size(40)) |
| 24 | + assert.Equal(suite.T(), "id", col.Name) |
| 25 | + assert.Equal(suite.T(), Varchar().Size(40), col.Type) |
| 26 | + assert.Equal(suite.T(), "id VARCHAR(40)", col.String(suite.dialect)) |
| 27 | +} |
22 | 28 |
|
23 | | - col = Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
| 29 | +func (suite *ColumnTestSuite) TestColumnVarcharUniqueNotNullDefault() { |
| 30 | + col := Column("s", Varchar().Size(255)).Unique().NotNull().Default("hello") |
| 31 | + assert.Equal(suite.T(), "s VARCHAR(255) UNIQUE NOT NULL DEFAULT 'hello'", col.String(suite.dialect)) |
| 32 | +} |
24 | 33 |
|
25 | | - assert.Equal(t, "id INT PRIMARY KEY AUTO INCREMENT", col.String(dialect)) |
| 34 | +func (suite *ColumnTestSuite) TestColumnFloatPrecision() { |
| 35 | + col := Column("f", Type("FLOAT").Precision(2, 5)).Null() |
| 36 | + assert.Equal(suite.T(), "f FLOAT(2, 5) NULL", col.String(suite.dialect)) |
| 37 | +} |
26 | 38 |
|
27 | | - assert.Equal(t, "c INT TEST", Column("c", Int()).Constraint("TEST").String(dialect)) |
| 39 | +func (suite *ColumnTestSuite) TestColumnIntInlinePrimaryKeyAutoIncrement() { |
| 40 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
| 41 | + assert.Equal(suite.T(), "id INT PRIMARY KEY AUTO INCREMENT", col.String(suite.dialect)) |
| 42 | + assert.Equal(suite.T(), "c INT TEST", Column("c", Int()).Constraint("TEST").String(suite.dialect)) |
| 43 | +} |
28 | 44 |
|
29 | | - // like |
| 45 | +func (suite *ColumnTestSuite) TestColumnLike() { |
| 46 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
30 | 47 | like := col.Like("s%") |
31 | | - sql, binds := asDefSQLBinds(like) |
32 | 48 |
|
33 | | - assert.Equal(t, "id LIKE ?", sql) |
34 | | - assert.Equal(t, []interface{}{"s%"}, binds) |
| 49 | + sql := like.Accept(suite.ctx) |
| 50 | + binds := suite.ctx.Binds |
35 | 51 |
|
36 | | - // not in |
37 | | - notIn := col.NotIn("id1", "id2") |
38 | | - sql, binds = asDefSQLBinds(notIn) |
| 52 | + assert.Equal(suite.T(), "id LIKE ?", sql) |
| 53 | + assert.Equal(suite.T(), []interface{}{"s%"}, binds) |
| 54 | +} |
39 | 55 |
|
40 | | - assert.Equal(t, "id NOT IN (?, ?)", sql) |
41 | | - assert.Equal(t, []interface{}{"id1", "id2"}, binds) |
| 56 | +func (suite *ColumnTestSuite) TestColumnNotIn() { |
| 57 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
| 58 | + notIn := col.NotIn("id1", "id2") |
| 59 | + sql := notIn.Accept(suite.ctx) |
| 60 | + binds := suite.ctx.Binds |
| 61 | + assert.Equal(suite.T(), "id NOT IN (?, ?)", sql) |
| 62 | + assert.Equal(suite.T(), []interface{}{"id1", "id2"}, binds) |
| 63 | +} |
42 | 64 |
|
43 | | - // in |
| 65 | +func (suite *ColumnTestSuite) TestColumnIn() { |
| 66 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
44 | 67 | in := col.In("id1", "id2") |
45 | | - sql, binds = asDefSQLBinds(in) |
| 68 | + sql := in.Accept(suite.ctx) |
| 69 | + binds := suite.ctx.Binds |
46 | 70 |
|
47 | | - assert.Equal(t, "id IN (?, ?)", sql) |
48 | | - assert.Equal(t, []interface{}{"id1", "id2"}, binds) |
| 71 | + assert.Equal(suite.T(), "id IN (?, ?)", sql) |
| 72 | + assert.Equal(suite.T(), []interface{}{"id1", "id2"}, binds) |
| 73 | +} |
49 | 74 |
|
50 | | - // not eq |
| 75 | +func (suite *ColumnTestSuite) TestColumnNotEq() { |
| 76 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
51 | 77 | notEq := col.NotEq("id1") |
52 | | - sql, binds = asDefSQLBinds(notEq) |
| 78 | + sql := notEq.Accept(suite.ctx) |
| 79 | + binds := suite.ctx.Binds |
53 | 80 |
|
54 | | - assert.Equal(t, "id != ?", sql) |
55 | | - assert.Equal(t, []interface{}{"id1"}, binds) |
| 81 | + assert.Equal(suite.T(), "id != ?", sql) |
| 82 | + assert.Equal(suite.T(), []interface{}{"id1"}, binds) |
| 83 | +} |
56 | 84 |
|
57 | | - // eq |
| 85 | +func (suite *ColumnTestSuite) TestColumnEq() { |
| 86 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
58 | 87 | eq := col.Eq("id1") |
59 | | - sql, binds = asDefSQLBinds(eq) |
| 88 | + sql := eq.Accept(suite.ctx) |
| 89 | + binds := suite.ctx.Binds |
60 | 90 |
|
61 | | - assert.Equal(t, "id = ?", sql) |
62 | | - assert.Equal(t, []interface{}{"id1"}, binds) |
| 91 | + assert.Equal(suite.T(), "id = ?", sql) |
| 92 | + assert.Equal(suite.T(), []interface{}{"id1"}, binds) |
| 93 | +} |
63 | 94 |
|
64 | | - // gt |
| 95 | +func (suite *ColumnTestSuite) TestColumnGt() { |
| 96 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
65 | 97 | gt := col.Gt("id1") |
66 | | - sql, binds = asDefSQLBinds(gt) |
| 98 | + sql := gt.Accept(suite.ctx) |
| 99 | + binds := suite.ctx.Binds |
67 | 100 |
|
68 | | - assert.Equal(t, "id > ?", sql) |
69 | | - assert.Equal(t, []interface{}{"id1"}, binds) |
| 101 | + assert.Equal(suite.T(), "id > ?", sql) |
| 102 | + assert.Equal(suite.T(), []interface{}{"id1"}, binds) |
| 103 | +} |
70 | 104 |
|
71 | | - // lt |
| 105 | +func (suite *ColumnTestSuite) TestColumnLt() { |
| 106 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
72 | 107 | lt := col.Lt("id1") |
73 | | - sql, binds = asDefSQLBinds(lt) |
| 108 | + sql := lt.Accept(suite.ctx) |
| 109 | + binds := suite.ctx.Binds |
74 | 110 |
|
75 | | - assert.Equal(t, "id < ?", sql) |
76 | | - assert.Equal(t, []interface{}{"id1"}, binds) |
| 111 | + assert.Equal(suite.T(), "id < ?", sql) |
| 112 | + assert.Equal(suite.T(), []interface{}{"id1"}, binds) |
| 113 | +} |
77 | 114 |
|
78 | | - // gte |
| 115 | +func (suite *ColumnTestSuite) TestcolumnGte() { |
| 116 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
79 | 117 | gte := col.Gte("id1") |
80 | | - sql, binds = asDefSQLBinds(gte) |
| 118 | + sql := gte.Accept(suite.ctx) |
| 119 | + binds := suite.ctx.Binds |
81 | 120 |
|
82 | | - assert.Equal(t, "id >= ?", sql) |
83 | | - assert.Equal(t, []interface{}{"id1"}, binds) |
| 121 | + assert.Equal(suite.T(), "id >= ?", sql) |
| 122 | + assert.Equal(suite.T(), []interface{}{"id1"}, binds) |
| 123 | +} |
84 | 124 |
|
85 | | - // lte |
| 125 | +func (suite *ColumnTestSuite) TestColumnLte() { |
| 126 | + col := Column("id", Int()).PrimaryKey().AutoIncrement().inlinePrimaryKey() |
86 | 127 | lte := col.Lte("id1") |
87 | | - sql, binds = asDefSQLBinds(lte) |
| 128 | + sql := lte.Accept(suite.ctx) |
| 129 | + binds := suite.ctx.Binds |
88 | 130 |
|
89 | | - assert.Equal(t, "id <= ?", sql) |
90 | | - assert.Equal(t, []interface{}{"id1"}, binds) |
| 131 | + assert.Equal(suite.T(), "id <= ?", sql) |
| 132 | + assert.Equal(suite.T(), []interface{}{"id1"}, binds) |
| 133 | +} |
91 | 134 |
|
92 | | - sql = col.Accept(NewCompilerContext(dialect)) |
93 | | - assert.Equal(t, "id", sql) |
| 135 | +func TestColumnTestSuite(t *testing.T) { |
| 136 | + suite.Run(t, new(ColumnTestSuite)) |
94 | 137 | } |
0 commit comments