...

Source file src/github.com/doug-martin/goqu/v9/exp/case_test.go

Documentation: github.com/doug-martin/goqu/v9/exp

     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