...
1 package exp_test
2
3 import (
4 "testing"
5
6 "github.com/doug-martin/goqu/v9/exp"
7 "github.com/stretchr/testify/suite"
8 )
9
10 type caseExpressionSuite struct {
11 suite.Suite
12 }
13
14 func TestCaseExpressionSuite(t *testing.T) {
15 suite.Run(t, &caseExpressionSuite{})
16 }
17
18 func (ces *caseExpressionSuite) TestClone() {
19 ce := exp.NewCaseExpression()
20 ces.Equal(ce, ce.Clone())
21 }
22
23 func (ces *caseExpressionSuite) TestExpression() {
24 ce := exp.NewCaseExpression()
25 ces.Equal(ce, ce.Expression())
26 }
27
28 func (ces *caseExpressionSuite) TestAs() {
29 ce := exp.NewCaseExpression()
30 ces.Equal(exp.NewAliasExpression(ce, "a"), ce.As("a"))
31 }
32
33 func (ces *caseExpressionSuite) TestValue() {
34 ce := exp.NewCaseExpression()
35 ces.Nil(ce.GetValue())
36
37 ce = exp.NewCaseExpression().Value(exp.NewIdentifierExpression("", "", "a"))
38 ces.Equal(exp.NewIdentifierExpression("", "", "a"), ce.GetValue())
39 }
40
41 func (ces *caseExpressionSuite) TestWhen() {
42 condition1 := exp.NewIdentifierExpression("", "", "a").Eq(10)
43 condition2 := exp.NewIdentifierExpression("", "", "b").Eq(20)
44 ce := exp.NewCaseExpression()
45 ces.Equal([]exp.CaseWhen{
46 exp.NewCaseWhen(condition1, "a"),
47 exp.NewCaseWhen(condition2, "b"),
48 }, ce.When(condition1, "a").When(condition2, "b").GetWhens())
49
50 ces.Empty(ce.GetWhens())
51 }
52
53 func (ces *caseExpressionSuite) TestElse() {
54 ce := exp.NewCaseExpression()
55 ces.Equal(exp.NewCaseElse("a"), ce.Else("a").GetElse())
56
57 ces.Nil(ce.GetElse())
58 }
59
60 func (ces *caseExpressionSuite) TestAsc() {
61 ce := exp.NewCaseExpression()
62 ces.Equal(exp.NewOrderedExpression(ce, exp.AscDir, exp.NoNullsSortType), ce.Asc())
63 }
64
65 func (ces *caseExpressionSuite) TestDesc() {
66 ce := exp.NewCaseExpression()
67 ces.Equal(exp.NewOrderedExpression(ce, exp.DescSortDir, exp.NoNullsSortType), ce.Desc())
68 }
69
70 type caseWhenSuite struct {
71 suite.Suite
72 }
73
74 func TestCaseWhenSuite(t *testing.T) {
75 suite.Run(t, &caseWhenSuite{})
76 }
77
78 func (cws *caseWhenSuite) TestCondition() {
79 ce := exp.NewCaseWhen(true, false)
80 cws.Equal(true, ce.Condition())
81 }
82
83 func (cws *caseWhenSuite) TestResult() {
84 ce := exp.NewCaseWhen(true, false)
85 cws.Equal(false, ce.Result())
86 }
87
88 type caseElseSuite struct {
89 suite.Suite
90 }
91
92 func TestCaseElseSuite(t *testing.T) {
93 suite.Run(t, &caseElseSuite{})
94 }
95
96 func (ces *caseElseSuite) TestResult() {
97 ce := exp.NewCaseElse(false)
98 ces.Equal(false, ce.Result())
99 }
100
View as plain text