...

Source file src/github.com/doug-martin/goqu/v9/exp/update_clauses_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 updateClausesSuite struct {
    11  	suite.Suite
    12  }
    13  
    14  func TestUpdateClausesSuite(t *testing.T) {
    15  	suite.Run(t, new(updateClausesSuite))
    16  }
    17  
    18  func (ucs *updateClausesSuite) TestHasTable() {
    19  	c := exp.NewUpdateClauses()
    20  	c2 := c.SetTable(exp.NewIdentifierExpression("", "test", ""))
    21  
    22  	ucs.False(c.HasTable())
    23  
    24  	ucs.True(c2.HasTable())
    25  }
    26  
    27  func (ucs *updateClausesSuite) TestTable() {
    28  	c := exp.NewUpdateClauses()
    29  	ti := exp.NewIdentifierExpression("", "a", "")
    30  	c2 := c.SetTable(ti)
    31  
    32  	ucs.Nil(c.Table())
    33  
    34  	ucs.Equal(ti, c2.Table())
    35  }
    36  
    37  func (ucs *updateClausesSuite) TestSetTable() {
    38  	c := exp.NewUpdateClauses()
    39  	ti := exp.NewIdentifierExpression("", "a", "")
    40  	c2 := c.SetTable(ti)
    41  
    42  	ucs.Nil(c.Table())
    43  
    44  	ucs.Equal(ti, c2.Table())
    45  }
    46  
    47  func (ucs *updateClausesSuite) TestSetValues() {
    48  	c := exp.NewUpdateClauses()
    49  	r := exp.Record{"a": "a1", "b": "b1"}
    50  	c2 := c.SetSetValues(r)
    51  
    52  	ucs.Nil(c.SetValues())
    53  
    54  	ucs.Equal(r, c2.SetValues())
    55  }
    56  
    57  func (ucs *updateClausesSuite) TestSetSetValues() {
    58  	r := exp.Record{"a": "a1", "b": "b1"}
    59  	c := exp.NewUpdateClauses().SetSetValues(r)
    60  	r2 := exp.Record{"a": "a2", "b": "b2"}
    61  	c2 := c.SetSetValues(r2)
    62  
    63  	ucs.Equal(r, c.SetValues())
    64  
    65  	ucs.Equal(r2, c2.SetValues())
    66  }
    67  
    68  func (ucs *updateClausesSuite) TestFrom() {
    69  	c := exp.NewUpdateClauses()
    70  	ce := exp.NewColumnListExpression("a", "b")
    71  	c2 := c.SetFrom(ce)
    72  
    73  	ucs.Nil(c.From())
    74  
    75  	ucs.Equal(ce, c2.From())
    76  }
    77  
    78  func (ucs *updateClausesSuite) TestSetFrom() {
    79  	ce1 := exp.NewColumnListExpression("a", "b")
    80  	c := exp.NewUpdateClauses().SetFrom(ce1)
    81  	ce2 := exp.NewColumnListExpression("a", "b")
    82  	c2 := c.SetFrom(ce2)
    83  
    84  	ucs.Equal(ce1, c.From())
    85  
    86  	ucs.Equal(ce2, c2.From())
    87  }
    88  
    89  func (ucs *updateClausesSuite) TestWhere() {
    90  	w := exp.Ex{"a": 1}
    91  
    92  	c := exp.NewUpdateClauses()
    93  	c2 := c.WhereAppend(w)
    94  
    95  	ucs.Nil(c.Where())
    96  
    97  	ucs.Equal(exp.NewExpressionList(exp.AndType, w), c2.Where())
    98  }
    99  
   100  func (ucs *updateClausesSuite) TestClearWhere() {
   101  	w := exp.Ex{"a": 1}
   102  
   103  	c := exp.NewUpdateClauses().WhereAppend(w)
   104  	c2 := c.ClearWhere()
   105  
   106  	ucs.Equal(exp.NewExpressionList(exp.AndType, w), c.Where())
   107  
   108  	ucs.Nil(c2.Where())
   109  }
   110  
   111  func (ucs *updateClausesSuite) TestWhereAppend() {
   112  	w := exp.Ex{"a": 1}
   113  	w2 := exp.Ex{"b": 2}
   114  
   115  	c := exp.NewUpdateClauses()
   116  	c2 := c.WhereAppend(w)
   117  
   118  	c3 := c.WhereAppend(w).WhereAppend(w2)
   119  
   120  	c4 := c.WhereAppend(w, w2)
   121  
   122  	ucs.Nil(c.Where())
   123  
   124  	ucs.Equal(exp.NewExpressionList(exp.AndType, w), c2.Where())
   125  	ucs.Equal(exp.NewExpressionList(exp.AndType, w).Append(w2), c3.Where())
   126  	ucs.Equal(exp.NewExpressionList(exp.AndType, w, w2), c4.Where())
   127  }
   128  
   129  func (ucs *updateClausesSuite) TestOrder() {
   130  	oe := exp.NewIdentifierExpression("", "", "a").Desc()
   131  
   132  	c := exp.NewUpdateClauses()
   133  	c2 := c.SetOrder(oe)
   134  
   135  	ucs.Nil(c.Order())
   136  
   137  	ucs.Equal(exp.NewColumnListExpression(oe), c2.Order())
   138  }
   139  
   140  func (ucs *updateClausesSuite) TestHasOrder() {
   141  	oe := exp.NewIdentifierExpression("", "", "a").Desc()
   142  
   143  	c := exp.NewUpdateClauses()
   144  	c2 := c.SetOrder(oe)
   145  
   146  	ucs.False(c.HasOrder())
   147  
   148  	ucs.True(c2.HasOrder())
   149  }
   150  
   151  func (ucs *updateClausesSuite) TestClearOrder() {
   152  	oe := exp.NewIdentifierExpression("", "", "a").Desc()
   153  
   154  	c := exp.NewUpdateClauses().SetOrder(oe)
   155  	c2 := c.ClearOrder()
   156  
   157  	ucs.Equal(exp.NewColumnListExpression(oe), c.Order())
   158  
   159  	ucs.Nil(c2.Order())
   160  }
   161  
   162  func (ucs *updateClausesSuite) TestSetOrder() {
   163  	oe := exp.NewIdentifierExpression("", "", "a").Desc()
   164  	oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
   165  
   166  	c := exp.NewUpdateClauses().SetOrder(oe)
   167  	c2 := c.SetOrder(oe2)
   168  
   169  	ucs.Equal(exp.NewColumnListExpression(oe), c.Order())
   170  
   171  	ucs.Equal(exp.NewColumnListExpression(oe2), c2.Order())
   172  }
   173  
   174  func (ucs *updateClausesSuite) TestOrderAppend() {
   175  	oe := exp.NewIdentifierExpression("", "", "a").Desc()
   176  	oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
   177  
   178  	c := exp.NewUpdateClauses().SetOrder(oe)
   179  	c2 := c.OrderAppend(oe2)
   180  
   181  	ucs.Equal(exp.NewColumnListExpression(oe), c.Order())
   182  
   183  	ucs.Equal(exp.NewColumnListExpression(oe, oe2), c2.Order())
   184  }
   185  
   186  func (ucs *updateClausesSuite) TestOrderPrepend() {
   187  	oe := exp.NewIdentifierExpression("", "", "a").Desc()
   188  	oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
   189  
   190  	c := exp.NewUpdateClauses().SetOrder(oe)
   191  	c2 := c.OrderPrepend(oe2)
   192  
   193  	ucs.Equal(exp.NewColumnListExpression(oe), c.Order())
   194  
   195  	ucs.Equal(exp.NewColumnListExpression(oe2, oe), c2.Order())
   196  }
   197  
   198  func (ucs *updateClausesSuite) TestLimit() {
   199  	l := 1
   200  
   201  	c := exp.NewUpdateClauses()
   202  	c2 := c.SetLimit(l)
   203  
   204  	ucs.Nil(c.Limit())
   205  
   206  	ucs.Equal(l, c2.Limit())
   207  }
   208  
   209  func (ucs *updateClausesSuite) TestHasLimit() {
   210  	l := 1
   211  
   212  	c := exp.NewUpdateClauses()
   213  	c2 := c.SetLimit(l)
   214  
   215  	ucs.False(c.HasLimit())
   216  
   217  	ucs.True(c2.HasLimit())
   218  }
   219  
   220  func (ucs *updateClausesSuite) TestCLearLimit() {
   221  	l := 1
   222  
   223  	c := exp.NewUpdateClauses().SetLimit(l)
   224  	c2 := c.ClearLimit()
   225  
   226  	ucs.True(c.HasLimit())
   227  
   228  	ucs.False(c2.HasLimit())
   229  }
   230  
   231  func (ucs *updateClausesSuite) TestSetLimit() {
   232  	l := 1
   233  	l2 := 2
   234  
   235  	c := exp.NewUpdateClauses().SetLimit(l)
   236  	c2 := c.SetLimit(2)
   237  
   238  	ucs.Equal(l, c.Limit())
   239  
   240  	ucs.Equal(l2, c2.Limit())
   241  }
   242  
   243  func (ucs *updateClausesSuite) TestCommonTables() {
   244  	cte := exp.NewCommonTableExpression(true, "test", newTestAppendableExpression(`SELECT * FROM "foo"`, []interface{}{}))
   245  
   246  	c := exp.NewUpdateClauses()
   247  	c2 := c.CommonTablesAppend(cte)
   248  
   249  	ucs.Nil(c.CommonTables())
   250  
   251  	ucs.Equal([]exp.CommonTableExpression{cte}, c2.CommonTables())
   252  }
   253  
   254  func (ucs *updateClausesSuite) TestAddCommonTablesAppend() {
   255  	cte := exp.NewCommonTableExpression(true, "test", testSQLExpression("test_cte"))
   256  	cte2 := exp.NewCommonTableExpression(true, "test", testSQLExpression("test_cte2"))
   257  
   258  	c := exp.NewUpdateClauses().CommonTablesAppend(cte)
   259  	c2 := c.CommonTablesAppend(cte2)
   260  
   261  	ucs.Equal([]exp.CommonTableExpression{cte}, c.CommonTables())
   262  
   263  	ucs.Equal([]exp.CommonTableExpression{cte, cte2}, c2.CommonTables())
   264  }
   265  
   266  func (ucs *updateClausesSuite) TestReturning() {
   267  	cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
   268  
   269  	c := exp.NewUpdateClauses()
   270  	c2 := c.SetReturning(cl)
   271  
   272  	ucs.Nil(c.Returning())
   273  
   274  	ucs.Equal(cl, c2.Returning())
   275  }
   276  
   277  func (ucs *updateClausesSuite) TestHasReturning() {
   278  	cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
   279  
   280  	c := exp.NewUpdateClauses()
   281  	c2 := c.SetReturning(cl)
   282  
   283  	ucs.False(c.HasReturning())
   284  
   285  	ucs.True(c2.HasReturning())
   286  }
   287  
   288  func (ucs *updateClausesSuite) TestSetReturning() {
   289  	cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
   290  	cl2 := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col2"))
   291  
   292  	c := exp.NewUpdateClauses().SetReturning(cl)
   293  	c2 := c.SetReturning(cl2)
   294  
   295  	ucs.Equal(cl, c.Returning())
   296  
   297  	ucs.Equal(cl2, c2.Returning())
   298  }
   299  

View as plain text