...

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

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

     1  package goqu_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/doug-martin/goqu/v9"
     7  	"github.com/doug-martin/goqu/v9/exp"
     8  	"github.com/stretchr/testify/suite"
     9  )
    10  
    11  type (
    12  	goquExpressionsSuite struct {
    13  		suite.Suite
    14  	}
    15  )
    16  
    17  func (ges *goquExpressionsSuite) TestCast() {
    18  	ges.Equal(exp.NewCastExpression(goqu.C("test"), "string"), goqu.Cast(goqu.C("test"), "string"))
    19  }
    20  
    21  func (ges *goquExpressionsSuite) TestDoNothing() {
    22  	ges.Equal(exp.NewDoNothingConflictExpression(), goqu.DoNothing())
    23  }
    24  
    25  func (ges *goquExpressionsSuite) TestDoUpdate() {
    26  	ges.Equal(exp.NewDoUpdateConflictExpression("test", goqu.Record{"a": "b"}), goqu.DoUpdate("test", goqu.Record{"a": "b"}))
    27  }
    28  
    29  func (ges *goquExpressionsSuite) TestOr() {
    30  	e1 := goqu.C("a").Eq("b")
    31  	e2 := goqu.C("b").Eq(2)
    32  	ges.Equal(exp.NewExpressionList(exp.OrType, e1, e2), goqu.Or(e1, e2))
    33  }
    34  
    35  func (ges *goquExpressionsSuite) TestAnd() {
    36  	e1 := goqu.C("a").Eq("b")
    37  	e2 := goqu.C("b").Eq(2)
    38  	ges.Equal(exp.NewExpressionList(exp.AndType, e1, e2), goqu.And(e1, e2))
    39  }
    40  
    41  func (ges *goquExpressionsSuite) TestFunc() {
    42  	ges.Equal(exp.NewSQLFunctionExpression("count", goqu.L("*")), goqu.Func("count", goqu.L("*")))
    43  }
    44  
    45  func (ges *goquExpressionsSuite) TestDISTINCT() {
    46  	ges.Equal(exp.NewSQLFunctionExpression("DISTINCT", goqu.I("col")), goqu.DISTINCT("col"))
    47  }
    48  
    49  func (ges *goquExpressionsSuite) TestCOUNT() {
    50  	ges.Equal(exp.NewSQLFunctionExpression("COUNT", goqu.I("col")), goqu.COUNT("col"))
    51  }
    52  
    53  func (ges *goquExpressionsSuite) TestMIN() {
    54  	ges.Equal(exp.NewSQLFunctionExpression("MIN", goqu.I("col")), goqu.MIN("col"))
    55  }
    56  
    57  func (ges *goquExpressionsSuite) TestMAX() {
    58  	ges.Equal(exp.NewSQLFunctionExpression("MAX", goqu.I("col")), goqu.MAX("col"))
    59  }
    60  
    61  func (ges *goquExpressionsSuite) TestAVG() {
    62  	ges.Equal(exp.NewSQLFunctionExpression("AVG", goqu.I("col")), goqu.AVG("col"))
    63  }
    64  
    65  func (ges *goquExpressionsSuite) TestFIRST() {
    66  	ges.Equal(exp.NewSQLFunctionExpression("FIRST", goqu.I("col")), goqu.FIRST("col"))
    67  }
    68  
    69  func (ges *goquExpressionsSuite) TestLAST() {
    70  	ges.Equal(exp.NewSQLFunctionExpression("LAST", goqu.I("col")), goqu.LAST("col"))
    71  }
    72  
    73  func (ges *goquExpressionsSuite) TestSUM() {
    74  	ges.Equal(exp.NewSQLFunctionExpression("SUM", goqu.I("col")), goqu.SUM("col"))
    75  }
    76  
    77  func (ges *goquExpressionsSuite) TestCOALESCE() {
    78  	ges.Equal(exp.NewSQLFunctionExpression("COALESCE", goqu.I("col"), nil), goqu.COALESCE(goqu.I("col"), nil))
    79  }
    80  
    81  func (ges *goquExpressionsSuite) TestROW_NUMBER() {
    82  	ges.Equal(exp.NewSQLFunctionExpression("ROW_NUMBER"), goqu.ROW_NUMBER())
    83  }
    84  
    85  func (ges *goquExpressionsSuite) TestRANK() {
    86  	ges.Equal(exp.NewSQLFunctionExpression("RANK"), goqu.RANK())
    87  }
    88  
    89  func (ges *goquExpressionsSuite) TestDENSE_RANK() {
    90  	ges.Equal(exp.NewSQLFunctionExpression("DENSE_RANK"), goqu.DENSE_RANK())
    91  }
    92  
    93  func (ges *goquExpressionsSuite) TestPERCENT_RANK() {
    94  	ges.Equal(exp.NewSQLFunctionExpression("PERCENT_RANK"), goqu.PERCENT_RANK())
    95  }
    96  
    97  func (ges *goquExpressionsSuite) TestCUME_DIST() {
    98  	ges.Equal(exp.NewSQLFunctionExpression("CUME_DIST"), goqu.CUME_DIST())
    99  }
   100  
   101  func (ges *goquExpressionsSuite) TestNTILE() {
   102  	ges.Equal(exp.NewSQLFunctionExpression("NTILE", 1), goqu.NTILE(1))
   103  }
   104  
   105  func (ges *goquExpressionsSuite) TestFIRST_VALUE() {
   106  	ges.Equal(exp.NewSQLFunctionExpression("FIRST_VALUE", goqu.I("col")), goqu.FIRST_VALUE("col"))
   107  }
   108  
   109  func (ges *goquExpressionsSuite) TestLAST_VALUE() {
   110  	ges.Equal(exp.NewSQLFunctionExpression("LAST_VALUE", goqu.I("col")), goqu.LAST_VALUE("col"))
   111  }
   112  
   113  func (ges *goquExpressionsSuite) TestNTH_VALUE() {
   114  	ges.Equal(exp.NewSQLFunctionExpression("NTH_VALUE", goqu.I("col"), 1), goqu.NTH_VALUE("col", 1))
   115  	ges.Equal(exp.NewSQLFunctionExpression("NTH_VALUE", goqu.I("col"), 1), goqu.NTH_VALUE(goqu.C("col"), 1))
   116  }
   117  
   118  func (ges *goquExpressionsSuite) TestI() {
   119  	ges.Equal(exp.NewIdentifierExpression("s", "t", "c"), goqu.I("s.t.c"))
   120  }
   121  
   122  func (ges *goquExpressionsSuite) TestC() {
   123  	ges.Equal(exp.NewIdentifierExpression("", "", "c"), goqu.C("c"))
   124  }
   125  
   126  func (ges *goquExpressionsSuite) TestS() {
   127  	ges.Equal(exp.NewIdentifierExpression("s", "", ""), goqu.S("s"))
   128  }
   129  
   130  func (ges *goquExpressionsSuite) TestT() {
   131  	ges.Equal(exp.NewIdentifierExpression("", "t", ""), goqu.T("t"))
   132  }
   133  
   134  func (ges *goquExpressionsSuite) TestW() {
   135  	ges.Equal(exp.NewWindowExpression(nil, nil, nil, nil), goqu.W())
   136  	ges.Equal(exp.NewWindowExpression(goqu.I("a"), nil, nil, nil), goqu.W("a"))
   137  	ges.Equal(exp.NewWindowExpression(goqu.I("a"), goqu.I("b"), nil, nil), goqu.W("a", "b"))
   138  	ges.Equal(exp.NewWindowExpression(goqu.I("a"), goqu.I("b"), nil, nil), goqu.W("a", "b", "c"))
   139  }
   140  
   141  func (ges *goquExpressionsSuite) TestOn() {
   142  	ges.Equal(exp.NewJoinOnCondition(goqu.Ex{"a": "b"}), goqu.On(goqu.Ex{"a": "b"}))
   143  }
   144  
   145  func (ges *goquExpressionsSuite) TestUsing() {
   146  	ges.Equal(exp.NewJoinUsingCondition("a", "b"), goqu.Using("a", "b"))
   147  }
   148  
   149  func (ges *goquExpressionsSuite) TestL() {
   150  	ges.Equal(exp.NewLiteralExpression("? + ?", 1, 2), goqu.L("? + ?", 1, 2))
   151  }
   152  
   153  func (ges *goquExpressionsSuite) TestLiteral() {
   154  	ges.Equal(exp.NewLiteralExpression("? + ?", 1, 2), goqu.Literal("? + ?", 1, 2))
   155  }
   156  
   157  func (ges *goquExpressionsSuite) TestV() {
   158  	ges.Equal(exp.NewLiteralExpression("?", "a"), goqu.V("a"))
   159  }
   160  
   161  func (ges *goquExpressionsSuite) TestRange() {
   162  	ges.Equal(exp.NewRangeVal("a", "b"), goqu.Range("a", "b"))
   163  }
   164  
   165  func (ges *goquExpressionsSuite) TestStar() {
   166  	ges.Equal(exp.NewLiteralExpression("*"), goqu.Star())
   167  }
   168  
   169  func (ges *goquExpressionsSuite) TestDefault() {
   170  	ges.Equal(exp.Default(), goqu.Default())
   171  }
   172  
   173  func (ges *goquExpressionsSuite) TestLateral() {
   174  	ds := goqu.From("test")
   175  	ges.Equal(exp.NewLateralExpression(ds), goqu.Lateral(ds))
   176  }
   177  
   178  func (ges *goquExpressionsSuite) TestAny() {
   179  	ds := goqu.From("test").Select("id")
   180  	ges.Equal(exp.NewSQLFunctionExpression("ANY ", ds), goqu.Any(ds))
   181  }
   182  
   183  func (ges *goquExpressionsSuite) TestAll() {
   184  	ds := goqu.From("test").Select("id")
   185  	ges.Equal(exp.NewSQLFunctionExpression("ALL ", ds), goqu.All(ds))
   186  }
   187  
   188  func TestGoquExpressions(t *testing.T) {
   189  	suite.Run(t, new(goquExpressionsSuite))
   190  }
   191  

View as plain text