Files
db/exp/delete_clauses_test.go
T
2025-03-22 23:02:05 +08:00

257 lines
5.6 KiB
Go

package exp_test
import (
"testing"
"git.fsdpf.net/go/db/v2/exp"
"github.com/stretchr/testify/suite"
)
type deleteClausesSuite struct {
suite.Suite
}
func TestDeleteClausesSuite(t *testing.T) {
suite.Run(t, new(deleteClausesSuite))
}
func (dcs *deleteClausesSuite) TestHasFrom() {
c := exp.NewDeleteClauses()
c2 := c.SetFrom(exp.NewIdentifierExpression("", "test", ""))
dcs.False(c.HasFrom())
dcs.True(c2.HasFrom())
}
func (dcs *deleteClausesSuite) TestFrom() {
c := exp.NewDeleteClauses()
ti := exp.NewIdentifierExpression("", "a", "")
c2 := c.SetFrom(ti)
dcs.Nil(c.From())
dcs.Equal(ti, c2.From())
}
func (dcs *deleteClausesSuite) TestSetFrom() {
c := exp.NewDeleteClauses()
ti := exp.NewIdentifierExpression("", "a", "")
c2 := c.SetFrom(ti)
dcs.Nil(c.From())
dcs.Equal(ti, c2.From())
}
func (dcs *deleteClausesSuite) TestWhere() {
w := exp.Ex{"a": 1}
c := exp.NewDeleteClauses()
c2 := c.WhereAppend(w)
dcs.Nil(c.Where())
dcs.Equal(exp.NewExpressionList(exp.AndType, w), c2.Where())
}
func (dcs *deleteClausesSuite) TestClearWhere() {
w := exp.Ex{"a": 1}
c := exp.NewDeleteClauses().WhereAppend(w)
c2 := c.ClearWhere()
dcs.Equal(exp.NewExpressionList(exp.AndType, w), c.Where())
dcs.Nil(c2.Where())
}
func (dcs *deleteClausesSuite) TestWhereAppend() {
w := exp.Ex{"a": 1}
w2 := exp.Ex{"b": 2}
c := exp.NewDeleteClauses()
c2 := c.WhereAppend(w)
c3 := c.WhereAppend(w).WhereAppend(w2)
c4 := c.WhereAppend(w, w2)
dcs.Nil(c.Where())
dcs.Equal(exp.NewExpressionList(exp.AndType, w), c2.Where())
dcs.Equal(exp.NewExpressionList(exp.AndType, w).Append(w2), c3.Where())
dcs.Equal(exp.NewExpressionList(exp.AndType, w, w2), c4.Where())
}
func (dcs *deleteClausesSuite) TestOrder() {
oe := exp.NewIdentifierExpression("", "", "a").Desc()
c := exp.NewDeleteClauses()
c2 := c.SetOrder(oe)
dcs.Nil(c.Order())
dcs.Equal(exp.NewColumnListExpression(oe), c2.Order())
}
func (dcs *deleteClausesSuite) TestHasOrder() {
oe := exp.NewIdentifierExpression("", "", "a").Desc()
c := exp.NewDeleteClauses()
c2 := c.SetOrder(oe)
dcs.False(c.HasOrder())
dcs.True(c2.HasOrder())
}
func (dcs *deleteClausesSuite) TestClearOrder() {
oe := exp.NewIdentifierExpression("", "", "a").Desc()
c := exp.NewDeleteClauses().SetOrder(oe)
c2 := c.ClearOrder()
dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
dcs.Nil(c2.Order())
}
func (dcs *deleteClausesSuite) TestSetOrder() {
oe := exp.NewIdentifierExpression("", "", "a").Desc()
oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
c := exp.NewDeleteClauses().SetOrder(oe)
c2 := c.SetOrder(oe2)
dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
dcs.Equal(exp.NewColumnListExpression(oe2), c2.Order())
}
func (dcs *deleteClausesSuite) TestOrderAppend() {
oe := exp.NewIdentifierExpression("", "", "a").Desc()
oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
c := exp.NewDeleteClauses().SetOrder(oe)
c2 := c.OrderAppend(oe2)
dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
dcs.Equal(exp.NewColumnListExpression(oe, oe2), c2.Order())
}
func (dcs *deleteClausesSuite) TestOrderPrepend() {
oe := exp.NewIdentifierExpression("", "", "a").Desc()
oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
c := exp.NewDeleteClauses().SetOrder(oe)
c2 := c.OrderPrepend(oe2)
dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
dcs.Equal(exp.NewColumnListExpression(oe2, oe), c2.Order())
}
func (dcs *deleteClausesSuite) TestLimit() {
l := 1
c := exp.NewDeleteClauses()
c2 := c.SetLimit(l)
dcs.Nil(c.Limit())
dcs.Equal(l, c2.Limit())
}
func (dcs *deleteClausesSuite) TestHasLimit() {
l := 1
c := exp.NewDeleteClauses()
c2 := c.SetLimit(l)
dcs.False(c.HasLimit())
dcs.True(c2.HasLimit())
}
func (dcs *deleteClausesSuite) TestCLearLimit() {
l := 1
c := exp.NewDeleteClauses().SetLimit(l)
c2 := c.ClearLimit()
dcs.True(c.HasLimit())
dcs.False(c2.HasLimit())
}
func (dcs *deleteClausesSuite) TestSetLimit() {
l := 1
l2 := 2
c := exp.NewDeleteClauses().SetLimit(l)
c2 := c.SetLimit(2)
dcs.Equal(l, c.Limit())
dcs.Equal(l2, c2.Limit())
}
func (dcs *deleteClausesSuite) TestCommonTables() {
cte := exp.NewCommonTableExpression(true, "test", newTestAppendableExpression(`SELECT * FROM "foo"`, []interface{}{}))
c := exp.NewDeleteClauses()
c2 := c.CommonTablesAppend(cte)
dcs.Nil(c.CommonTables())
dcs.Equal([]exp.CommonTableExpression{cte}, c2.CommonTables())
}
func (dcs *deleteClausesSuite) TestAddCommonTablesAppend() {
cte := exp.NewCommonTableExpression(true, "test", testSQLExpression("test_cte"))
cte2 := exp.NewCommonTableExpression(true, "test", testSQLExpression("test_cte2"))
c := exp.NewDeleteClauses().CommonTablesAppend(cte)
c2 := c.CommonTablesAppend(cte2)
dcs.Equal([]exp.CommonTableExpression{cte}, c.CommonTables())
dcs.Equal([]exp.CommonTableExpression{cte, cte2}, c2.CommonTables())
}
func (dcs *deleteClausesSuite) TestReturning() {
cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
c := exp.NewDeleteClauses()
c2 := c.SetReturning(cl)
dcs.Nil(c.Returning())
dcs.Equal(cl, c2.Returning())
}
func (dcs *deleteClausesSuite) TestHasReturning() {
cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
c := exp.NewDeleteClauses()
c2 := c.SetReturning(cl)
dcs.False(c.HasReturning())
dcs.True(c2.HasReturning())
}
func (dcs *deleteClausesSuite) TestSetReturning() {
cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
cl2 := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col2"))
c := exp.NewDeleteClauses().SetReturning(cl)
c2 := c.SetReturning(cl2)
dcs.Equal(cl, c.Returning())
dcs.Equal(cl2, c2.Returning())
}