Fix unit tests.
This commit is contained in:
parent
9b826fff6e
commit
eccc17dc8a
10 changed files with 91 additions and 72 deletions
|
|
@ -1,7 +1,6 @@
|
|||
package sqlbuilder
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"gotest.tools/assert"
|
||||
"testing"
|
||||
)
|
||||
|
|
@ -9,100 +8,102 @@ import (
|
|||
func TestBinaryExpression(t *testing.T) {
|
||||
boolExpression := Eq(Literal(2), Literal(3))
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := boolExpression.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), "2 = 3")
|
||||
|
||||
assert.Equal(t, out.buff.String(), "$1 = $2")
|
||||
assert.Equal(t, len(out.args), 2)
|
||||
|
||||
t.Run("alias", func(t *testing.T) {
|
||||
alias := boolExpression.As("alias_eq_expression")
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := alias.SerializeForProjection(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), `2 = 3 AS "alias_eq_expression"`)
|
||||
assert.Equal(t, out.buff.String(), `$1 = $2 AS "alias_eq_expression"`)
|
||||
})
|
||||
|
||||
t.Run("and", func(t *testing.T) {
|
||||
exp := boolExpression.And(Eq(Literal(4), Literal(5)))
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := exp.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), `(2 = 3 AND 4 = 5)`)
|
||||
assert.Equal(t, out.buff.String(), `($1 = $2 AND $3 = $4)`)
|
||||
})
|
||||
|
||||
t.Run("or", func(t *testing.T) {
|
||||
exp := boolExpression.Or(Eq(Literal(4), Literal(5)))
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := exp.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), `(2 = 3 OR 4 = 5)`)
|
||||
assert.Equal(t, out.buff.String(), `($1 = $2 OR $3 = $4)`)
|
||||
})
|
||||
}
|
||||
|
||||
func TestUnaryExpression(t *testing.T) {
|
||||
notExpression := Not(Eq(Literal(2), Literal(1)))
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := notExpression.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), " NOT 2 = 1")
|
||||
assert.Equal(t, out.buff.String(), " NOT $1 = $2")
|
||||
|
||||
t.Run("alias", func(t *testing.T) {
|
||||
alias := notExpression.As("alias_not_expression")
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := alias.SerializeForProjection(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), ` NOT 2 = 1 AS "alias_not_expression"`)
|
||||
assert.Equal(t, out.buff.String(), ` NOT $1 = $2 AS "alias_not_expression"`)
|
||||
})
|
||||
|
||||
t.Run("and", func(t *testing.T) {
|
||||
exp := notExpression.And(Eq(Literal(4), Literal(5)))
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := exp.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), `( NOT 2 = 1 AND 4 = 5)`)
|
||||
assert.Equal(t, out.buff.String(), `( NOT $1 = $2 AND $3 = $4)`)
|
||||
})
|
||||
}
|
||||
|
||||
func TestUnaryIsTrueExpression(t *testing.T) {
|
||||
notExpression := IsTrue(Eq(Literal(2), Literal(1)))
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := notExpression.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), " IS TRUE 2 = 1")
|
||||
assert.Equal(t, out.buff.String(), " IS TRUE $1 = $2")
|
||||
|
||||
t.Run("and", func(t *testing.T) {
|
||||
exp := notExpression.And(Eq(Literal(4), Literal(5)))
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := exp.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, out.String(), `( IS TRUE 2 = 1 AND 4 = 5)`)
|
||||
assert.Equal(t, out.buff.String(), `( IS TRUE $1 = $2 AND $3 = $4)`)
|
||||
})
|
||||
}
|
||||
|
||||
func TestBoolLiteral(t *testing.T) {
|
||||
literal := newBoolLiteralExpression(true)
|
||||
|
||||
out := bytes.Buffer{}
|
||||
out := queryData{}
|
||||
err := literal.Serialize(&out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
|
||||
assert.Equal(t, out.String(), "true")
|
||||
assert.Equal(t, out.buff.String(), "$1")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue