gitlab.com/beacon-software/gadget@v0.0.0-20181217202115-54565ea1ed5e/database/qb/update_test.go (about)

     1  package qb
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"gitlab.com/beacon-software/gadget/generator"
     9  )
    10  
    11  func TestUpdateQuery(t *testing.T) {
    12  	assert := assert.New(t)
    13  	expectedName := generator.String(20)
    14  	query := Update(Person).Set(Person.Name, expectedName)
    15  	sql, values, err := query.SQL(0)
    16  	assert.NoError(err)
    17  	if assert.Equal(1, len(values)) {
    18  		assert.Equal(expectedName, values[0])
    19  	}
    20  	assert.Equal("UPDATE `person` SET  `person`.`name` = ?", sql)
    21  }
    22  
    23  func TestUpdateQueryParameterized(t *testing.T) {
    24  	assert := assert.New(t)
    25  	query := Update(Person).SetParam(Person.Name).Where(Person.ID.Equal(":" + Person.ID.GetName()))
    26  	sql, err := query.ParameterizedSQL(0)
    27  	assert.NoError(err)
    28  	assert.Equal("UPDATE `person` SET  `person`.`name` = :name WHERE `person`.`id` = :id", sql)
    29  }
    30  
    31  func TestUpdateQueryMulitpleFields(t *testing.T) {
    32  	assert := assert.New(t)
    33  	expectedName := generator.String(20)
    34  	expectedAddressID := generator.TestID()
    35  	query := Update(Person).Set(Person.Name, expectedName).Set(Person.AddressID, expectedAddressID)
    36  	sql, values, err := query.SQL(0)
    37  	assert.NoError(err)
    38  	if assert.Equal(2, len(values)) {
    39  		assert.Equal(expectedName, values[0])
    40  		assert.Equal(expectedAddressID, values[1])
    41  	}
    42  	assert.Equal("UPDATE `person` SET  `person`.`name` = ?, `person`.`address_id` = ?", sql)
    43  }
    44  
    45  func TestUpdateQueryWhere(t *testing.T) {
    46  	assert := assert.New(t)
    47  	expectedName := generator.String(20)
    48  	expectedAddressID := generator.TestID()
    49  	query := Update(Person).Set(Person.Name, expectedName).Where(Person.AddressID.Equal(expectedAddressID))
    50  	sql, values, err := query.SQL(0)
    51  	assert.NoError(err)
    52  	if assert.Equal(2, len(values)) {
    53  		assert.Equal(expectedName, values[0])
    54  		assert.Equal(expectedAddressID, values[1])
    55  	}
    56  	assert.Equal("UPDATE `person` SET  `person`.`name` = ? WHERE `person`.`address_id` = ?", sql)
    57  }
    58  
    59  func TestUpdateQueryOrderBy(t *testing.T) {
    60  	assert := assert.New(t)
    61  	expectedName := generator.String(20)
    62  	expectedAddressID := generator.TestID()
    63  	query := Update(Person).Set(Person.Name, expectedName)
    64  	query.Where(Person.AddressID.Equal(expectedAddressID))
    65  	query.OrderBy(Person.Name, Descending)
    66  	sql, values, err := query.SQL(0)
    67  	assert.NoError(err)
    68  	if assert.Equal(2, len(values)) {
    69  		assert.Equal(expectedName, values[0])
    70  		assert.Equal(expectedAddressID, values[1])
    71  	}
    72  	assert.Equal("UPDATE `person` SET  `person`.`name` = ? WHERE `person`.`address_id` = ? ORDER BY `name` DESC", sql)
    73  }
    74  
    75  func TestUpdateQueryWhereOrderByLimit(t *testing.T) {
    76  	assert := assert.New(t)
    77  	expectedName := generator.String(20)
    78  	expectedAddressID := generator.TestID()
    79  	query := Update(Person).Set(Person.Name, expectedName)
    80  	query.Where(Person.AddressID.Equal(expectedAddressID))
    81  	query.OrderBy(Person.Name, Descending)
    82  	sql, values, err := query.SQL(10)
    83  	assert.NoError(err)
    84  	if assert.Equal(2, len(values)) {
    85  		assert.Equal(expectedName, values[0])
    86  		assert.Equal(expectedAddressID, values[1])
    87  	}
    88  	assert.Equal("UPDATE `person` SET  `person`.`name` = ? WHERE `person`.`address_id` = ? ORDER BY `name` DESC LIMIT 10", sql)
    89  }