Skip to content

Commit acd67cf

Browse files
committed
add more test cases & replace some err in errors.New(...) style & add some built-in err types
1 parent 567ee6c commit acd67cf

7 files changed

+32
-16
lines changed

builder_insert.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package builder
66

77
import (
88
"bytes"
9-
"errors"
109
"fmt"
1110
)
1211

@@ -18,10 +17,10 @@ func Insert(eq Eq) *Builder {
1817

1918
func (b *Builder) insertWriteTo(w Writer) error {
2019
if len(b.tableName) <= 0 {
21-
return errors.New("no table indicated")
20+
return ErrNoTableName
2221
}
2322
if len(b.inserts) <= 0 {
24-
return errors.New("no column to be insert")
23+
return ErrNoColumnToInsert
2524
}
2625

2726
if _, err := fmt.Fprintf(w, "INSERT INTO %s (", b.tableName); err != nil {

builder_select.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func Select(cols ...string) *Builder {
1717

1818
func (b *Builder) selectWriteTo(w Writer) error {
1919
if len(b.tableName) <= 0 {
20-
return errors.New("no table indicated")
20+
return ErrNoTableName
2121
}
2222

2323
// perform limit before writing to writer when b.dialect between ORACLE and MSSQL

builder_select_test.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ import (
1414
func TestBuilder_Select(t *testing.T) {
1515
sql, args, err := Select("c, d").From("table1").ToSQL()
1616
assert.NoError(t, err)
17-
fmt.Println(sql, args)
17+
assert.EqualValues(t, "SELECT c, d FROM table1", sql)
1818

1919
sql, args, err = Select("c, d").From("table1").Where(Eq{"a": 1}).ToSQL()
2020
assert.NoError(t, err)
21-
fmt.Println(sql, args)
21+
assert.EqualValues(t, "SELECT c, d FROM table1 WHERE a=?", sql)
22+
assert.EqualValues(t, []interface{}{1}, args)
2223

2324
sql, args, err = Select("c, d").From("table1").LeftJoin("table2", Eq{"table1.id": 1}.And(Lt{"table2.id": 3})).
2425
RightJoin("table3", "table2.id = table3.tid").Where(Eq{"a": 1}).ToSQL()
@@ -47,6 +48,10 @@ func TestBuilder_Select(t *testing.T) {
4748
assert.EqualValues(t, "SELECT c, d FROM table1 LEFT JOIN table2 ON table1.id=? AND table2.id<? INNER JOIN table3 ON table2.id = table3.tid WHERE a=?",
4849
sql)
4950
assert.EqualValues(t, []interface{}{1, 3, 1}, args)
51+
52+
_, _, err = Select("c, d").ToSQL()
53+
assert.Error(t, err)
54+
assert.EqualValues(t, ErrNoTableName, err)
5055
}
5156

5257
func TestBuilderSelectGroupBy(t *testing.T) {

builder_test.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package builder
66

77
import (
8-
"fmt"
98
"testing"
109

1110
"github.com/stretchr/testify/assert"
@@ -413,9 +412,17 @@ func TestBuilderCond(t *testing.T) {
413412
}
414413

415414
func TestBuilderInsert(t *testing.T) {
416-
sql, args, err := Insert(Eq{"c": 1, "d": 2}).Into("table1").ToSQL()
415+
sql, err := Insert(Eq{"c": 1, "d": 2}).Into("table1").ToBoundSQL()
417416
assert.NoError(t, err)
418-
fmt.Println(sql, args)
417+
assert.EqualValues(t, "INSERT INTO table1 (c,d) Values (1,2)", sql)
418+
419+
sql, err = Insert(Eq{"c": 1, "d": 2}).ToBoundSQL()
420+
assert.Error(t, err)
421+
assert.EqualValues(t, ErrNoTableName, err)
422+
423+
sql, err = Insert(Eq{}).Into("table1").ToBoundSQL()
424+
assert.Error(t, err)
425+
assert.EqualValues(t, ErrNoColumnToInsert, err)
419426
}
420427

421428
func TestSubquery(t *testing.T) {

builder_union.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,20 @@
55
package builder
66

77
import (
8-
"errors"
98
"fmt"
109
"strings"
1110
)
1211

1312
func (b *Builder) unionWriteTo(w Writer) error {
1413
if b.limitation != nil || b.cond != NewCond() ||
1514
b.orderBy != "" || b.having != "" || b.groupBy != "" {
16-
return errors.New("builder in unionType should not have any conditional fields in it(like Where or Limit)")
15+
return ErrNotUnexpectedUnionConditions
1716
}
1817

1918
for idx, u := range b.unions {
2019
current := u.builder
2120
if current.optype != selectType {
22-
return errors.New("UNION is only allowed among SELECT operations")
21+
return ErrUnsupportedUnionMembers
2322
}
2423

2524
if len(b.unions) == 1 {

builder_union_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ func TestBuilder_Union(t *testing.T) {
2727
Where(Eq{"a": 2}).Limit(5, 10).
2828
ToSQL()
2929
assert.Error(t, err)
30-
fmt.Println(err)
30+
assert.EqualValues(t, ErrNotUnexpectedUnionConditions, err)
3131

3232
// will raise error
3333
sql, args, err = Delete(Eq{"a": 1}).From("t1").
3434
Union("all", Select("*").From("t2").Where(Eq{"status": "2"})).ToSQL()
3535
assert.Error(t, err)
36-
fmt.Println(err)
36+
assert.EqualValues(t, ErrUnsupportedUnionMembers, err)
3737

3838
// will be overwrote by SELECT op
3939
sql, args, err = Select("*").From("t1").Where(Eq{"status": "1"}).

error.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,14 @@ var (
1717
ErrNeedMoreArguments = errors.New("Need more sql arguments")
1818
// ErrNoTableName no table name
1919
ErrNoTableName = errors.New("No table indicated")
20-
// ErrNoColumnToUpdate no column to update
21-
ErrNoColumnToUpdate = errors.New("No column to be update")
20+
// ErrNoColumnToInsert no column to update
21+
ErrNoColumnToUpdate = errors.New("No column(s) to update")
22+
// ErrNoColumnToInsert no column to update
23+
ErrNoColumnToInsert = errors.New("No column(s) to insert")
2224
// ErrNotSupportDialectType not supported dialect type error
2325
ErrNotSupportDialectType = errors.New("Not supported dialect type")
26+
// ErrNotUnexpectedUnionConditions using union in a wrong way
27+
ErrNotUnexpectedUnionConditions = errors.New("Unexpected conditional fields in UNION query")
28+
// ErrUnsupportedUnionMembers unexpected members in UNION query
29+
ErrUnsupportedUnionMembers = errors.New("Unexpected members in UNION query")
2430
)

0 commit comments

Comments
 (0)